我正在尝试实现一个自签名的 x509 证书,该证书使用后量子 (PQ) 公钥算法作为公钥算法。我查看了 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)生成证书。我只是插入 PQ 算法密钥,而不是 RSA 密钥。到目前为止,当我创建证书时,它总是以错误的格式输出。
我正在使用此命令:
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
EVP API 使用“引擎”来实现所有对称算法(密码)、摘要和非对称算法(公钥算法)。可以添加/更换发动机模块。请参阅 openssl engine 命令。
我认为这是您想要研究的领域。我认为这个领域没有很多文档(我可以找到),但是您可以查看一些示例引擎。如果您下载
openssl 源代码,您可以在引擎文件夹中查找可用于开始实现自定义算法的示例引擎。
祝你好运!
openssl x509 -req -in dilithium3_srv.csr -out dilithium3_srv.crt -CA dilithium3_CA.crt -CAkey dilithium3_CA.key -CAcreateserial -days 365
我建议您访问 OpenQuantumSafe 来阅读文档并使用工具。