Skip to content

Commit

Permalink
Add API for multiple CRL distribution points (#1504)
Browse files Browse the repository at this point in the history
fixes #1475 
Co-authored-by: symarchand <sylvain.marchand@capgemini.com>
  • Loading branch information
mregen committed Sep 13, 2021
1 parent a4bf0ab commit dad6bcd
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
* ======================================================================*/

using System;
using System.Collections.Generic;
using System.Formats.Asn1;
using System.Linq;
using System.Numerics;
Expand Down Expand Up @@ -155,8 +156,17 @@ public static class X509Extensions
/// </summary>
/// <param name="distributionPoint">The CRL distribution point</param>
public static X509Extension BuildX509CRLDistributionPoints(
string distributionPoint
)
string distributionPoint)
{
return BuildX509CRLDistributionPoints(new string[] { distributionPoint });
}

/// <summary>
/// Build the CRL Distribution Point extension with multiple distribution points.
/// </summary>
/// <param name="distributionPoints">The CRL distribution points</param>
public static X509Extension BuildX509CRLDistributionPoints(
IEnumerable<string> distributionPoints)
{
var context0 = new Asn1Tag(TagClass.ContextSpecific, 0, true);
Asn1Tag distributionPointChoice = context0;
Expand All @@ -167,11 +177,14 @@ string distributionPoint
writer.PushSequence();
writer.PushSequence(distributionPointChoice);
writer.PushSequence(fullNameChoice);
writer.WriteCharacterString(
UniversalTagNumber.IA5String,
distributionPoint,
generalNameUriChoice
);
foreach (string distributionPoint in distributionPoints)
{
writer.WriteCharacterString(
UniversalTagNumber.IA5String,
distributionPoint,
generalNameUriChoice
);
}
writer.PopSequence(fullNameChoice);
writer.PopSequence(distributionPointChoice);
writer.PopSequence();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ ECCurveHashPair ecCurveHashPair
var cert = CertificateBuilder.Create(Subject)
.SetCAConstraint()
.SetHashAlgorithm(ecCurveHashPair.HashAlgorithmName)
.AddExtension(X509Extensions.BuildX509CRLDistributionPoints("http://myca/mycert.crl"))
.AddExtension(X509Extensions.BuildX509CRLDistributionPoints(new string[] { "http://myca/mycert.crl", "http://myaltca/mycert.crl" }))
.SetECCurve(ecCurveHashPair.Curve)
.CreateForECDsa();
Assert.NotNull(cert);
Expand Down

0 comments on commit dad6bcd

Please sign in to comment.