[Flutter]: 如何从 x509 证书 PEM 字符串中获取 public 密钥 PEM 字符串
[Flutter]: How to get public key PEM string from the x509 certificate PEM string
我需要从 x509 证书 PEM 字符串中提取 Public 密钥的 PEM 字符串的方法。
现在我正在使用 basic_utils 包,它可以从给定的 PEM 字符串生成 x509Certificate 对象。
此 x509Certificate 对象具有 publicKeyData
字段和 bytes
字段,将 public 密钥字节表示为字符串。
但是我不能使用这个 bytes
生成 public 密钥的有效 PEM 字符串。
所以问题是 - 如何从证书中提取 public 密钥作为 PEM 字符串?
谢谢
对于 RSA public 密钥:
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
.
我需要从 x509 证书 PEM 字符串中提取 Public 密钥的 PEM 字符串的方法。
现在我正在使用 basic_utils 包,它可以从给定的 PEM 字符串生成 x509Certificate 对象。
此 x509Certificate 对象具有 publicKeyData
字段和 bytes
字段,将 public 密钥字节表示为字符串。
但是我不能使用这个 bytes
生成 public 密钥的有效 PEM 字符串。
所以问题是 - 如何从证书中提取 public 密钥作为 PEM 字符串?
谢谢
对于 RSA public 密钥:
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
.