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:----ctY1dJ52USpFnTGIFv4k3uYe4ZCQPfjANkbqDXZDYeaLN0+Xf1SeL79Dt5lnP8s0eX24T4sBI+O0b5KgZYdvaFqwAyn/5pxq4sMb0xjsDJiR7z/UqRhBTc2mVDWgQdhLfPyILOOnkwZB2O4eb4AqcyFGom2rQvvlWD1SCNrJkzeGFBf/emFuUi4EC0RjNfcLtI+dd1SwUif+opwkiHEtOMhvTbob8Ig6d5tC79rU1b026e4uQfG+5SDBqFWDE5rQVuEmZEEDzJ8ecFUQPfBseyqlDFDlCanN3x1/sSTBR7aevWEC8AvCmZ3BHnRVEH96j6/C5KRyTOshhqvK0Nr7FqSI6Mrbpscs++DxbUbKGp15KXEYzxD8oG+ybPmvbooSNFfMRbrtwrjg90Sskiq6VdoQFG3FQciCyDzGQHobGgUIN2Rq5uTdQr6fvFcnCYK1k/HRGaKpDkhhFRII3BSuV5zhV/aePJaevz+sk03HilsblSBRVLyXZuzTiT+1l55ry+r2BkaaW2H09/3BlCRTHs9DymxqoVW9/Efkrd6BJbD6bmDBLFnccPy1D4IPxN0KI116guhIicLaSmB8fzpztTT7e92Clu+FPdrlLu5UHq/Fz8s5/0ve6hao/pAzQSofx+NiHu6CBVnNEkGGVnO8XQqpFueh6qt3KZ9qMlH+8Zc=----ATTACHMENT:----NzQ2MTcyMTE4OTIyMzMxMCA4NDk1MjY5OTg3NTI1NjM5IDYyMjc1OTM4MjcyODUyOTU=