pkcs7fromPem static method

Pkcs7CertificateData pkcs7fromPem(
  1. String pem
)

Parses the given PEM

Implementation

static Pkcs7CertificateData pkcs7fromPem(String pem) {
  var bytes = CryptoUtils.getBytesFromPEMString(pem);
  var asn1Parser = ASN1Parser(bytes);
  var topLevelSeq = asn1Parser.nextObject() as ASN1Sequence;
  var x509List = <X509CertificateData>[];
  var version = 0;
  var type = '';
  if (topLevelSeq.elements != null) {
    var oi = topLevelSeq.elements!.elementAt(0) as ASN1ObjectIdentifier;
    type = oi.objectIdentifierAsString!;
    var obj = topLevelSeq.elements!.elementAt(1);
    var seq = ASN1Sequence.fromBytes(obj.valueBytes!);
    var integer = seq.elements!.elementAt(0) as ASN1Integer;
    version = integer.integer!.toInt();
    var obj1 = seq.elements!.elementAt(3);
    var seq1 = ASN1Sequence.fromBytes(obj1.encodedBytes!);

    for (var el in seq1.elements!) {
      var x509 = _x509FromAsn1Sequence(el as ASN1Sequence);
      var plain = encodeASN1ObjectToPem(el, BEGIN_CERT, END_CERT);
      x509.plain = plain;
      x509List.add(x509);
    }
  }

  return Pkcs7CertificateData(
      certificates: x509List, version: version, contentType: type);
}