ParagonIE\Halite\Asymmetric\Crypto::verify PHP Method

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
    public static function verify(string $message, SignaturePublicKey $publicKey, string $signature, $encoding = Halite::ENCODE_BASE64URLSAFE) : bool
    {
        $decoder = Halite::chooseEncoder($encoding, true);
        if ($decoder) {
            // We were given hex data:
            $signature = $decoder($signature);
        }
        if (CryptoUtil::safeStrlen($signature) !== \Sodium\CRYPTO_SIGN_BYTES) {
            throw new InvalidSignature('Signature is not the correct length; is it encoded?');
        }
        return \Sodium\crypto_sign_verify_detached($signature, $message, $publicKey->getRawKeyMaterial());
    }

Usage Example

Example #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");
 }
All Usage Examples Of ParagonIE\Halite\Asymmetric\Crypto::verify