public void VerifySignature_InvalidSignature()
        {
            SignatureEvidence evidence = new SignatureEvidence(
                publicKey,
                ByteString.Parse("304402200c7fba6b623efd7e52731a11e6d7b99c2ae752c0f950b7a444ef7fb80162498c02202b01c74a4a04fb120860494de09bd6848f088927a7b07e3c3925b3894c8c89d5"));

            Assert.False(evidence.VerifySignature(payload.ToByteArray()));

            evidence = new SignatureEvidence(
                publicKey,
                ByteString.Parse("3044"));

            Assert.False(evidence.VerifySignature(payload.ToByteArray()));

            evidence = new SignatureEvidence(
                publicKey,
                ByteString.Parse("300680044164616D"));

            Assert.False(evidence.VerifySignature(payload.ToByteArray()));

            evidence = new SignatureEvidence(
                publicKey,
                ByteString.Parse("0304066e5dc0"));

            Assert.False(evidence.VerifySignature(payload.ToByteArray()));
        }
Пример #2
0
        public void TestSerialize()
        {
            ECKeyValidator    keyValidator = new ECKeyValidator();
            var               priv_key     = keyValidator.RSA.ToXmlString(true);
            var               pub_key      = keyValidator.RSA.ToXmlString(false);
            var               sign         = keyValidator.SignData("messadhgdhdhh");
            SignatureEvidence rawSign      = new SignatureEvidence(new HexString(Serializer.ToBinaryArray(sign)),
                                                                   new HexString(Serializer.ToBinaryArray(pub_key)));
            ITransactionRepository subscr    = new TransactionRepository();
            TransactionValidator   validator = new TransactionValidator();
            var byteSign = validator.SerializeSignature(rawSign);

            byte[] bytePrivKey = null, bytePubKey = null;
            using (MemoryStream stream1 = new MemoryStream(byteSign))
            {
                using (BinaryReader reader = new BinaryReader(stream1)) {
                    reader.BaseStream.Seek(0, SeekOrigin.Begin);
                    bytePubKey  = reader.ReadBytes(243);
                    bytePrivKey = reader.ReadBytes(178);
                }
            }

            var pub  = Serializer.ToBinaryArray(pub_key);
            var priv = Serializer.ToBinaryArray(sign);

            Assert.ReferenceEquals(pub, bytePubKey);
        }
Пример #3
0
        public void VerifySignature_InvalidSignature()
        {
            SignatureEvidence evidence = new SignatureEvidence(
                publicKey,
                ByteString.Parse("304402200c7fba6b623efd7e52731a11e6d7b99c2ae752c0f950b7a444ef7fb80162498c02202b01c74a4a04fb120860494de09bd6848f088927a7b07e3c3925b3894c8c89d5"));

            Assert.False(evidence.VerifySignature(payload.ToByteArray()));

            evidence = new SignatureEvidence(
                publicKey,
                ByteString.Parse("3044"));

            Assert.False(evidence.VerifySignature(payload.ToByteArray()));

            evidence = new SignatureEvidence(
                publicKey,
                ByteString.Parse("300680044164616D"));

            Assert.False(evidence.VerifySignature(payload.ToByteArray()));

            evidence = new SignatureEvidence(
                publicKey,
                ByteString.Parse("0304066e5dc0"));

            Assert.False(evidence.VerifySignature(payload.ToByteArray()));
        }
Пример #4
0
        public void VerifySignature_InvalidSignature()
        {
            SignatureEvidence signature = new SignatureEvidence(
                ByteString.Parse("0213b0006543d4ab6e79f49559fbfb18e9d73596d63f39e2f12ebc2c9d51e2eb06"),
                ByteString.Parse("304402200c7fba6b623efd7e52731a11e6d7b99c2ae752c0f950b7a444ef7fb80162498c02202b01c74a4a04fb120860494de09bd6848f088927a7b07e3c3925b3894c8c89d5"));

            Assert.False(signature.VerifySignature(payload.ToByteArray()));
        }
Пример #5
0
        public void VerifySignature_InvalidSignature()
        {
            SignatureEvidence signature = new SignatureEvidence(
                ByteString.Parse("0213b0006543d4ab6e79f49559fbfb18e9d73596d63f39e2f12ebc2c9d51e2eb06"),
                ByteString.Parse("304402200c7fba6b623efd7e52731a11e6d7b99c2ae752c0f950b7a444ef7fb80162498c02202b01c74a4a04fb120860494de09bd6848f088927a7b07e3c3925b3894c8c89d5"));

            Assert.False(signature.VerifySignature(payload.ToByteArray()));
        }
Пример #6
0
 public byte[] SerializeSignature(SignatureEvidence sign)
 {
     byte[] buffer = new byte[1154];
     using (MemoryStream stream = new MemoryStream(buffer))
     {
         BinaryWriter writer = new BinaryWriter(stream);
         writer.Write(sign.PublicKey.ToByteArray());
         writer.Write(sign.SignatureData.ToByteArray());
         writer.Close();
     }
     return(buffer);
 }
