GnuPG + PHP
Sziasztok
PHP-ban szeretnék egy aláírást készíteni, azt beletenni egy xml fileba (azaz valamelyik elementbe) és ezt elküldeni egy webcímre. Az aláírás készítés azonban a PHP GnuPG extensionnel sehogysem sikerül. Azaz az aláírás elkészül, de nem jó.
Tesztként van egy perl script is, ami szintén futás közben állítja elô az aláírást a GnuPG modul sign parancsával:Ez a perl szépen lefut és az aláírás hiteles, mert a távoli szerver fogadja.
A php-ban készült aláírást viszont elutasítja a távoli gép. Azért gondolom, hogy a php-ben az aláíráskészítéssel van a gond, mert ha a perl script által készített aláírást teszem be az xml-be és azt küldöm el a php-ból, akkor minden ok.
A kulcskészítés a php scriptben:Olyan érzésem van, mintha nem azt a kulcsot használná az aláíráskészítéshez amit kellene. Az addsignkey függvény vajon a publikus vagy a titkos kulcsot használja az aláírás készítéséhez?
Mi lehet a hiba?
Köszönöm
■ PHP-ban szeretnék egy aláírást készíteni, azt beletenni egy xml fileba (azaz valamelyik elementbe) és ezt elküldeni egy webcímre. Az aláírás készítés azonban a PHP GnuPG extensionnel sehogysem sikerül. Azaz az aláírás elkészül, de nem jó.
Tesztként van egy perl script is, ami szintén futás közben állítja elô az aláírást a GnuPG modul sign parancsával:
$gpg->sign(armor => 1,plaintext => "/tmp/".$$.".txt",output =>"/tmp".$$.".out",passphrase=>$gpgpass,'detach-sign'=>1,);
A php-ban készült aláírást viszont elutasítja a távoli gép. Azért gondolom, hogy a php-ben az aláíráskészítéssel van a gond, mert ha a perl script által készített aláírást teszem be az xml-be és azt küldöm el a php-ból, akkor minden ok.
A kulcskészítés a php scriptben:
$res = gnupg_init();
$info = gnupg_keyinfo($res, '######');
$fingerprint = $info[0]['subkeys'][0]['fingerprint'];
print_r($info);
gnupg_addsignkey($res,$fingerprint);
gnupg_setarmor($res,1);
gnupg_setsignmode($res,GNUPG_SIG_MODE_DETACH);
$signed = gnupg_sign($res,$xmldata);
$xmltotal = str_replace("<SIGNATURE>","<SIGNATURE>$signed",$xmldata);
Mi lehet a hiba?
Köszönöm
CLI
Azt tudni kell, ha ezt webszerver alól futtatod, akkor a webszerver usernevével fog futni (www-data, apache, stb) és annak home könyvtárában keresi az aláíró kulcsot. Ha a Perl programot nem az adott userrel futtatod, akkor ez lehet a különbség a kettő között.
Egyébként tudom, milyen API-ra írsz klienst, én is írtam rá, a nevét ne említsd meg itt, mert a cégednek / munkáltatódnak titoktartási kötelezettsége van rá.
Jó lenne az exec csak
És nem is lenne célszerû visszakapcsolni, mert tárhelyszerverrôl van szó.
Mindkét script azonos user alól fut.
Tárhely?
Tudatlanságom okozta a gondot
Másolható