public async Task VerifyPubKey() { var r = new PaymailClient(); foreach (var tc in new [] { new { r = true, p = "*****@*****.**", k = "02c4aa80834a289b43870b56a6483c924b57650eebe6e5185b19258c76656baa35" }, new { r = true, p = "*****@*****.**", k = "02fe6a13c0734578b77d28680aac58a78eb1722dd654117451b8820c9380b10e68" }, new { r = true, p = "*****@*****.**", k = "02e36811b6a8db1593aa5cf97f91dd2211af1c38b9890567e58367945137dca8ef" }, new { r = false, p = "*****@*****.**", k = "02e36811b6a8db1593aa5cf97f91dd2211af1c38b9890567e58367945137dca8ef" }, new { r = false, p = "*****@*****.**", k = "02fe6a13c0734578b77d28680aac58a78eb1722dd654117451b8820c9380b10e68" }, }) { var pubkey = new PublicKey(tc.k); var ok = await r.VerifyPubKey(tc.p, pubkey); if (tc.r) { Assert.True(ok); } else { Assert.False(ok); } } }
public async Task EnsureCapabililtyFor() { var domain = "moneybutton.com"; var r = new PaymailClient(); var pkiOk = await r.DomainHasCapability(domain, Capability.Pki); var pdOk = await r.DomainHasCapability(domain, Capability.PaymentDestination); var svOk = await r.DomainHasCapability(domain, Capability.SenderValidation); var vpkoOk = await r.DomainHasCapability(domain, Capability.VerifyPublicKeyOwner); var raOk = await r.DomainHasCapability(domain, Capability.ReceiverApprovals); }
public async Task GetOutputScript() { // Paymail server configuration for [email protected]: // [email protected] // Generate public addresses beneath this derivation path: M/0 // Master public key for derivations (M): xpub661MyMwAqRbcEaJYm4GjL9XnYrwbTR7Rug3oZ66juJHMXYwCYD4Z3RVgyoPhhpU97Ls9fACV3Y7kYqMPxGAA8XWFdPpaXAj3qb8VHnRMU8c // Public key returned by GetPubKey("*****@*****.**"): M/0/{int.MaxValue} // Private key for that public key: m/0/{int.MaxValue} // var key = KzElectrumSv.GetMasterPrivKey("<replace with actual wallet seed>").Derive($"0/{int.MaxValue}").PrivKey; var key = PrivateKey.FromBase58("KxXvocKqZtdHvZP5HHNShrwDQVz2muNPisrzoyeyhXc4tZhBj1nM"); var r = new PaymailClient(); var s = await r.GetOutputScript(key, "*****@*****.**", "*****@*****.**"); Assert.True(s.Length > 0); }
public async Task VerifyMessageSignature() { var r = new PaymailClient(); foreach (var tc in new[] { //new { p = "*****@*****.**", k = "02fe6a13c0734578b77d28680aac58a78eb1722dd654117451b8820c9380b10e68" }, new { r = true, p = "*****@*****.**", m = "[email protected]:55:57.562ZPayment with Money Button", s = "H4Q8tvj632hXiirmiiDJkuUN9Z20zDu3KaFuwY8cInZiLhgVJKJdKrZx1RZN06E/AARnFX7Fn618OUBQigCis4M=" }, new { r = true, p = "*****@*****.**", m = "[email protected]:24:04.260Z", s = "IJ1C3gXhnUxKpU8JOIjGHC8talwIgfIXKMmRZ5mjysb0eHjLPQP5Tlx29Xi5KNDZuOsOPk8HiVtwKAefq1pJVDs=" }, }) { var(ok, pubkey) = await r.IsValidSignature(tc.m, tc.s, tc.p, null); Assert.True(ok); (ok, _) = await r.IsValidSignature(tc.m, tc.s, tc.p, pubkey); Assert.True(ok); } }
public async Task GetPubKey() { var r = new PaymailClient(); foreach (var tc in new [] { new { p = "*****@*****.**", k = "02c4aa80834a289b43870b56a6483c924b57650eebe6e5185b19258c76656baa35" }, new { p = "*****@*****.**", k = "02fe6a13c0734578b77d28680aac58a78eb1722dd654117451b8820c9380b10e68" }, new { p = "*****@*****.**", k = "02fe6a13c0734578b77d28680aac58a78eb1722dd654117451b8820c9380b10e68" }, //new { p = "*****@*****.**", k = "02e36811b6a8db1593aa5cf97f91dd2211af1c38b9890567e58367945137dca8ef" }, }) { //var privkey = KzElectrumSv.GetMasterPrivKey("<replace with actual wallet seed>").Derive($"0/{int.MaxValue}").PrivKey; //var privkey = PrivateKey.FromB58("KxXvocKqZtdHvZP5HHNShrwDQVz2muNPisrzoyeyhXc4tZhBj1nM"); //var pubkey = privkey.GetPubKey(); var pubkey = new PublicKey(tc.k); var k = await r.GetPublicKey(tc.p); Assert.Equal(k, pubkey); } }