Пример #7
0
        public async Task Validate_ValidSignature()
        {
            TransactionValidator validator = CreateValidator(defaultAccounts);
            ByteString           mutation  = CreateMutation(validNamespace);

            SignatureEvidence signature = new SignatureEvidence(
                ByteString.Parse("0213b0006543d4ab6e79f49559fbfb18e9d73596d63f39e2f12ebc2c9d51e2eb06"),
                ByteString.Parse("3045022100e2ecc27c2e0d19329a0c7ad37e20fde00e64be235b2e7e86d285c18ff9c1e5b102200efa46125e057136f5008f4aa15a07e5ae4a0fcb2d00aa37862e246abbee74ab"));

            ByteString result = await validator.PostTransaction(mutation, new[] { signature });

            Assert.Equal(32, result.Value.Count);
        }
Пример #8
0
        public async Task Validate_ValidSignature()
        {
            TransactionValidator validator = CreateValidator(defaultAccounts);
            ByteString           mutation  = CreateMutation("http://root/");

            SignatureEvidence signature = new SignatureEvidence(
                ByteString.Parse("0213b0006543d4ab6e79f49559fbfb18e9d73596d63f39e2f12ebc2c9d51e2eb06"),
                ByteString.Parse("304402200c7fba6b623efd7e52731a11e6d7b99c2ae752c0f950b7a444ef7fb80162498c02202b01c74a4a04fb120860494de09bd6848f088927a7b07e3c3925b3894c8c89d4"));

            ByteString result = await validator.PostTransaction(mutation, new[] { signature });

            Assert.Equal(32, result.Value.Count);
        }
Пример #9
0
        public void VerifySignature_InvalidPublicKey()
        {
            SignatureEvidence evidence = new SignatureEvidence(
                ByteString.Parse("0013b0006543d4ab6e79f49559fbfb18e9d73596d63f39e2f12ebc2c9d51e2eb06"),
                signature);

            Assert.False(evidence.VerifySignature(payload.ToByteArray()));

            evidence = new SignatureEvidence(
                ByteString.Parse("abcdef12345678"),
                signature);

            Assert.False(evidence.VerifySignature(payload.ToByteArray()));
        }
        public void VerifySignature_InvalidPublicKey()
        {
            SignatureEvidence evidence = new SignatureEvidence(
                ByteString.Parse("0013b0006543d4ab6e79f49559fbfb18e9d73596d63f39e2f12ebc2c9d51e2eb06"),
                signature);

            Assert.False(evidence.VerifySignature(payload.ToByteArray()));

            evidence = new SignatureEvidence(
                ByteString.Parse("abcdef12345678"),
                signature);

            Assert.False(evidence.VerifySignature(payload.ToByteArray()));
        }
        public async Task Validate_InvalidSignature()
        {
            TransactionValidator validator = CreateValidator(defaultAccounts);
            ByteString           mutation  = CreateMutation(validNamespace);

            SignatureEvidence signature = new SignatureEvidence(
                ByteString.Parse("0013b0006543d4ab6e79f49559fbfb18e9d73596d63f39e2f12ebc2c9d51e2eb06"),
                ByteString.Parse("3045022100e2ecc27c2e0d19329a0c7ad37e20fde00e64be235b2e7e86d285c18ff9c1e5b102200efa46125e057136f5008f4aa15a07e5ae4a0fcb2d00aa37862e246abbee74ab"));

            TransactionInvalidException exception = await Assert.ThrowsAsync <TransactionInvalidException>(
                () => validator.PostTransaction(mutation, new[] { signature }));

            Assert.Equal("InvalidSignature", exception.Reason);
            Assert.Equal(null, store.AddedTransactions);
        }
        public async Task Validate_InvalidSignature()
        {
            TransactionValidator validator = CreateValidator(defaultAccounts);
            ByteString mutation = CreateMutation("http://root/");

            SignatureEvidence signature = new SignatureEvidence(
                ByteString.Parse("0013b0006543d4ab6e79f49559fbfb18e9d73596d63f39e2f12ebc2c9d51e2eb06"),
                ByteString.Parse("304402200c7fba6b623efd7e52731a11e6d7b99c2ae752c0f950b7a444ef7fb80162498c02202b01c74a4a04fb120860494de09bd6848f088927a7b07e3c3925b3894c8c89d4"));

            TransactionInvalidException exception = await Assert.ThrowsAsync<TransactionInvalidException>(
                () => validator.PostTransaction(mutation, new[] { signature }));
            Assert.Equal("InvalidSignature", exception.Reason);
        }
Пример #13
0
        public void VerifySignature_InvalidLengths()
        {
            SignatureEvidence signature = new SignatureEvidence(ByteString.Empty, ByteString.Empty);

            Assert.False(signature.VerifySignature(payload.ToByteArray()));
        }
 private static string ConvertEvidence(SignatureEvidence pubKey)
 {
     return pubKey.PublicKey.ToString() + pubKey.Signature.ToString();
 }
