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