在使用DER中的OpenSSL API时,我想确定以C格式编码的公钥的密钥长度。
用PEM格式编码的密钥来实现这一点是非常直接的:
FILE *fp = fopen(argv[1], "rb");
RSA *rsa_key = PEM_read_RSA_PUBKEY(fp, NULL, NULL, NULL);
int keylength = RSA_size(rsa_key);(假设要加载的键已作为参数传递)
不幸的是,没有等效的DER_read_RSA_PUBKEY函数。我一直在尝试使用i2d_RSA_PUBKEY_fp和d2i_RSA_PUBKEY_fp,但没有成功的分段错误。
_RSA_PUBKEY和_RSAPublicKey的区别似乎在于前者使用SubjectPublicKeyInfo (证书公钥)结构,后者使用PKCS#1 RSAPublicKey结构。
发布于 2020-11-06 08:59:26
d2i_*函数族可用于将DER转换为openssl内部数据结构。
因此,您应该能够使用:
FILE *fp = fopen(argv[1], "rb");
RSA *rsa_key = d2i_RSAPublicKey_fp(fp, NULL);
int keylength = RSA_size(rsa_key);去实现你想要的。
https://stackoverflow.com/questions/64710875
复制相似问题