Exemplo n.º 1
0
        public static ECDSA_SIG ECDSASign(ECPrivateKeyInfo keyInfo, byte[] digest)
        {
            ECDSA_SIG result = default;

            CryptoLibHelper.DoECDSASign(keyInfo.EC_OpenSSL_NID, keyInfo.RAW_PrivKey, digest, ref result);
            return(result);
        }
Exemplo n.º 2
0
        public static byte[] EncodeSignature(ECDSA_SIG signature)
        {
            byte[] result;
            using (var ms = new MemoryStream())
            {
                StreamOp.WriteBytes(ms, ref signature.R);
                StreamOp.WriteBytes(ms, ref signature.S);
                result = StreamOp.SaveStreamToRaw(ms);
            }

            return(result);
        }
Exemplo n.º 3
0
        public static bool DecodeSignature(byte[] rawSignature, out ECDSA_SIG signature)
        {
            signature = CT_TECDSA_SIG_Nul;
            using (var ms = new MemoryStream())
            {
                StreamOp.LoadStreamFromRaw(ms, rawSignature);
                ms.Position = 0;
                if (StreamOp.ReadBytes(ms, ref signature.R) < 0)
                {
                    return(false);
                }
                if (StreamOp.ReadBytes(ms, ref signature.S) < 0)
                {
                    return(false);
                }
                if (ms.Position < ms.Length)
                {
                    return(false);                         // Invalid position
                }
            }

            return(true);
        }
Exemplo n.º 4
0
 public static bool ECDSAVerify(ECDSA_Public pubKey, byte[] digest, ECDSA_SIG signature) =>
 CryptoLibHelper.DoECDSAVerify(pubKey, digest, signature);