Verify a signed message with the correct public key
public function testDeriveSigningKey() { list($sign_secret, $sign_public) = ASecretKey::deriveFromPassword('apple', "\t\n\v\f\r" . "", Key::CRYPTO_SIGN); $this->assertTrue($sign_secret instanceof ASecretKey); $this->assertTrue($sign_public instanceof APublicKey); // Can this be used? $message = 'This is a test message'; $signed = Asymmetric::sign($message, $sign_secret); $this->assertTrue(Asymmetric::verify($message, $sign_public, $signed)); $this->assertEquals($sign_public->get(), "þ\t†E·õÂbÈagÖ\t" . "•§”\\æÕU–ãuˆ4"); }
public function testDeriveSigningKey() { $keypair = KeyFactory::deriveSignatureKeyPair('apple', "\t\n\v\f\r"); $sign_secret = $keypair->getSecretKey(); $sign_public = $keypair->getPublicKey(); $this->assertTrue($sign_secret instanceof ASecretKey); $this->assertTrue($sign_public instanceof APublicKey); // Can this be used? $message = 'This is a test message'; $signed = Asymmetric::sign($message, $sign_secret); $this->assertTrue(Asymmetric::verify($message, $sign_public, $signed)); $this->assertEquals($sign_public->getRawKeyMaterial(), ".À>¸t\fÿ³ŽêßþŒé9" . "7}ýî¤mÉKƒëT sOº"); }
public function testLegacyDeriveSigningKey() { $keypair = KeyFactory::deriveSignatureKeyPair('apple', "\t\n\v\f\r" . "", true); $sign_secret = $keypair->getSecretKey(); $sign_public = $keypair->getPublicKey(); $this->assertTrue($sign_secret instanceof SignatureSecretKey); $this->assertTrue($sign_public instanceof SignaturePublicKey); // Can this be used? $message = 'This is a test message'; $signed = Asymmetric::sign($message, $sign_secret); $this->assertTrue(Asymmetric::verify($message, $sign_public, $signed)); $this->assertEquals($sign_public->getRawKeyMaterial(), "�\t�E���b�ag�\t" . "���\\��U��u�4"); }
/** * Verify the contents of a file * * @param $input (file handle) * @param SignaturePublicKey $publickey * @param string $signature * @param bool $raw_binary Don't hex encode? * * @return bool */ public static function verifyStream(ReadOnlyFile $input, KeyInterface $publickey, $signature, $raw_binary = false) { if (!$publickey instanceof SignaturePublicKey) { throw new \ParagonIE\Halite\Alerts\InvalidKey('Argument 2: Expected an instance of SignaturePublicKey'); } $csum = self::checksumStream($input, null, true); return AsymmetricCrypto::verify($csum, $publickey, $signature, $raw_binary); }
/** * @covers Asymmetric::sign() * @covers Asymmetric::verify() */ public function testSignFail() { $alice = KeyFactory::generateSignatureKeyPair(); $message = 'test message'; $signature = Asymmetric::sign($message, $alice->getSecretKey(), true); $this->assertFalse(Asymmetric::verify('wrongmessage', $alice->getPublicKey(), $signature, true)); $_signature = $signature; // Let's flip one bit, randomly: $r = \Sodium\randombytes_uniform(\mb_strlen($signature, '8bit')); $_signature[$r] = \chr(\ord($_signature[$r]) ^ 1 << \Sodium\randombytes_uniform(8)); $this->assertFalse(Asymmetric::verify($message, $alice->getPublicKey(), $_signature, true)); }