/// <summary> /// Verify message signed using signmessage from bitcoincore /// </summary> /// <param name="message">The message</param> /// <param name="signature">The signature</param> /// <returns>True if signatures is valid</returns> public bool VerifyMessage(byte[] message, ECDSASignature signature) { var messageToSign = Utils.FormatMessageForSigning(message); var hash = Hashes.Hash256(messageToSign); return(ECKey.Verify(hash, signature)); }
public string SignMessage(byte[] messageBytes) { byte[] data = Utils.FormatMessageForSigning(messageBytes); var hash = Hashes.Hash256(data); return(Convert.ToBase64String(SignCompact(hash))); }
/// <summary> /// Hashes and signs a message, returning the signature. /// </summary> /// <param name="messageBytes">The message to hash then sign.</param> /// <returns>The signature of the hashed and signed message.</returns> public ECDSASignature SignMessageBytes(byte[] messageBytes) { byte[] data = Utils.FormatMessageForSigning(messageBytes); uint256 hash = Hashes.Hash256(data); return(this._ECKey.Sign(hash)); }
/// <summary> /// Verify message signed using signmessage from bitcoincore. /// </summary> /// <param name="messageBytes">The message.</param> /// <param name="sig">The signature.</param> /// <returns>True if signature is valid.</returns> public bool VerifyMessage(byte[] messageBytes, ECDSASignature sig) { byte[] messageSigned = Utils.FormatMessageForSigning(messageBytes); uint256 hash = Hashes.Hash256(messageSigned); return(this.ECKey.Verify(hash, sig)); }
public static PubKey RecoverFromMessage(byte[] messageBytes, string signatureText) { byte[] signatureEncoded = Encoders.Base64.DecodeData(signatureText); byte[] message = Utils.FormatMessageForSigning(messageBytes); uint256 hash = Hashes.Hash256(message); return(RecoverCompact(hash, signatureEncoded)); }
/// <summary> /// Verify message signed using signmessage from bitcoincore /// </summary> /// <param name="message">The message</param> /// <param name="signature">The signature</param> /// <returns>True if signatures is valid</returns> public bool VerifyMessage(byte[] messageBytes, string signature) { var sig = DecodeSigString(signature); var messageSigned = Utils.FormatMessageForSigning(messageBytes); var hash = Hashes.Hash256(messageSigned); return(ECKey.Verify(hash, sig)); }
//Thanks bitcoinj source code //http://bitcoinj.googlecode.com/git-history/keychain/core/src/main/java/com/google/bitcoin/core/Utils.java public static PubKey RecoverFromMessage(string messageText, string signatureText) { var signatureEncoded = Convert.FromBase64String(signatureText); var message = Utils.FormatMessageForSigning(messageText); var hash = Hashes.Hash256(message); return(RecoverCompact(hash, signatureEncoded)); }
public string SignMessage(byte[] messageBytes, bool forceLowR) { if (messageBytes is null) { throw new ArgumentNullException(nameof(messageBytes)); } AssertNotDisposed(); byte[] data = Utils.FormatMessageForSigning(messageBytes); var hash = Hashes.DoubleSHA256(data); return(Convert.ToBase64String(SignCompact(hash, forceLowR))); }
/// <summary> /// Verify message signed using signmessage from bitcoincore /// </summary> /// <param name="message">The message</param> /// <param name="signature">The signature</param> /// <returns>True if signatures is valid</returns> public bool VerifyMessage(byte[] message, ECDSASignature signature) { #if HAS_SPAN var messageToSign = Utils.FormatMessageForSigning(message); var hash = Hashes.DoubleSHA256(messageToSign); Span <byte> msg = stackalloc byte[32]; hash.ToBytes(msg); return(_ECKey.SigVerify(signature.ToSecpECDSASignature(), msg)); #else var messageToSign = Utils.FormatMessageForSigning(message); var hash = Hashes.DoubleSHA256(messageToSign); return(ECKey.Verify(hash, signature)); #endif }
public static PubKey RecoverFromMessage(byte[] messageBytes, string signatureText, bool fUseDarkCoinUtilEncoding = true) { byte[] signatureEncoded = Encoders.Base64.DecodeData(signatureText); byte[] message; if (fUseDarkCoinUtilEncoding) { message = Utils.FormatMessageForSigning(messageBytes); } else { message = messageBytes; } uint256 hash = Hashes.Hash256(message); return(RecoverCompact(hash, signatureEncoded)); }