OpenPGP_Crypt_RSA::sign PHP Method

sign() public method

.. defaults to the key id in the key packet
public sign ( $packet, $hash = 'SHA256', $keyid = NULL )
    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) {
            $sign = $message->signatures();
            $message = $sign[0][0];
        }
        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 => function ($data) use($key) {
            return array($key->sign($data));
        })));
        return new OpenPGP_Message(array($sig, $message));
    }

Usage Example

Example #1
0
 public function testSigningMessages()
 {
     $wkey = OpenPGP_Message::parse(file_get_contents(dirname(__FILE__) . '/data/helloKey.gpg'));
     $data = new OpenPGP_LiteralDataPacket('This is text.', array('format' => 'u', 'filename' => 'stuff.txt'));
     $sign = new OpenPGP_Crypt_RSA($wkey);
     $m = $sign->sign($data)->to_bytes();
     $reparsedM = OpenPGP_Message::parse($m);
     $this->assertSame($sign->verify($reparsedM), $reparsedM->signatures());
 }
All Usage Examples Of OpenPGP_Crypt_RSA::sign