pemToPkcs7 static method

String pemToPkcs7(
  1. List<String> certPems
)

Converts the given single pems to a PKCS7 pem string according to datatracker.ietf.org/doc/html/rfc2315

Implementation

static String pemToPkcs7(List<String> certPems) {
  var outer = ASN1Sequence();
  outer.add(ASN1ObjectIdentifier([1, 2, 840, 113549, 1, 7, 2]));

  var inner = ASN1Sequence();
  inner.add(ASN1Integer.fromtInt(1));
  inner.add(ASN1Set());
  inner.add(
    ASN1Sequence(
      elements: [
        ASN1ObjectIdentifier([1, 2, 840, 113549, 1, 7, 1])
      ],
    ),
  );
  var certs = ASN1Sequence(tag: 0xA0);
  for (var pem in certPems) {
    var bytes = CryptoUtils.getBytesFromPEMString(pem);
    var asn1Parser = ASN1Parser(bytes);
    var top = asn1Parser.nextObject() as ASN1Sequence;
    certs.add(top);
  }
  inner.add(certs);
  var a1 = ASN1Null(tag: 0xA1);
  inner.add(a1);
  inner.add(ASN1Set());
  outer.add(ASN1Sequence(elements: [inner], tag: 0xA0));
  var plain =
      encodeASN1ObjectToPem(outer, BEGIN_PKCS7, END_PKCS7, newLine: '\n');
  return plain;
}