PHP mit PGP

Bash, Shell, PHP, Python, Perl, CGI
kolweb
Posts: 33
Joined: 2003-02-28 19:50

PHP mit PGP

Post by kolweb » 2006-03-19 12:52

Hallo,

ich hoffe, dass ich in diesem teil des Forums richtig bin. Falls nicht bitte in das richtige verschieben.

Danke!

-------------------------------------------------------

Ich habe ein Problem mit dem Signieren von Mails mittels GnuPG und PHP. Ich nutze folgenden Code zum Signieren:
//Set the username to the user on the server
$username = "webX";
$pgp="/usr/bin/gpg";
// User that is sending the e-mail (In the from address etc..)
$user="Mein Name meine@mail-adresse.tld";
//This is the key that was uploaded, i.e. the recipent of the PGP message
$recp="Mein Name meine@mail-adresse.tld>";
$data="Text that will be encrypted";

$command = 'echo "'.$data.'" | '.$pgp.' -a --always-trust --batch --no-secmem-warning -e -u "'.$user.'" -r "'.$recp.'"';
$oldhome = getEnv("HOME");
putenv("HOME=/home/$username");
$result = exec($command, $encrypted, $errorcode);
putenv("HOME=$oldhome");
$message = implode("n", $encrypted);
if(ereg("-----BEGIN PGP MESSAGE-----.*-----END PGP MESSAGE-----",$message))
{
echo "It Worked";
}else
{
echo "It failed";
}
$subject="Test message";
$header="From: $user";
echo "Message<br>";
echo nl2br($message);
mail($recp,$subject,$message,$header);
Das Signieren klappt soweit zwar, nur wird jetzt der komplette Text mit verschlüsselt. Das nützt leider nichts. Ich benötige eine Ausgabe ala:
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.2 (GNU/Linux)

Hier
der
Text
der
Email

F8j5ouWzohu245T+ET2PGE11YZzyhl3SfVmYHoGAtC3sMeAcsg gSyMbisVFv8ZKI
h0Fg6mBGcZqSVcgYNAgXjADr0Ab3cFpfzdnGPgNqvnm0VsilsV /9hmLe3codbx69
v50rXkXfDh9WvlRObn7/eW0/d2zd/dN8t/Xq99MHn74WPt6pHtSObv0F
=Oa0/
-----END PGP MESSAGE-----
Kann mir jemand von euch weiter helfen und sagen, wie ich es löse, dass es richtig funktioniert?

Ich hoffe auf euch.

Danke

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: PHP mit PGP

Post by daemotron » 2006-03-19 14:40

Wenn Du nur signieren willst, müsste die Mail etwa so aussehen:

Code: Select all

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

<Text der E-Mail>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)
Comment: [...was auch immer...]

y7brc8fxhK4+rsQXMEoIt7oe45m3CTZSXDCxzF7HPT0dw6aoVIDEq5oQgLqabMh3
bwOUIoHCmoYLOOH6JTdLw60EpwpzLoLcv1Aw4Ty3Z6WSOmvvR2vtn7CIPw/Kd15S
[...]
-----END PGP SIGNATURE-----
Das was Du beschreibst, sieht eher aus wie eine verschlüsselte Mail:

Code: Select all

-----BEGIN PGP MESSAGE-----
Charset: ISO-8859-1
Version: GnuPG v1.2.5 (GNU/Linux)
Comment: [...was auch immer...]

NhzSI1bQLUMfY00xf+p/ceeo8x/SDlwYhk06FO8eeJAce0CXFmcOkZrOv/HTA3CT
M91F67mPS3dM1ie6+/niPOD7VtxhZECT/XFx3MQsRwJdlQxnOTm4gLIiQjLfa28G
lJ+TuicBW+Qli6j750fasfemFazatzrb8vhSouint2sHB9Abwh79RVW5JYzcuEgP
/0g8UnHblynTXeElOnRW5z+o4iYPqMJzcUBwmF8uwFgDGDtu+55gZp3OQknydxJO
[...]
-----END PGP MESSAGE-----
Ich würde bei Deinem Code also hier ansetzen:

Code: Select all

$command = 'echo "'.$data.'" | '.$pgp.' -a --always-trust --batch --no-secmem-warning -e -u "'.$user.'" -r "'.$recp.'"'; 
[...]
if(ereg("-----BEGIN PGP MESSAGE-----.*-----END PGP MESSAGE-----",$message)) 
Cu
Jesco