public void TestComputeSignatureShareNullPrivateKey() { var signatureService = new MultiSignature(_sepSecp256K1); byte[] challenge = Digests.Sha3("dummy challenge".ToHexEncodedByteArray()); byte[] privateKey = null; byte[] commitmentSecret = signatureService.ComputeCommitmentSecret(); var exception = Assert.Throws <ArgumentNullException>(() => signatureService.ComputeSignatureShare(challenge, privateKey, commitmentSecret)); Console.WriteLine(exception.Message); Assert.IsTrue(exception.Message.StartsWith("[privateKey] cannot be Null.")); }
public void TestComputeSignatureShareEmptyCommitmentSecret() { var signatureService = new MultiSignature(_sepSecp256K1); byte[] commitmentSecret = new byte[0]; byte[] challenge = Digests.Sha3("dummy challenge".ToHexEncodedByteArray()); byte[] privateKey = new Participant("Alice").PrivateKey; var exception = Assert.Throws <ArgumentOutOfRangeException>(() => signatureService.ComputeSignatureShare(challenge, privateKey, commitmentSecret)); Console.WriteLine(exception.Message); Assert.IsTrue(exception.Message.StartsWith("[commitmentSecret] cannot be less than or equal to 0.")); }
public void TestComputeSignatureShareNullChallenge() { var signatureService = new MultiSignature(_sepSecp256K1); byte[] challenge = null; byte[] privateKey = new Participant("Alice").PrivateKey; byte[] commitmentSecret = signatureService.ComputeCommitmentSecret(); var exception = Assert.Throws <ArgumentNullException>(() => signatureService.ComputeSignatureShare(challenge, privateKey, commitmentSecret)); Console.WriteLine(exception.Message); Assert.IsTrue(exception.Message.StartsWith("[challenge] cannot be Null.")); }
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)); }