예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
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);
            }
        }
예제 #5
0
        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);
            }
        }