public void TestAggregateCommitmentsEmptyCommitments() { var signatureService = new MultiSignature(_sepSecp256K1); long bitmap = 3; var commitments = new List <byte[]>(); var exception = Assert.Throws <ArgumentOutOfRangeException>(() => signatureService.AggregateCommitments(commitments, bitmap)); Console.WriteLine(exception.Message); Assert.IsTrue(exception.Message.StartsWith("[commitments] cannot be less than or equal to 0.")); }
public void TestAggregateCommitmentsNullCommitments() { var signatureService = new MultiSignature(_sepSecp256K1); long bitmap = 3; List <byte[]> commitments = null; var exception = // ReSharper disable once ExpressionIsAlwaysNull Assert.Throws <ArgumentNullException>(() => signatureService.AggregateCommitments(commitments, bitmap)); Console.WriteLine(exception.Message); Assert.IsTrue(exception.Message.StartsWith("[commitments] cannot be Null.")); }
public void TestAggregatedCommitment() { var signatureService = new MultiSignature(_sepSecp256K1); long bitmap = 0b111; var commitments = new List <byte[]> { "02181b4df800671642e3df9a953a29a4f571acc1bf0714ed5ae714a9804d97079f".ToByteArray(), "02e8196913323fbb7a34d9455b778e877e1d1fa0205b5949504e55a2d999931366".ToByteArray(), "02ef67409f09053060e79d8ad5b1fe60690b5eaa35b67f071ca111a0a7edeb6b38".ToByteArray() }; Assert.AreEqual("02534d4371d6ea9f8b856a632e4e31d784eec9120b3252080702d872c696012289", signatureService.AggregateCommitments(commitments, bitmap).ToHexString()); }
public void TestVerifySignatureShareOk() { var signatureService = new MultiSignature(_sepSecp256K1); var signers = new List <byte[]>(); var commitmentSecrets = new List <byte[]>(); var commitments = new List <byte[]>(); var alice = new Participant("Alice"); var bob = new Participant("Bob"); var carol = new Participant("Carol"); long bitmap = 0; var message = "The quick brown fox jumps over the lazy dog.".ToHexEncodedByteArray(); signers.Add(alice.PublicKey); signers.Add(bob.PublicKey); signers.Add(carol.PublicKey); for (var i = 0; i < signers.Count; i++) { bitmap = (bitmap << 1) | 1; commitmentSecrets.Add(signatureService.ComputeCommitmentSecret()); commitments.Add(signatureService.ComputeCommitment(commitmentSecrets[i])); } var aggregatedCommitment = signatureService.AggregateCommitments(commitments, bitmap); var challenge = signatureService.ComputeChallenge(signers, alice.PublicKey, aggregatedCommitment, message, bitmap); var signature = signatureService.ComputeSignatureShare(challenge, alice.PrivateKey, commitmentSecrets[0]); Assert.IsTrue(signatureService.VerifySignatureShare( signers, alice.PublicKey, signature, aggregatedCommitment, commitments[0], message, bitmap)); }
public void TestComputeChallengeEmptyPublicKeys() { var signatureService = new MultiSignature(_sepSecp256K1); long bitmap = 0b111; List <byte[]> publicKeys = new List <byte[]>(); var keyPair = new Participant("Alice"); var publicKey = keyPair.PublicKey; var commitments = new List <byte[]> { "02181b4df800671642e3df9a953a29a4f571acc1bf0714ed5ae714a9804d97079f".ToByteArray(), "02e8196913323fbb7a34d9455b778e877e1d1fa0205b5949504e55a2d999931366".ToByteArray(), "02ef67409f09053060e79d8ad5b1fe60690b5eaa35b67f071ca111a0a7edeb6b38".ToByteArray() }; var aggregatedCommitment = signatureService.AggregateCommitments(commitments, bitmap); var exception = Assert.Throws <ArgumentOutOfRangeException>(() => signatureService.ComputeChallenge(publicKeys, publicKey, aggregatedCommitment, "hello".ToHexEncodedByteArray(), bitmap)); Console.WriteLine(exception.Message); Assert.IsTrue(exception.Message.StartsWith("[signers] cannot be less than or equal to 0.")); }