예제 #1
0
        public static string GetAccountIdFromPrivateKey(string privateKey)
        {
            var pvtKey = Base58Encoding.DecodePrivateKey(privateKey);
            var kp     = new Neo.Wallets.KeyPair(pvtKey);

            return(Base58Encoding.EncodeAccountId(kp.PublicKey.EncodePoint(false).Skip(1).ToArray()));
        }
예제 #2
0
 public static bool ValidatePrivateKey(string PrivateKey)
 {
     try
     {
         Base58Encoding.DecodePrivateKey(PrivateKey);
         return(true);
     }
     catch
     {
         return(false);
     }
 }
예제 #3
0
        private static byte[] DerivePublicKeyBytes(string privateKey)
        {
            var curve  = SecNamedCurves.GetByName("secp256r1");
            var domain = new ECDomainParameters(curve.Curve, curve.G, curve.N, curve.H);

            byte[] pkbytes = Base58Encoding.DecodePrivateKey(privateKey);
            var    d       = new BigInteger(pkbytes);
            var    q       = domain.G.Multiply(d);

            var publicKey = new ECPublicKeyParameters(q, domain);

            return(publicKey.Q.GetEncoded());
        }
        public static string GetSignature(string privateKey, string message, string AccountId)
        {
            var publicKeyBytes  = Base58Encoding.DecodeAccountId(AccountId);
            var privateKeyBytes = Base58Encoding.DecodePrivateKey(privateKey);

            //var signature = Neo.Cryptography.Crypto.Default.Sign(Encoding.UTF8.GetBytes(message), privateKeyBytes, publicKeyBytes);
            //return Base58Encoding.Encode(signature);

            Neo.Cryptography.ECC.ECDsa sa = new Neo.Cryptography.ECC.ECDsa(privateKeyBytes, Neo.Cryptography.ECC.ECCurve.Secp256r1);
            var sigInts = sa.GenerateSignature(Encoding.ASCII.GetBytes(message));

            var sh        = new SignatureHolder(sigInts);
            var signature = sh.ToString();

            //var vrt = VerifySignature(message, AccountId, signature);

            return(signature);
        }
예제 #5
0
        public static string GetSignature(string privateKey, string message)
        {
            var curve  = SecNamedCurves.GetByName("secp256r1");
            var domain = new ECDomainParameters(curve.Curve, curve.G, curve.N, curve.H);

            //byte[] pkbytes = Base58Encoding.Decode(privateKey);
            //byte[] pkbytes = Base58Encoding.DecodeWithCheckSum(privateKey);
            byte[] pkbytes = Base58Encoding.DecodePrivateKey(privateKey);

            var keyParameters = new
                                ECPrivateKeyParameters(new Org.BouncyCastle.Math.BigInteger(1, pkbytes),
                                                       domain);

            ISigner signer = SignerUtilities.GetSigner("SHA-256withECDSA");

            signer.Init(true, keyParameters);
            signer.BlockUpdate(Encoding.UTF8.GetBytes(message), 0, message.Length);
            var signature = signer.GenerateSignature();
            var netformat = SignatureHelper.ConvertDerToP1393(signature);

            return(Base58Encoding.Encode(netformat));
        }