我尝试在C库中以PKCS#12结构管理多个RSA密钥和证书。使用原语PKCS12_create
和PKCS12_parse
管理单个密钥可以很好地工作,但是我找不到有关管理多个密钥的任何信息。我尝试使用保险箱和袋子原语,但仅成功破坏了PKCS12。
OpenSSL的PKCS#12是否允许PKCS#12结构中的多个密钥和证书?如果是这样,那么如何使用PKCS#12 API管理多个密钥和证书?
谢谢大家
最佳答案
PKCS#12是一个复杂的数据结构。 PKCS12_parse
使用的所有操作都是公共API,它只是试图简化这种简单情况。 p12_kiss.c的整个245行(一个假设为Keep It Simple,Stupid)是PKCS12_parse及其(非公共)帮助程序。
p12_crt.c是“ man,此文件格式很复杂”的另外291行,仅为PKCS12_create
。
管理多个文件是更容易的代码,但是如果您希望将复杂性纳入代码中,则可以简化文件操作。
不要忘记在私钥袋上拨打PKCS12_SAFEBAG_create_pkcs8_encrypt
的电话。除非您调用它,否则您的密钥不会被加密,并且(IIRC)Apple的PFX读取器不会从未加密的包中装入密钥(可能不是故意的决定,他们很可能从未经历过)。