From 0262b038f143a840833e78f79005a823144a0ea6 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Sat, 28 Jun 2014 12:27:25 -0500 Subject: [PATCH] Fix sign_key_userid --- lib/openpgp_crypt_rsa.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/openpgp_crypt_rsa.php b/lib/openpgp_crypt_rsa.php index dc955cd..db6c16f 100644 --- a/lib/openpgp_crypt_rsa.php +++ b/lib/openpgp_crypt_rsa.php @@ -131,7 +131,8 @@ class OpenPGP_Crypt_RSA { return new OpenPGP_Message(array($sig, $message)); } - // Pass a message with a key and userid packet to sign + /** Pass a message with a key and userid packet to sign */ + // TODO: merge this with the normal sign function function sign_key_userid($packet, $hash='SHA256', $keyid=NULL) { if(is_array($packet)) { $packet = new OpenPGP_Message($packet); @@ -145,8 +146,10 @@ class OpenPGP_Crypt_RSA { if(!$keyid) $keyid = substr($this->key->fingerprint, -16); $key->setHash(strtolower($hash)); - $sig = $packet->signature_and_data(); - $sig = $sig[1]; + $sig = NULL; + foreach($packet as $p) { + if($p instanceof OpenPGP_SignaturePacket) $sig = $p; + } if(!$sig) { $sig = new OpenPGP_SignaturePacket($packet, 'RSA', strtoupper($hash)); $sig->signature_type = 0x13; @@ -155,7 +158,7 @@ class OpenPGP_Crypt_RSA { $packet[] = $sig; } - $sig->sign_data(array('RSA' => array($hash => array($key, 'sign')))); + $sig->sign_data(array('RSA' => array($hash => function($data) use($key) {return array($key->sign($data));}))); return $packet; }