createCrlDistributionPoints static method

ASN1Sequence createCrlDistributionPoints(
  1. List<String> urls
)

Implementation

static ASN1Sequence createCrlDistributionPoints(List<String> urls) {
  final points = ASN1Sequence();
  for (final url in urls) {
    final dp = ASN1Sequence(); // DistributionPoint

    // fullName [0] IMPLICIT GeneralNames
    final fullName = ASN1Sequence(tag: 0xA0);
    // GeneralNames SEQUENCE
    final gn = ASN1IA5String(url, tag: 0x86); // [6] IMPLICIT IA5String (URL)
    // Add gn to fullName (which is acting as GeneralNames sequence but tagged A0)
    fullName.add(gn);

    // distributionPoint [0] EXPLICIT DistributionPointName
    // Since DistributionPointName is CHOICE { fullName [0] ... }
    // It seems complex. Let's simplify and make distributionPoint [0] EXPLICIT containing fullName

    final dpField = ASN1Sequence(tag: 0xA0);
    dpField.add(fullName);

    dp.add(dpField);
    points.add(dp);
  }
  return points;
}