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:----bUEmRZb77v6a0PZwvfgqu+lfdkOuN5vp9f28SjIRBrOObWT9dUBuVKp/sU94Yitj09fW4UG++9l2LDib0qe8MC1FaG7D/P6K5jptn0gvHH7Qk/xlRd8czZqT61tvitx3uR1TFtjZcqDf+xKdcl43FV30S47d3bXhi8McdEleGfNPXqtzCs5CenMBUxDi0yDItV9SoolweSo8TonIq2W2kkVTeESjqxIy2Z7hXuttZeMVHtNXZUAGWFWN3kEHxFbgF3mVGmHXGtwTYfWw6mkRARccSCCa5+4VmELt7gJkcbPc0Ks8MQQkfqH+Qn3lM8sTCHFJIG4z+jgp1a6e/CJUK6zF19xwEWLfo3vzsMO3Xg0GtA0OdVFVKgD5b6SelMfRB4Eo5xYxkA+VFe75GqHUa7I+G140dTmXDapocNfc84Su/Of7OCWepVON3CBY3rMb8kbnqfxhfpHrGqwgugKlBTxeAc4X3ft7yhs9NFmTDgf0wPuMGR0cYEkBK0goEOCOCw6K0HUfFObMMu61/2hNOUzSo4DfBEhQ+Yn+YMSg7nnbp/bEEtKxBMmAG6RceZxv3UtG1GQ3e5TxCzH+ECgZp9Mbwpdk3ukIU/Wbc/fZwqfQ2flVFFXlVet7j/q3xglxYgOPcwSj9SRRmLfrfJv0voYnbUaNvDAArARYlhLYBJc=----ATTACHMENT:----NjgzODMzODM5NTYwNDc1OSA2MDA5NzcxNzEzNTcyOTE0IDM1Mjg1MjAzMTYxNTg4NzI=