public async Task <IActionResult> CreateCertificate([FromBody] Psd2CertificateRequest request) { var issuer = new X509Certificate2(Path.Combine(Options.Path, "ca.pfx"), Options.PfxPassphrase, X509KeyStorageFlags.MachineKeySet); var manager = new CertificateManager(); var cert = manager.CreateQWACs(request, Options.IssuerDomain, issuer, out _); var response = await Store.Add(cert, request); cert.Dispose(); return(Ok(response)); }
public void Generate_QWACs() { var data = Psd2CertificateRequest.Example(); var manager = new CertificateManager(); var privateKey = default(RSA); var cert = manager.CreateQWACs(data, out privateKey); var certBase64 = cert.ExportToPEM(); var publicBase64 = privateKey.ToSubjectPublicKeyInfo(); var privateBase64 = privateKey.ToRSAPrivateKey(); var pfxBytes = cert.Export(X509ContentType.Pfx, "111"); File.WriteAllText(Path.Combine(Directory.GetCurrentDirectory(), $"{data.AuthorizationNumber}.cer"), certBase64); File.WriteAllText(Path.Combine(Directory.GetCurrentDirectory(), $"{data.AuthorizationNumber}.public.key"), publicBase64); File.WriteAllText(Path.Combine(Directory.GetCurrentDirectory(), $"{data.AuthorizationNumber}.private.key"), privateBase64); File.WriteAllBytes(Path.Combine(Directory.GetCurrentDirectory(), $"{data.AuthorizationNumber}.pfx"), pfxBytes); File.WriteAllText(Path.Combine(Directory.GetCurrentDirectory(), $"{data.AuthorizationNumber}.json"), JsonConvert.SerializeObject(new { encodedCert = certBase64, privateKey = privateBase64, keyId = CryptoRandom.CreateUniqueId(16), algorithm = "SHA256WITHRSA" })); Assert.True(true); }