verify() public static method

Verify a signed message with the correct public key
public static verify ( string $message, SignaturePublicKey $publicKey, string $signature, mixed $encoding = Halite::ENCODE_BASE64URLSAFE ) : boolean
$message string Message to verify
$publicKey SignaturePublicKey
$signature string
$encoding mixed Which encoding scheme to use?
return boolean
Exemplo n.º 1
0
 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");
 }
Exemplo n.º 2
0
 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º");
 }
Exemplo n.º 3
0
 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");
 }
Exemplo n.º 4
0
 /**
  * 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);
 }
Exemplo n.º 5
0
 /**
  * @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));
 }