コード例 #1
0
ファイル: PubKey.cs プロジェクト: zhanghoufu/NBitcoin
        /// <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));
        }
コード例 #2
0
ファイル: Key.cs プロジェクト: dgmib/NBitcoin
        public string SignMessage(byte[] messageBytes)
        {
            byte[] data = Utils.FormatMessageForSigning(messageBytes);
            var    hash = Hashes.Hash256(data);

            return(Convert.ToBase64String(SignCompact(hash)));
        }
コード例 #3
0
        /// <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));
        }
コード例 #4
0
ファイル: PubKey.cs プロジェクト: FluidChains/FullNode
        /// <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));
        }
コード例 #5
0
        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));
        }
コード例 #6
0
ファイル: PubKey.cs プロジェクト: ntfnd404/NBitcoin
        /// <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));
        }
コード例 #7
0
ファイル: PubKey.cs プロジェクト: shanecelis/NBitcoin
        //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));
        }
コード例 #8
0
        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)));
        }
コード例 #9
0
        /// <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
        }
コード例 #10
0
ファイル: PubKey.cs プロジェクト: biblepay/foundation
        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));
        }