コード例 #1
0
        public void TestSECCompressedPublicKey()
        {
            // This key should generate a 0x02 compressed public key
            var privateKeyEven = "18e14a7b6a307f426a94f8114701e7c8e774e7f9a47e2c2035db29a206321725".HexToBytes();

            // This key should generate a 0x03 compressed public key
            var privateKeyOdd = "79FE45D61339181238E49424E905446A35497A8ADEA8B7D5241A1E7F2C95A04D".HexToBytes();

            // Use Secp256k1 to generate the key because MSFT version does not support import privateKey with
            // no public key.
            IECDsa secp256k1 = new Secp256k1DotNet();
            var    evenKey   = secp256k1.CreateKey(privateKeyEven);

            var msftecdsa = new MsftECDsaCng();
            var evenBtc   = secp256k1.GetSECCompressedPublicKey(evenKey.PublicKey);
            var evenMsft  = msftecdsa.GetSECCompressedPublicKey(evenKey.PublicKey);

            Assert.Equal(evenBtc.ToArray(), evenMsft.ToArray());

            var oddKey  = secp256k1.CreateKey(privateKeyOdd);
            var oddBtc  = secp256k1.GetSECCompressedPublicKey(oddKey.PublicKey);
            var oddMsft = msftecdsa.GetSECCompressedPublicKey(oddKey.PublicKey);

            Assert.Equal(oddBtc.ToArray(), oddMsft.ToArray());
        }