parsePrivateKeyFromPem method
RSAPrivateKey
parsePrivateKeyFromPem(
- dynamic pemString
Decode Private key from PEM Format
Given a base64 encoded PEM String with correct headers and footers, return a
RSAPrivateKey
Implementation
RSAPrivateKey parsePrivateKeyFromPem(pemString) {
List<int> privateKeyDER = decodePEM(pemString);
var asn1Parser = new ASN1Parser(privateKeyDER as Uint8List);
var topLevelSeq = asn1Parser.nextObject() as ASN1Sequence;
var modulus, privateExponent, p, q;
//Use either PKCS1 or PKCS8 depending on the number of ELEMENTS
if (topLevelSeq.elements.length == 3) {
var privateKey = topLevelSeq.elements[2];
asn1Parser = new ASN1Parser(privateKey.contentBytes()!);
var pkSeq = asn1Parser.nextObject() as ASN1Sequence;
modulus = pkSeq.elements[1] as ASN1Integer;
privateExponent = pkSeq.elements[3] as ASN1Integer;
p = pkSeq.elements[4] as ASN1Integer;
q = pkSeq.elements[5] as ASN1Integer;
} else {
modulus = topLevelSeq.elements[1] as ASN1Integer;
privateExponent = topLevelSeq.elements[3] as ASN1Integer;
p = topLevelSeq.elements[4] as ASN1Integer;
q = topLevelSeq.elements[5] as ASN1Integer;
}
RSAPrivateKey rsaPrivateKey = RSAPrivateKey(
modulus.valueAsBigInteger,
privateExponent.valueAsBigInteger,
p.valueAsBigInteger,
q.valueAsBigInteger);
return rsaPrivateKey;
}