Пример #15
0
 private static string ConvertEvidence(SignatureEvidence pubKey)
 {
     return(pubKey.PublicKey.ToString() + pubKey.Signature.ToString());
 }
Пример #16
0
        public void VerifySignature_Valid()
        {
            SignatureEvidence evidence = new SignatureEvidence(publicKey, signature);

            Assert.True(evidence.VerifySignature(payload.ToByteArray()));
        }
Пример #17
0
        public async Task <Transaction> ValidateTransaction(object records, string key)
        {
            IEnumerable <Record> referenceRecords = null;

            if (records is JArray)
            {
                referenceRecords = recordBuilder.ValidateRecords((JArray)records);
            }
            else if (records is IEnumerable <Record> )
            {
                referenceRecords = (IEnumerable <Record>)records;
            }
            else if (records is Record)
            {
                referenceRecords = new[] { (Record)records };
            }
            else
            {
                return(null);
            }

            DateTime date = DateTime.UtcNow;

            var recordValue     = referenceRecords.Select(s => s.Value.ToString()).ToList();
            var concatenateData = Serializer.ConcatenateData(recordValue);
            var transactionHash = Serializer.ComputeHash(concatenateData.ToHexString());

            string         secret = null;
            ECKeyValidator eckey  = new ECKeyValidator();

            try
            {
                secret = File.ReadAllText("/DataChain/privKey/key.xml", UTF8Encoding.UTF8);
            }
            catch (FileNotFoundException)
            {
                return(null);
            }
            catch (IOException)
            {
                return(null);
            }

            string sign = null;

            sign = eckey.SignData(concatenateData);

            if (!eckey.VerifyMessage(concatenateData, sign, key))
            {
                throw new InvalidTransactionException("Signature is not valid");
            }

            SignatureEvidence auth = new SignatureEvidence(new HexString(sign.ToHexString()), new HexString(key.ToHexString()));

            byte[] rawSign = SerializeSignature(auth);


            List <Transaction> tx_list     = new List <Transaction>();
            Transaction        transaction = null;

            tx_list.AddRange(await Task.WhenAll(referenceRecords.Select(async rec =>
            {
                await Task.Delay(100);
                transaction = new Transaction(date, referenceRecords, new HexString(transactionHash),
                                              new HexString(sign.ToHexString()),
                                              new HexString(key.ToHexString()));

                return(transaction);
            }
                                                                        )));

            try
            {
                await txSubscribe.AddTransactionAsync(tx_list);
            }

            catch (InvalidTransactionException)
            {
                return(null);
            }

            try
            {
                await recordBuilder.PostRecordsAsync(referenceRecords);
            }
            catch (Exception)
            {
                return(null);
            }

            return(transaction);
        }
        public void VerifySignature_Valid()
        {
            SignatureEvidence evidence = new SignatureEvidence(publicKey, signature);

            Assert.True(evidence.VerifySignature(payload.ToByteArray()));
        }
        public async Task Validate_InvalidSignature()
        {
            TransactionValidator validator = CreateValidator(defaultAccounts);
            ByteString mutation = CreateMutation(validNamespace);

            SignatureEvidence signature = new SignatureEvidence(
                ByteString.Parse("0013b0006543d4ab6e79f49559fbfb18e9d73596d63f39e2f12ebc2c9d51e2eb06"),
                ByteString.Parse("3045022100e2ecc27c2e0d19329a0c7ad37e20fde00e64be235b2e7e86d285c18ff9c1e5b102200efa46125e057136f5008f4aa15a07e5ae4a0fcb2d00aa37862e246abbee74ab"));

            TransactionInvalidException exception = await Assert.ThrowsAsync<TransactionInvalidException>(
                () => validator.PostTransaction(mutation, new[] { signature }));
            Assert.Equal("InvalidSignature", exception.Reason);
        }
Пример #20
0
        public void VerifySignature_InvalidLengths()
        {
            SignatureEvidence signature = new SignatureEvidence(ByteString.Empty, ByteString.Empty);

            Assert.False(signature.VerifySignature(payload.ToByteArray()));
        }
        public async Task Validate_ValidSignature()
        {
            TransactionValidator validator = CreateValidator(defaultAccounts);
            ByteString mutation = CreateMutation(validNamespace);

            SignatureEvidence signature = new SignatureEvidence(
                ByteString.Parse("0213b0006543d4ab6e79f49559fbfb18e9d73596d63f39e2f12ebc2c9d51e2eb06"),
                ByteString.Parse("3045022100e2ecc27c2e0d19329a0c7ad37e20fde00e64be235b2e7e86d285c18ff9c1e5b102200efa46125e057136f5008f4aa15a07e5ae4a0fcb2d00aa37862e246abbee74ab"));

            ByteString result = await validator.PostTransaction(mutation, new[] { signature });

            Assert.Equal(32, result.Value.Count);
            Assert.Equal(1, store.AddedTransactions.Count);
        }