예제 #1
0
        public static string BuildSignature(byte[] cert, byte[] txRawHash, string privateKey)
        {
            var txRawBytes  = CryptoUtils.Blake2b(txRawHash);
            var cerHexBytes = CryptoUtils.Sha256(cert);

            var message = new byte[txRawBytes.Length + cerHexBytes.Length];

            Array.Copy(cerHexBytes, 0, message, 0, cerHexBytes.Length);
            Array.Copy(txRawBytes, 0, message, cerHexBytes.Length, txRawBytes.Length);

            var key       = ECKeyPair.Create(ByteUtils.ToByteArray(privateKey));
            var signature = ECDSASign.SignMessage(CryptoUtils.Sha256(message), key, false);

            var signBytes = signature.ToByteArray();

            _logger.Info("signature: {} {}", ByteUtils.ToHexString(signBytes, null),
                         ByteUtils.CleanHexPrefix(ByteUtils.ToHexString(signature.R, Prefix.ZeroLowerX))
                         + ByteUtils.CleanHexPrefix(ByteUtils.ToHexString(signature.S, Prefix.ZeroLowerX)) + "0"
                         + signature.V);
            return(ByteUtils.ToHexString(signBytes, null));
        }
예제 #2
0
        private static string EncodeAddress(string address)
        {
            if (!StringUtils.IsHex(address))
            {
                throw new InvalidArgumentException("Parameter format is not hex string");
            }
            var paramBytes = ByteUtils.ToByteArray(address);

            if (paramBytes == null || paramBytes.Length > MAX_BYTE_LENGTH)
            {
                throw new InvalidArgumentException("Parameter format is hex string size too large, or null");
            }
            if (paramBytes.Length < MAX_BYTE_LENGTH)
            {
                var fillingZero = new byte[MAX_BYTE_LENGTH];
                Array.Copy(paramBytes, 0, fillingZero, MAX_BYTE_LENGTH - paramBytes.Length, paramBytes.Length);
                return(ByteUtils.ToHexString(fillingZero, null));
            }
            else
            {
                return(ByteUtils.CleanHexPrefix(address));
            }
        }