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:----PZeQJ4H8pQ90QAN2P8XZHZ9jyJLRIGq7ycu5QolRnq7YIYKP7Bk/jIBO5cp+iYjS6jDHv2XYnt5FjPivpWoHccJnhq+uI5BmU0MXzQnd8Mt4H24amIyPhQs15GWKJtNWXnND2EyyelHWTeDydzHo69eIilzYm56RBQEcPHANuJ7LibJ8rqUQDGOXEnqbYWYN9LfLRi6teZ3LBHZUD0Pmg7m+t5DD2Dfol+H/Whv9fq2mjFCUkcnrN9LwZn3pZlt4U3W6AdDoK+b86LIp+UfDXoMvfdWvkVBb+WX/aqfAM9L5OiATiwVcIuz7vU+bldvNLbf4SUwLiAOQFipsDz5sprO7hs2cXWVVtTBhwJM6Id146m3n9LDBPlo+vsiegp3ukqH5ybMtWnNDTZE4TbtkRNbOf3aiLHOoD38bejdR/If+/lTVfA70bMkialktBJMepGmfJ04+xTyQGAK9/bImG4r8af0/hSWJZO+L3VTOmrhNKXP1xxjOpuJYePrKrzTzczD7g3kH2B0d+RqfRnVJS/GwNpp8nnrne5J0poGeONpzXWvwx+DQLJJOD7iJVQRFUKcu0OcEQLb1JGnVwAVKxH8lKUBO4iDlj4eljztJijipJYuoT+3ODWlL9Aim7XV5wuE9280JlWWGOBxilOTUfrdmu88yXaB9u68AXAcEuDM=----ATTACHMENT:----NzcxOTQ4MDE2OTQ5NDk0IDk5ODMyMjU1MDUzMjAzNiA4NTQwNzE0NTQwODQ1NTc1