在给定X509对象中的证书的情况下,我想计算出它的公钥的长度,类似于this CLI command
$ openssl x509 -in certificate.crt -text -noout | grep "Public-Key"
RSA Public-Key: (2048 bit)我似乎找不到一种从C API中提取该信息的方法。
我找到了this old question,但它似乎依赖于访问EVP_PKEY的内部结构,这是我不能做的,因为我可以得到一个不完整的类型错误:
server.c:233:27: error: dereferencing pointer to incomplete type ‘EVP_PKEY {aka struct evp_pkey_st}’
switch (public_key->type) {
^~发布于 2020-09-26 04:45:40
OpenSSL最新版本的公共接口不提供EVP_PKEY structure成员,不能直接访问。
但是,通过EVP_PKEY_get*函数,OpenSSL提供了对其中一些参数的访问。
因此,如果您知道要查询的X509证书包含RSA,那么您可以首先通过调用EVP_PKEY_get0_RSA获取对reference的引用,然后通过调用RSA_bits获取以位为单位的模大小
代码应该看起来像这样:
EVP_PKEY *pub_key = ...;
RSA *rsa = EVP_PKEY_get0_RSA(pub_key);
printf("EVP_PKEY_size(pub_key): %d\n", RSA_bits(rsa));https://stackoverflow.com/questions/64044881
复制相似问题