我正在尝试实现一个使用后量子(PQ)公钥算法作为公钥算法的自签名x509证书。我查看了c中的openssl库,以及使用RSA的方式。我本质上是在尝试复制相同的格式。从我在openssl库中看到的情况来看,RSA和一些其他支持的算法集成在加密EVP层中(密钥存储为EVP_PKEY)。我尝试使用的openssl库中的函数是X509_REQ_set_pubkey(X509_REQ*x,EVP_PKEY*pkey),以及一些具有非常相似输入的其他函数。有没有办法将PQ算法集成到EVP层中?如果没有,是否有任何方法可以使用EVP层来实现相同的目标?
我尝试过在openssl库中查看evp源代码。它似乎只支持某些算法,例如RSA、EC…我不确定是否有可能将PQ算法合并到EVP层中。我正在沿着这个链接中的示例:(https://www.codepool.biz/how-to-use-openssl-to-generate-x-509-certificate-request.html)生成证书。我没有RSA密钥,而是插入了PQ算法密钥。到目前为止,当我创建证书时,它总是以错误的格式输出。
我正在使用以下命令:openssl x509-in x509Req. pem-text-noout
来读取证书生成。它总是显示错误消息
unable to load certificate \n 140688586052032:error:0906D06C:PEM routines:
PEM_read_bio:no start line:../crypto/pem/pem_lib.c:691:Expecting: TRUSTED CERTIFICATE
EVPAPI使用“ENGINE”来实现所有对称算法(密码)、摘要和非对称算法(公钥算法)。可以添加/替换ENGINE模块。请参阅openssl引擎命令。
我认为这是你想研究的领域。我不认为这个领域有很多留档(我能找到),但你可以研究一些示例引擎。
如果您下载openssl源代码,您可以在引擎文件夹中查找示例引擎,您可以使用这些示例引擎开始实现您的自定义算法。
祝你好运!