Example #1
0
 /**
  * Verify a message, using your public key
  * 
  * @param string|resource $sealed
  * @param EncryptionPublicKey $publicKey
  * @param string $signature
  * @return string
  */
 public function verifyAsymmetric($message, SignaturePublicKey $publicKey, string $signature, array $options = []) : bool
 {
     return 1 === \openssl_verify($message, \hex2bin($signature), $publicKey->getPEM(), 'sha384WithRSAEncryption');
 }
Example #2
0
 /**
  * @route notary
  */
 public function index()
 {
     \Airship\json_response(['status' => 'OK', 'channel' => $this->channel, 'message' => '', 'public_key' => Base64UrlSafe::encode($this->pk->getRawKeyMaterial())]);
 }
Example #3
0
 /**
  * Verify a signed message with the correct public key
  * 
  * @param string $message Message to verify
  * @param SignaturePublicKey $publicKey
  * @param string $signature
  * @param mixed $encoding Which encoding scheme to use?
  * @return bool
  * @throws InvalidSignature
  */
 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());
 }