コード例 #1
0
        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);
        }
コード例 #2
0
        private static bool VerifySignature(string message, string AccountId, string signature)
        {
            try
            {
                var signatureBytes = Base58Encoding.Decode(signature);
                var publicKeyBytes = Base58Encoding.DecodeAccountId(AccountId);

                //return Neo.Cryptography.Crypto.Default.VerifySignature(Encoding.UTF8.GetBytes(message), signatureBytes, publicKeyBytes);
                Neo.Cryptography.ECC.ECDsa sa = new Neo.Cryptography.ECC.ECDsa(Neo.Cryptography.ECC.ECPoint.FromBytes(publicKeyBytes, Neo.Cryptography.ECC.ECCurve.Secp256r1));
                var sh = new SignatureHolder(signature);
                return(sa.VerifySignature(Encoding.ASCII.GetBytes(message), sh.R, sh.S));
            }
            catch (Exception ex)
            {
                _log.LogError("VerifySignature failed: " + ex.Message);
                return(false);
            }
        }
コード例 #3
0
        private static void decodeSignatureInfo(SignatureHolder signatureHolder,
				TlvDecoder decoder, bool copy)
        {
            int beginOffset = decoder.getOffset();
            int endOffset = decoder.readNestedTlvsStart(net.named_data.jndn.encoding.tlv.Tlv.SignatureInfo);

            int signatureType = (int) decoder
                    .readNonNegativeIntegerTlv(net.named_data.jndn.encoding.tlv.Tlv.SignatureType);
            if (signatureType == net.named_data.jndn.encoding.tlv.Tlv.SignatureType_SignatureSha256WithRsa) {
                signatureHolder.setSignature(new Sha256WithRsaSignature());
                // Modify the holder's signature object because if we create an object
                //   and set it, then the holder will have to copy all the fields.
                Sha256WithRsaSignature signatureInfo = (Sha256WithRsaSignature) signatureHolder
                        .getSignature();
                decodeKeyLocator(net.named_data.jndn.encoding.tlv.Tlv.KeyLocator, signatureInfo.getKeyLocator(),
                        decoder, copy);
                if (decoder.peekType(net.named_data.jndn.encoding.tlv.Tlv.ValidityPeriod_ValidityPeriod, endOffset))
                    decodeValidityPeriod(signatureInfo.getValidityPeriod(), decoder);
            } else if (signatureType == net.named_data.jndn.encoding.tlv.Tlv.SignatureType_SignatureSha256WithEcdsa) {
                signatureHolder.setSignature(new Sha256WithEcdsaSignature());
                Sha256WithEcdsaSignature signatureInfo_0 = (Sha256WithEcdsaSignature) signatureHolder
                        .getSignature();
                decodeKeyLocator(net.named_data.jndn.encoding.tlv.Tlv.KeyLocator, signatureInfo_0.getKeyLocator(),
                        decoder, copy);
                if (decoder.peekType(net.named_data.jndn.encoding.tlv.Tlv.ValidityPeriod_ValidityPeriod, endOffset))
                    decodeValidityPeriod(signatureInfo_0.getValidityPeriod(), decoder);
            } else if (signatureType == net.named_data.jndn.encoding.tlv.Tlv.SignatureType_SignatureHmacWithSha256) {
                signatureHolder.setSignature(new HmacWithSha256Signature());
                HmacWithSha256Signature signatureInfo_1 = (HmacWithSha256Signature) signatureHolder
                        .getSignature();
                decodeKeyLocator(net.named_data.jndn.encoding.tlv.Tlv.KeyLocator, signatureInfo_1.getKeyLocator(),
                        decoder, copy);
            } else if (signatureType == net.named_data.jndn.encoding.tlv.Tlv.SignatureType_DigestSha256)
                signatureHolder.setSignature(new DigestSha256Signature());
            else {
                signatureHolder.setSignature(new GenericSignature());
                GenericSignature signatureInfo_2 = (GenericSignature) signatureHolder
                        .getSignature();

                // Get the bytes of the SignatureInfo TLV.
                signatureInfo_2.setSignatureInfoEncoding(
                        new Blob(decoder.getSlice(beginOffset, endOffset), copy),
                        signatureType);
            }

            decoder.finishNestedTlvs(endOffset);
        }