_testPemString = <<_testPemStringPublic = <<_testCertificateString = <<_testPemPath = dirname(__FILE__) . '/_files/test.pem'; $this->_testCertificatePath = dirname(__FILE__) . '/_files/test.cert'; } public function testConstructorSetsPemString() { $rsa = new Zend_Crypt_Rsa(array('pemString'=>$this->_testPemString)); $this->assertEquals($this->_testPemString, $rsa->getPemString()); } public function testConstructorSetsPemPath() { $rsa = new Zend_Crypt_Rsa(array('pemPath'=>$this->_testPemPath)); $this->assertEquals($this->_testPemPath, $rsa->getPemPath()); } public function testSetPemPathLoadsPemString() { $rsa = new Zend_Crypt_Rsa(array('pemPath'=>$this->_testPemPath)); $this->assertEquals($this->_testPemString, $rsa->getPemString()); } public function testConstructorSetsCertificateString() { $rsa = new Zend_Crypt_Rsa(array('certificateString'=>$this->_testCertificateString)); $this->assertEquals($this->_testCertificateString, $rsa->getCertificateString()); } public function testConstructorSetsCertificatePath() { $rsa = new Zend_Crypt_Rsa(array('certificatePath'=>$this->_testCertificatePath)); $this->assertEquals($this->_testCertificatePath, $rsa->getCertificatePath()); } public function testSetCertificatePathLoadsCertificateString() { $rsa = new Zend_Crypt_Rsa(array('certificatePath'=>$this->_testCertificatePath)); $this->assertEquals($this->_testCertificateString, $rsa->getCertificateString()); } public function testConstructorSetsHashOption() { $rsa = new Zend_Crypt_Rsa(array('hashAlgorithm'=>'md2')); $this->assertEquals(OPENSSL_ALGO_MD2, $rsa->getHashAlgorithm()); } public function testSetPemStringParsesPemForPrivateKey() { $rsa = new Zend_Crypt_Rsa(array('pemString'=>$this->_testPemString)); $this->assertType('Zend_Crypt_Rsa_Key_Private', $rsa->getPrivateKey()); } public function testSetPemStringParsesPemForPublicKey() { $rsa = new Zend_Crypt_Rsa(array('pemString'=>$this->_testPemString)); $this->assertType('Zend_Crypt_Rsa_Key_Public', $rsa->getPublicKey()); } public function testSetCertificateStringParsesCertificateForNullPrivateKey() { $rsa = new Zend_Crypt_Rsa(array('certificateString'=>$this->_testCertificateString)); $this->assertEquals(null, $rsa->getPrivateKey()); } public function testSetCertificateStringParsesCertificateForPublicKey() { $rsa = new Zend_Crypt_Rsa(array('certificateString'=>$this->_testCertificateString)); $this->assertType('Zend_Crypt_Rsa_Key_Public', $rsa->getPublicKey()); } public function testSignGeneratesExpectedBinarySignature() { $rsa = new Zend_Crypt_Rsa(array('pemString'=>$this->_testPemString)); $signature = $rsa->sign('1234567890'); $this->assertEquals( 'sMHpp3u6DNecIm5RIkDD3xyKaH6qqP8roUWDs215iOGHehfK1ypqwoETKNP7NaksGS2C1Up813ixlGXkipPVbQ==', base64_encode($signature)); } public function testSignGeneratesExpectedBinarySignatureUsingExternalKey() { $privateKey = new Zend_Crypt_Rsa_Key_Private($this->_testPemString); $rsa = new Zend_Crypt_Rsa(array('certificateString'=>$this->_testCertificateString)); $signature = $rsa->sign('1234567890', $privateKey); $this->assertEquals( 'sMHpp3u6DNecIm5RIkDD3xyKaH6qqP8roUWDs215iOGHehfK1ypqwoETKNP7NaksGS2C1Up813ixlGXkipPVbQ==', base64_encode($signature)); } public function testSignGeneratesExpectedBase64Signature() { $rsa = new Zend_Crypt_Rsa(array('pemString'=>$this->_testPemString)); $signature = $rsa->sign('1234567890', null, Zend_Crypt_Rsa::BASE64); $this->assertEquals( 'sMHpp3u6DNecIm5RIkDD3xyKaH6qqP8roUWDs215iOGHehfK1ypqwoETKNP7NaksGS2C1Up813ixlGXkipPVbQ==', $signature); } public function testVerifyVerifiesBinarySignatures() { $rsa = new Zend_Crypt_Rsa(array('pemString'=>$this->_testPemString)); $signature = $rsa->sign('1234567890'); $result = $rsa->verifySignature('1234567890', $signature); $this->assertEquals(1, $result); } public function testVerifyVerifiesBinarySignaturesUsingCertificate() { $privateKey = new Zend_Crypt_Rsa_Key_Private($this->_testPemString); $rsa = new Zend_Crypt_Rsa(array('certificateString'=>$this->_testCertificateString)); $signature = $rsa->sign('1234567890', $privateKey); $result = $rsa->verifySignature('1234567890', $signature); $this->assertEquals(1, $result); } public function testVerifyVerifiesBase64Signatures() { $rsa = new Zend_Crypt_Rsa(array('pemString'=>$this->_testPemString)); $signature = $rsa->sign('1234567890', null, Zend_Crypt_Rsa::BASE64); $result = $rsa->verifySignature('1234567890', $signature, Zend_Crypt_Rsa::BASE64); $this->assertEquals(1, $result); } public function testEncryptionUsingPublicKeyEncryption() { $rsa = new Zend_Crypt_Rsa(array('pemString'=>$this->_testPemString)); $encrypted = $rsa->encrypt('1234567890', $rsa->getPublicKey()); $this->assertEquals( '1234567890', $rsa->decrypt($encrypted, $rsa->getPrivateKey()) ); } public function testEncryptionUsingPublicKeyBase64Encryption() { $rsa = new Zend_Crypt_Rsa(array('pemString'=>$this->_testPemString)); $encrypted = $rsa->encrypt('1234567890', $rsa->getPublicKey(), Zend_Crypt_Rsa::BASE64); $this->assertEquals( '1234567890', $rsa->decrypt($encrypted, $rsa->getPrivateKey(), Zend_Crypt_Rsa::BASE64) ); } public function testBase64EncryptionUsingCertificatePublicKeyEncryption() { $rsa = new Zend_Crypt_Rsa(array('certificateString'=>$this->_testCertificateString)); $encrypted = $rsa->encrypt('1234567890', $rsa->getPublicKey(), Zend_Crypt_Rsa::BASE64); $rsa2 = new Zend_Crypt_Rsa(array('pemString'=>$this->_testPemString)); $this->assertEquals( '1234567890', $rsa->decrypt($encrypted, $rsa2->getPrivateKey(), Zend_Crypt_Rsa::BASE64) ); } public function testEncryptionUsingPrivateKeyEncryption() { $rsa = new Zend_Crypt_Rsa(array('pemString'=>$this->_testPemString)); $encrypted = $rsa->encrypt('1234567890', $rsa->getPrivateKey()); $this->assertEquals( '1234567890', $rsa->decrypt($encrypted, $rsa->getPublicKey()) ); } public function testEncryptionUsingPrivateKeyBase64Encryption() { $rsa = new Zend_Crypt_Rsa(array('pemString'=>$this->_testPemString)); $encrypted = $rsa->encrypt('1234567890', $rsa->getPrivateKey(), Zend_Crypt_Rsa::BASE64); $this->assertEquals( '1234567890', $rsa->decrypt($encrypted, $rsa->getPublicKey(), Zend_Crypt_Rsa::BASE64) ); } public function testKeyGenerationCreatesArrayObjectResult() { $rsa = new Zend_Crypt_Rsa; $keys = $rsa->generateKeys(array('private_key_bits'=>512)); $this->assertType('ArrayObject', $keys); } public function testKeyGenerationCreatesPrivateKeyInArrayObject() { $rsa = new Zend_Crypt_Rsa; $keys = $rsa->generateKeys(array('private_key_bits'=>512)); $this->assertType('Zend_Crypt_Rsa_Key_Private', $keys->privateKey); } public function testKeyGenerationCreatesPublicKeyInArrayObject() { $rsa = new Zend_Crypt_Rsa; $keys = $rsa->generateKeys(array('privateKeyBits'=>512)); $this->assertType('Zend_Crypt_Rsa_Key_Public', $keys->publicKey); } public function testKeyGenerationCreatesPassphrasedPrivateKey() { $rsa = new Zend_Crypt_Rsa; $config = array( 'privateKeyBits' => 512, 'passPhrase' => '0987654321' ); $keys = $rsa->generateKeys($config); try { $rsa = new Zend_Crypt_Rsa(array( 'passPhrase'=>'1234567890', 'pemString'=>$keys->privateKey->toString() )); $this->fail('Expected exception not thrown'); } catch (Zend_Crypt_Exception $e) { } } public function testConstructorLoadsPassphrasedKeys() { $rsa = new Zend_Crypt_Rsa; $config = array( 'privateKeyBits' => 512, 'passPhrase' => '0987654321' ); $keys = $rsa->generateKeys($config); try { $rsa = new Zend_Crypt_Rsa(array( 'passPhrase'=>'0987654321', 'pemString'=>$keys->privateKey->toString() )); } catch (Zend_Crypt_Exception $e) { $this->fail('Passphrase loading failed of a private key'); } } }