public async Task VerifyPubKey()
        {
            var r = new KzPaymailClient();

            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 KzPubKey(tc.k);
                var ok     = await r.VerifyPubKey(tc.p, pubkey);

                if (tc.r)
                {
                    Assert.True(ok);
                }
                else
                {
                    Assert.False(ok);
                }
            }
        }
Exemple #2
0
            public async Task <bool> IsValid(KzPaymailClient pc)
            {
                var key = pubkey == null ? (KzPubKey)null : new KzPubKey(pubkey);

                var(ok, _) = await pc.IsValidSignature(GetMessage(), signature, senderHandle, key);

                return(ok);
            }
        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 = KzPrivKey.FromB58("KxXvocKqZtdHvZP5HHNShrwDQVz2muNPisrzoyeyhXc4tZhBj1nM");

            var r = new KzPaymailClient();
            var s = await r.GetOutputScript(key, "*****@*****.**", "*****@*****.**");

            Assert.True(s.Length > 0);
        }
        public async Task VerifyMessageSignature()
        {
            var r = new KzPaymailClient();

            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 KzPaymailClient();

            foreach (var tc in new []
            {
                new { p = "*****@*****.**", k = "02c4aa80834a289b43870b56a6483c924b57650eebe6e5185b19258c76656baa35" },
                new { p = "*****@*****.**", k = "02fe6a13c0734578b77d28680aac58a78eb1722dd654117451b8820c9380b10e68" },
                new { p = "*****@*****.**", k = "02e36811b6a8db1593aa5cf97f91dd2211af1c38b9890567e58367945137dca8ef" },
            })
            {
                //var privkey = KzElectrumSv.GetMasterPrivKey("<replace with actual wallet seed>").Derive($"0/{int.MaxValue}").PrivKey;
                //var privkey = KzPrivKey.FromB58("KxXvocKqZtdHvZP5HHNShrwDQVz2muNPisrzoyeyhXc4tZhBj1nM");
                //var pubkey = privkey.GetPubKey();
                var pubkey = new KzPubKey(tc.k);
                var k      = await r.GetPubKey(tc.p);

                Assert.Equal(k, pubkey);
            }
        }
Exemple #6
0
        public KzPaymailServerSingleton(IConfiguration config)
        {
            _config = config;
            var i = 0;

            _clients = new Dictionary <string, KzPaymailClientInfo>();
            do
            {
                var v = _config["KzPaymailClient" + i];
                if (string.IsNullOrWhiteSpace(v))
                {
                    break;
                }
                var p = v.Split(',');
                var c = new KzPaymailClientInfo(p[0], p[2], p[1]);
                _clients.Add(c.Paymail, c);
                i++;
            } while (true);

            _paymailClient = new KzPaymailClient();
        }