使用opensslapi解析证书签名算法

使用opensslapi解析证书签名算法,openssl,certificate,Openssl,Certificate,我正在尝试使用OpenSSL API进行解析,而sig_alg给我带来了麻烦 整个证书通过PEM_read_bio_X509调用提供给OpenSSL库,但是cert->sig_alg->algor->algor->algor->algor的NID、SN和LN字段都为空,而长度为8,数据点为8字节,我认为这些字节包含OID 所以我的问题是。我可以使用什么函数从OID提取NID 我想我可以用d2i\u ASN1\u对象,但我认为这只是将数据aray复制到新的或提供的ASN1对象,而不会解释数据。我不

我正在尝试使用OpenSSL API进行解析,而sig_alg给我带来了麻烦

整个证书通过PEM_read_bio_X509调用提供给OpenSSL库,但是cert->sig_alg->algor->algor->algor->algor的NID、SN和LN字段都为空,而长度为8,数据点为8字节,我认为这些字节包含OID

所以我的问题是。我可以使用什么函数从OID提取NID

我想我可以用
d2i\u ASN1\u对象
,但我认为这只是将数据aray复制到新的或提供的ASN1对象,而不会解释数据。我不认为我必须像我认为的那样构建自己的著名OID列表(实际上并不精通PHP)

另一方面,它指示用户从cert->cert\u info->key->algor->algor>算法中提取签名。我试图从那里得到数据,但我得到了同样的结果。数据中有一些数据,其他地方都是零。还有,这些信息真的在签名上吗?根据名字判断,里面有关于公钥的信息

所以我的问题是。我可以使用什么函数从OID提取NID

我相信您正在寻找的功能是
OBJ_nid2obj
OBJ_obj2nid
OBJ_txt2nid
和朋友。它们可以在
/crypto/objects/objects.h
中找到

上面的OpenSSL文档位于