If verification fails, the gnupg_verify() returns the key's id instead of fingerprint . It does not return FALSE as stated above (PHP4, have not tested PHP5). You can compare it with result of keyinfo:
<?php
$resultOfVerify = gnupg_verify($gpgresource, $message,FALSE,$key);
echo "<pre>\$resultOfVerify",print_r($resultOfVerify),"</pre>";
//Above will out put something like
?>
$resultOfVerify Array
(
[0] => Array
(
[fingerprint] => xxxxxxxxx (IF MESSAGE IS VERIFIED, THEN THIS MATCHES THE KEY FINGERPRINT OF THE KEY, IF UNVERIFIED, MATCHES THE KEY ID
[validity] => 0
[timestamp] => 0
[status] => NNNNNN
[summary] => 4
)
)
<?php
$keyinfo = gnupg_keyinfo($gpgresource,$key);
echo "<pre>\$keyinfo ",print_r($keyinfo),"</pre>";
//Above will out put something like
?>
$keyinfo Array
(
[0] => Array
(
[disabled] =>
[expired] =>
[revoked] =>
[is_secret] =>
[can_sign] => 1
[can_encrypt] => 1
[uids] => Array
(
[0] => Array
(
[name] => WHATEVER
[comment] =>
[email] =>
[uid] => WHATEVER
[revoked] =>
[invalid] =>
)
)
[subkeys] => Array
(
[0] => Array
(
[fingerprint] => xxxxxxxxxxxxxxxxxx
[keyid] => xxxxxxxxx
[timestamp] => xxxxxxxxx
[expires] => 0
[is_secret] =>
[invalid] =>
[can_encrypt] => 1
[can_sign] => 1
[disabled] =>
[expired] =>
[revoked] =>
)
)
)
<?php
//To test if a message/signature pair is verified
if($resultOfVerify[0]['fingerprint'] == $keyinfo[0]['subkeys'][0]['fingerprint']){
//Ok, verified
}else{
//Oops, NOT verified
}
?>
gnupg_verify
(PECL gnupg >= 0.1)
gnupg_verify — Vérifie un texte signé
Description
Vérifie le paramètre signed_text et retourne les informations à propos de la signature.
Liste de paramètres
- identifier
-
L'identifiant gnupg, généré par un appel à la fonction gnupg_init() ou à la fonction gnupg.
- signed_text
-
Le texte signé.
- signature
-
La signature. Pour vérifier un texte signé en clair, fixez la signature à FALSE.
- plaintext
-
Le texte. Si ce paramètre optionnel est passé, il est rempli avec le plaintext .
Valeurs de retour
En cas de succès, cette fonction retourne des informations à propos de la signature. En cas d'échec, cette fonction retourne FALSE.
Exemples
Exemple #1 Exemple avec gnupg_verify() (Style procédural)
<?php
$plaintext = "";
$res = gnupg_init();
// signé en clair
$info = gnupg_verify($res,$signed_text,false,$plaintext);
print_r($info);
// signature détachée
$info = gnupg_verify($res,$signed_text,$signature);
print_r($info);
?>
Exemple #2 Exemple avec gnupg_verify() (Style orienté objet)
<?php
$plaintext = "";
$gpg = new gnupg();
// signé en clair
$info = $gpg -> verify($signed_text,false,$plaintext);
print_r($info);
// signature détachée
$info = $gpg -> verify($signed_text,$signature);
print_r($info);
?>
gnupg_verify
26-Feb-2009 02:48
19-Sep-2008 01:27
You can see who made the signature by checking its fingerprint:
<?php
$res = gnupg_init();
$info = gnupg_verify($res,$signed_text,$signature);
if($info !== false){
$fingerprint = $info['fingerprint'];
var_dump(gnupg_keyinfo($res, $fingerprint));
}
