OpenPGP_Crypt_Symmetric::decryptSymmetric PHP Method

decryptSymmetric() public static method

public static decryptSymmetric ( $pass, $m )
    public static function decryptSymmetric($pass, $m)
    {
        $epacket = self::getEncryptedData($m);
        foreach ($m as $p) {
            if ($p instanceof OpenPGP_SymmetricSessionKeyPacket) {
                if (strlen($p->encrypted_data) > 0) {
                    list($cipher, $key_bytes, $key_block_bytes) = self::getCipher($p->symmetric_algorithm);
                    if (!$cipher) {
                        continue;
                    }
                    $cipher->setKey($p->s2k->make_key($pass, $key_bytes));
                    $padAmount = $key_block_bytes - strlen($p->encrypted_data) % $key_block_bytes;
                    $data = substr($cipher->decrypt($p->encrypted_data . str_repeat("", $padAmount)), 0, strlen($p->encrypted_data));
                    $decrypted = self::decryptPacket($epacket, ord($data[0]), substr($data, 1));
                } else {
                    list($cipher, $key_bytes, $key_block_bytes) = self::getCipher($p->symmetric_algorithm);
                    $decrypted = self::decryptPacket($epacket, $p->symmetric_algorithm, $p->s2k->make_key($pass, $key_bytes));
                }
                if ($decrypted) {
                    return $decrypted;
                }
            }
        }
        return NULL;
        /* If we get here, we failed */
    }

Usage Example

Example #1
0
 public function testEncryptSymmetric()
 {
     $data = new OpenPGP_LiteralDataPacket('This is text.', array('format' => 'u', 'filename' => 'stuff.txt'));
     $encrypted = OpenPGP_Crypt_Symmetric::encrypt('secret', new OpenPGP_Message(array($data)));
     $decrypted = OpenPGP_Crypt_Symmetric::decryptSymmetric('secret', $encrypted);
     $this->assertEquals($decrypted[0]->data, 'This is text.');
 }
All Usage Examples Of OpenPGP_Crypt_Symmetric::decryptSymmetric