public IActionResult GetBsvAlias() { var host = HttpContext.Request.Host.ToString(); // Host "localhost:44369"; var baseUrl = "https://" + host + "/api/v1/bsvalias/"; var r = new { bsvalias = "1.0", capabilities = new ExpandoObject() }; var caps = (IDictionary <string, object>)r.capabilities; // pki and paymentDestination are the minimum set of capabilitites and do not use BRFC IDs. // All other capabilities use BRFC IDs. caps["pki"] = baseUrl + "id/{alias}@{domain.tld}"; caps["paymentDestination"] = baseUrl + "address/{alias}@{domain.tld}"; // Request Sender Validation Capability caps[KzPaymail.ToBrfcId(KzPaymail.Capability.senderValidation)] = _senderValidation; // Verify Public Key Owner Capability: http://bsvalias.org/05-verify-public-key-owner.html caps[KzPaymail.ToBrfcId(KzPaymail.Capability.verifyPublicKeyOwner)] = baseUrl + "verifypubkey/{alias}@{domain.tld}/{pubkey}"; return(Ok(r)); }
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 ActionResult <IEnumerable <string> > VerifyPubKey(string alias, string domain, string tld, string pubkey) { if (!KzPaymail.IsValid(alias, domain, tld)) { return(NotValidPaymail(alias, domain, tld)); } var pci = GetClientInfo(alias, domain, tld); if (pci == null) { return(NotFoundPaymail(pci.Paymail)); } return(Ok(new { handle = pci.Paymail, pubkey = pubkey, match = pubkey == pci.Pk.ToHex() })); }
public IActionResult GetId(string alias, string domain, string tld) { if (!KzPaymail.IsValid(alias, domain, tld)) { return(NotValidPaymail(alias, domain, tld)); } var pci = GetClientInfo(alias, domain, tld); if (pci == null) { return(NotFoundPaymail(pci.Paymail)); } return(Ok(new { bsvalias = "1.0", handle = pci.Paymail, pubkey = pci.Pk.ToHex() })); }