public byte[] Generate() { try { var distinguishedName = new X500DistinguishedName($"CN={CertifcateName}"); using RSA rsa = RSA.Create(4096); var request = new CertificateRequest(distinguishedName, rsa, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1); request.CertificateExtensions.Add(new X509KeyUsageExtension(X509KeyUsageFlags.DataEncipherment | X509KeyUsageFlags.KeyEncipherment | X509KeyUsageFlags.DigitalSignature, false)); request.CertificateExtensions.Add(new X509EnhancedKeyUsageExtension(new OidCollection { new Oid("1.3.6.1.5.5.7.3.1") }, false)); request.CertificateExtensions.Add(SubjectAlternativeNames.Build()); var certificate = request.CreateSelfSigned(new DateTimeOffset(DateTime.UtcNow.AddDays(-1)), new DateTimeOffset(DateTime.UtcNow.AddDays(3650))); certificate.FriendlyName = CertifcateName; return(certificate.Export(X509ContentType.Pfx, Password)); } catch (Exception ex) { throw new Exception("The certificate could not build.", ex); } }
public CertificatePolicy ToCertificatePolicy() { var subjectAlternativeNames = new SubjectAlternativeNames(); foreach (var dnsName in DnsNames) { subjectAlternativeNames.DnsNames.Add(dnsName); } var certificatePolicy = new CertificatePolicy(WellKnownIssuerNames.Unknown, subjectAlternativeNames) { KeyType = KeyType, KeySize = KeySize, ReuseKey = ReuseKey }; if (!string.IsNullOrEmpty(KeyCurveName)) { certificatePolicy.KeyCurveName = KeyCurveName; } return(certificatePolicy); }
private static void AssertAreEqual(SubjectAlternativeNames expected, SubjectAlternativeNames actual) { CollectionAssert.AreEqual(expected?.DnsNames, actual?.DnsNames, StringComparer.Ordinal); CollectionAssert.AreEqual(expected?.Emails, actual?.Emails, StringComparer.Ordinal); CollectionAssert.AreEqual(expected?.UserPrincipalNames, actual?.UserPrincipalNames, StringComparer.Ordinal); }
public void NewIsEmpty() { SubjectAlternativeNames subjectAlternativeNames = new SubjectAlternativeNames(); Assert.IsTrue(subjectAlternativeNames.IsEmpty); }
public CACertificatePolicy(string issuerName, string subject, SubjectAlternativeNames subjectAlternativeNames) : base(issuerName, subject, subjectAlternativeNames) { }