/// <summary> /// Verify Ed25519 signature /// </summary> /// <param name="signature">Signature bytes</param> /// <param name="message">Message</param> /// <param name="publicKey">Public key</param> /// <returns>True if signature is valid, false if it's not</returns> public static bool Verify(ArraySegment <byte> signature, ArraySegment <byte> message, ArraySegment <byte> publicKey) { if (signature.Count != SignatureSize) { throw new ArgumentException($"Sizeof signature doesnt match defined size of {SignatureSize}"); } if (publicKey.Count != PublicKeySize) { throw new ArgumentException($"Sizeof public key doesnt match defined size of {PublicKeySize}"); } return(Ed25519Operations.crypto_sign_verify(signature.Array, signature.Offset, message.Array, message.Offset, message.Count, publicKey.Array, publicKey.Offset)); }
/// <summary> /// Verify Ed25519 signature /// </summary> /// <param name="signature">Signature bytes</param> /// <param name="message">Message</param> /// <param name="publicKey">Public key</param> /// <returns>True if signature is valid, false if it's not</returns> public static bool Verify(byte[] signature, byte[] message, byte[] publicKey) { Preconditions.NotNull(signature, nameof(signature)); Preconditions.NotNull(message, nameof(message)); Preconditions.NotNull(publicKey, nameof(publicKey)); if (signature.Length != SignatureSize) { throw new ArgumentException($"Sizeof signature doesnt match defined size of {SignatureSize}"); } if (publicKey.Length != PublicKeySize) { throw new ArgumentException($"Sizeof public key doesnt match defined size of {PublicKeySize}"); } return(Ed25519Operations.crypto_sign_verify(signature, 0, message, 0, message.Length, publicKey, 0)); }