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())); }
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); }
public void VerifySignature_InvalidSignature() { SignatureEvidence signature = new SignatureEvidence( ByteString.Parse("0213b0006543d4ab6e79f49559fbfb18e9d73596d63f39e2f12ebc2c9d51e2eb06"), ByteString.Parse("304402200c7fba6b623efd7e52731a11e6d7b99c2ae752c0f950b7a444ef7fb80162498c02202b01c74a4a04fb120860494de09bd6848f088927a7b07e3c3925b3894c8c89d5")); Assert.False(signature.VerifySignature(payload.ToByteArray())); }
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); }
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); }
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); }
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); }
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(); }
private static string ConvertEvidence(SignatureEvidence pubKey) { return(pubKey.PublicKey.ToString() + pubKey.Signature.ToString()); }
public void VerifySignature_Valid() { SignatureEvidence evidence = new SignatureEvidence(publicKey, signature); Assert.True(evidence.VerifySignature(payload.ToByteArray())); }
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 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); }
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); }