generateCertificateMobile function
Implementation
Future<Map<String, dynamic>> generateCertificateMobile(
Map<String, String> keyPair) async {
// 1. Decodificar las claves PEM
RSAPublicKey publicKey =
CryptoUtils.rsaPublicKeyFromPem(keyPair['publicKey']!);
RSAPrivateKey privateKey =
CryptoUtils.rsaPrivateKeyFromPem(keyPair['privateKey']!);
Map<String, String> subject = {
'C': 'VE',
// 'E': userData.email,
};
String csrPem = X509Utils.generateRsaCsrPem(
subject,
privateKey,
publicKey,
signingAlgorithm: 'SHA-512',
);
String berBase64 = csrPem
.replaceAll('-----BEGIN CERTIFICATE REQUEST-----', '')
.replaceAll('-----END CERTIFICATE REQUEST-----', '')
.replaceAll(RegExp(r'\s'), '');
var subjectAsn1 = ASN1Set();
subject.forEach((key, value) {
String oid;
switch (key) {
case 'C':
oid = '2.5.4.6';
break;
case 'E':
oid = '1.2.840.113549.1.9.1';
break;
default:
oid = '';
}
if (oid.isNotEmpty) {
var subjectSequence = ASN1Sequence();
subjectSequence.add(ASN1ObjectIdentifier.fromComponentString(oid));
subjectSequence.add(ASN1PrintableString(value));
subjectAsn1.add(subjectSequence);
}
});
return {
'csr': berBase64,
'subject': subjectAsn1,
};
}