Exemple #1
0
        public async Task <IActionResult> PostAddress(string alias, string domain, string tld, [FromBody] PostAddressInfo info)
        {
            if (!KzPaymail.IsValid(alias, domain, tld))
            {
                return(NotValidPaymail(alias, domain, tld));
            }

            if (string.IsNullOrWhiteSpace(info.senderHandle))
            {
                return(BadRequest(new PaymailError("Missing sender paymail", "missing-sender-paymail")));
            }

            if (!KzPaymail.IsValid(info.senderHandle))
            {
                return(BadRequest(new PaymailError("Invalid sender paymail", "invalid-sender-paymail")));
            }

            if (string.IsNullOrWhiteSpace(info.dt))
            {
                return(BadRequest(new PaymailError("Missing parameter dt", "missing-dt")));
            }

            if (!DateTime.TryParse(info.dt, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out DateTime dt))
            {
                return(BadRequest(new PaymailError("Invalid parameter dt", "invalid-dt")));
            }

            var pci = GetClientInfo(alias, domain, tld);

            if (pci == null)
            {
                return(NotFoundPaymail(pci.Paymail));
            }

            var apikey = Environment.GetEnvironmentVariable("APPSETTING_KzSendGridKey");

            if (!string.IsNullOrWhiteSpace(apikey))
            {
                var client = new SendGridClient(apikey);
                var msg    = new SendGridMessage();
                msg.SetFrom(new EmailAddress("*****@*****.**", "KzPaymail Web Service"));
                msg.AddTo("*****@*****.**");
                msg.SetSubject("Log PostAddress");
                msg.AddContent(MimeType.Html, $"<dl><dt>To:</dt><dd>{pci.Paymail}</dd><dt>senderName:</dt><dd>{info.senderName}</dd><dt>senderHandle:</dt><dd>{info.senderHandle}</dd><dt>When:</dt><dd>{info.dt}</dd><dt>Amount:</dt><dd>{info.amount}</dd><dt>Purpose:</dt><dd>{info.purpose}</dd><dt>PubKey:</dt><dd>{info.pubkey}</dd><dt>Signature:</dt><dd>{info.signature}</dd></dl>");
                var response = await client.SendEmailAsync(msg);
            }

            if (_senderValidation)
            {
                if (!await info.IsValid(PaymailClient))
                {
                    return(Unauthorized());
                }
            }

            var pk = pci.DeriveNext();

            return(Ok(new { output = KzBScript.NewPubP2PKH(pk.ToHash160()).ToHex() }));
        }
Exemple #2
0
        public static KzBTxOut ToP2PKH(KzPubKey pubKey, KzAmount value)
        {
            var pub = KzBScript.NewPubP2PKH(pubKey.ToHash160());

            var r = new KzBTxOut {
                Value     = value,
                ScriptPub = pub,
                PubKey    = pubKey
            };

            return(r);
        }