Ejemplo n.º 1
0
        public static string SHA256(byte[] data)
        {
            using var sha256 = Crypto.SHA256.Create();
            var result = sha256.ComputeHash(data);

            return(HexUtils.HexFromByteArray(result));
        }
Ejemplo n.º 2
0
        public static string SHA256(Stream stream)
        {
            using var sha256 = Crypto.SHA256.Create();
            stream.Seek(0, SeekOrigin.Begin);
            var result = sha256.ComputeHash(stream);

            return(HexUtils.HexFromByteArray(result));
        }
Ejemplo n.º 3
0
        public static string TxInSignatureFromSignatureAndPublicKey(Signature signature, PublicKey publicKey)
        {
            var sb    = StringBuilderPool.Acquire();
            var bytes = signature.toDer();

            HexUtils.AppendHexFromByteArray(sb, bytes);
            sb.Append('.');
            bytes = publicKey.toDer();
            HexUtils.AppendHexFromByteArray(sb, bytes);
            return(StringBuilderPool.GetStringAndRelease(sb));
        }
Ejemplo n.º 4
0
        public static (Signature, PublicKey) SignatureAndPublicKeyFromTxInSignature(string txInSignature)
        {
            int indexOfSeparator = txInSignature.IndexOf('.');

            if (indexOfSeparator < 0)
            {
                return(null, null);
            }

            var bytes     = HexUtils.ByteArrayFromHex(txInSignature, 0, indexOfSeparator);
            var signature = Signature.fromDer(bytes);

            bytes = HexUtils.ByteArrayFromHex(txInSignature, indexOfSeparator + 1, txInSignature.Length - indexOfSeparator - 1);
            var publicKey = PublicKey.fromDer(bytes);

            return(signature, publicKey);
        }
Ejemplo n.º 5
0
        public static bool TxInSignatureContainsPublicKey(string txInSignature, PublicKey publicKey)
        {
            int indexOfDelimiter = txInSignature.IndexOf('.');

            if (indexOfDelimiter < 0)
            {
                return(false);
            }

            var publicKeyString = HexUtils.HexFromByteArray(publicKey.toDer());

            if (txInSignature.Length < publicKeyString.Length)
            {
                return(false);
            }

            return(txInSignature.EndsWith(publicKeyString));
        }