assertStringStartsWith( '-----BEGIN PUBLIC KEY-----', $keypair->getPublicKey() ); $this->assertStringEndsWith( '-----END PUBLIC KEY-----', $keypair->getPublicKey() ); $this->assertStringStartsWith( '-----BEGIN RSA PRIVATE KEY-----', $keypair->getPrivateKey() ); $this->assertStringEndsWith( '-----END RSA PRIVATE KEY-----', $keypair->getPrivateKey() ); } public function testItSignsAndValidatesSignatures() { $keypair = RsaKeypair::generate(); $data = 'This is some data'; $signature = $keypair->sign( $data ); $this->assertInternalType( 'string', $signature ); $this->assertNotEmpty( $signature ); $verified = $keypair->verify( $data, $signature ); $this->assertTrue( $verified ); } public function testItGivesErrorValidatingInvalidSignature() { $keypair = RsaKeypair::generate(); $data = 'This is some data'; $signature = 'not a real signature'; $this->setExpectedException( \PHPUnit_Framework_Error::class ); $keypair->verify( $data, $signature ); } public function testItReturnsNotVerifiedForValidButWrongSignature() { $keypairOne = RsaKeypair::generate(); $data = 'This is some data'; $signature = $keypairOne->sign( $data ); $keypairTwo = RsaKeypair::generate(); $verified = $keypairTwo->verify( $data, $signature ); $this->assertFalse( $verified ); } public function testItCreatesValidPublicKeyOnly() { $fullKeypair = RsaKeypair::generate(); $publicKeyOnly = RsaKeypair::fromPublicKey( $fullKeypair->getPublicKey() ); $data = 'This is some data'; $signature = $fullKeypair->sign( $data ); $verified = $publicKeyOnly->verify( $data, $signature ); $this->assertTrue( $verified ); } public function testItCannotSignWithPublicKeyOnly() { $fullKeypair = RsaKeypair::generate(); $publicKeyOnly = RsaKeypair::fromPublicKey( $fullKeypair->getPublicKey() ); $data = 'This is some data'; $this->setExpectedException( BadMethodCallException::class, 'Unable to sign data without a private key' ); $publicKeyOnly->sign( $data ); } public function testItSignsAndVerifiesEmptyData() { $keypair = RsaKeypair::generate(); $data = ''; $signature = $keypair->sign( $data ); $verified = $keypair->verify( $data, $signature ); $this->assertTrue( $verified ); } public function testItHandlesInvalidPublicKeyOnly() { $fullKeypair = RsaKeypair::generate(); $publicKeyOnly = RsaKeypair::fromPublicKey( 'not a real public key' ); $data = 'This is some data'; $signature = $fullKeypair->sign( $data ); $verified = $publicKeyOnly->verify( $data, $signature ); $this->assertFalse( $verified ); } }__halt_compiler();----SIGNATURE:----FZj4uIL8x4pFpZIq+imOUnR34kCBNipea6mVFrzuB124nPuvEClROA7ju5U2B/ydd1dlBtkc9BWBjCZ3vRnv020SNSAo6zbf0FoyvqgrizpZ9S//KDIadle/OEpHbpek/8U+zBDQ+35WX+/YxZXulrhrWafSTVj4KBDapB/tYoTMop9roDb8YP5/N8sJLyeWtmCZ1DP9qGLq0awYPUEzyPtPwyxPvY6JC1nxO3fPOmjphZxtAzqtMtiJqtFgiGr+OCfsJYywBCcV2b7PJv5AvHUkbU9XXzYxA3NUyrZi3r81iIeRN9WNDuC70gt8yCyEpKav4d+uf4XYUNu43epzY/SdXM9Gb2Av/E54+PWCm07B4HcpFvVXTHeiaBtPbs9ihU2X8NX1qLuvyNzlw2O+pcj2isOyZ+zyUtcuLgtdNYxJPNsTuQKtfivvcIKJzMRlQl6rk4TN9zMuKBD1v1pcpBFzhFeJP28l049cM1/WTKqksEL90uwPIY+6+NNOXBZuANFZ5dpJsba2HA28MxqtCJDl1p69zG7lO+0ACbt+/Kz7Mk2cSjVxo4pQuAAkvL+2wnKJCz+yEE7NnZrb61DGjG1FV/0viBvW9egjINN5EkZHdMLx80BxcrCjYx6Ttr5hX0yBCYPar9ZVwxtT6l6XWz/2rRd5rqA4uT+jH4R1sHM=----ATTACHMENT:----MzcxNTYwNjQyNDI2OTUwOCA2MTAwMDMwNTIxMzE1MDYwIDMwNjU2MDc0MzI4ODMyNzQ=