OpenPGP_SignaturePacket::sign_data PHP Method

sign_data() public method

$this->data must be set to the data to sign (done by constructor) $signers in the same format as $verifiers for OpenPGP_Message.
public sign_data ( $signers )
    function sign_data($signers)
    {
        $this->trailer = $this->calculate_trailer();
        $signer = $signers[$this->key_algorithm_name()][$this->hash_algorithm_name()];
        $this->data = call_user_func($signer, $this->data . $this->trailer);
        $unpacked = unpack('n', substr(implode('', $this->data), 0, 2));
        $this->hash_head = reset($unpacked);
    }

Usage Example

Exemplo n.º 1
0
 function sign($packet, $hash = 'SHA256', $keyid = NULL)
 {
     if (!is_object($packet)) {
         if ($this->key) {
             $packet = new OpenPGP_LiteralDataPacket($packet);
         } else {
             $packet = OpenPGP_Message::parse($packet);
         }
     }
     if ($packet instanceof OpenPGP_SecretKeyPacket || $packet instanceof Crypt_RSA || $packet instanceof ArrayAccess && $packet[0] instanceof OpenPGP_SecretKeyPacket) {
         $key = $packet;
         $message = $this->message;
     } else {
         $key = $this->key;
         $message = $packet;
     }
     if (!$key || !$message) {
         return NULL;
     }
     // Missing some data
     if ($message instanceof OpenPGP_Message) {
         list($dummy, $message) = $message->signature_and_data();
     }
     if (!$key instanceof Crypt_RSA) {
         $key = new self($key);
         if (!$keyid) {
             $keyid = substr($key->key()->fingerprint, -16, 16);
         }
         $key = $key->private_key($keyid);
     }
     $key->setHash(strtolower($hash));
     $sig = new OpenPGP_SignaturePacket($message, 'RSA', strtoupper($hash));
     $sig->hashed_subpackets[] = new OpenPGP_SignaturePacket_IssuerPacket($keyid);
     $sig->sign_data(array('RSA' => array($hash => array($key, 'sign'))));
     return new OpenPGP_Message(array($sig, $message));
 }
All Usage Examples Of OpenPGP_SignaturePacket::sign_data