【问题标题】:[Flutter]: How to get public key PEM string from the x509 certificate PEM string[Flutter]:如何从 x509 证书 PEM 字符串中获取公钥 PEM 字符串
【发布时间】:2022-01-20 13:20:48
【问题描述】:
我需要从 x509 证书 PEM 字符串中提取 PEM 公钥字符串的方法。
现在我正在使用basic_utils 包,它可以从给定的 PEM 字符串生成 x509Certificate 对象。
此 x509Certificate 对象具有 publicKeyData 字段,该字段具有 bytes 字段,将公钥字节表示为字符串。
但是我不能使用这个bytes 来生成有效的 PEM 公钥字符串。
所以问题是 - 我如何从证书中提取公钥作为 PEM 字符串?
谢谢
【问题讨论】:
标签:
flutter
dart
x509certificate
x509
【解决方案1】:
对于 RSA 公钥:
import 'package:convert/convert.dart';
import 'package:basic_utils/basic_utils.dart';
final bytes = hex.decode(cert.publicKeyData.bytes!);
final key = CryptoUtils.rsaPublicKeyFromDERBytes(Uint8List.fromList(bytes));
final pem = CryptoUtils.encodeRSAPublicKeyToPemPkcs1(key);
编码器的Pkcs1 版本将使用BEGIN RSA PUBLIC KEY 将PEM 括起来,而非pkcs1 版本将使用BEGIN PUBLIC KEY。