我尝试在C库中管理PKCS#12结构中的多个RSA密钥和证书。使用基元PKCS12_create
和PKCS12_parse
管理单个键可以正常工作,但我无法找到有关管理多个键的任何信息。我试图使用保险箱和袋子原语,但我只是成功破坏了我的PKCS12。
OpenSSL的PKCS#12是否允许PKCS#12结构中的多个密钥和证书?如果是,那么如何使用PKCS#12 API管理多个密钥和证书?
全部谢谢
答案 0 :(得分:2)
PKCS12_parse
使用的所有操作都是公共API,它只是试图简化简单的情况。整个245行p12_kiss.c(一个假设Keep It Simple,Stupid)是PKCS12_parse及其(非公共)帮助程序。
p12_crt.c是另外291行“man,这个文件格式很复杂”,只是PKCS12_create
。
管理多个文件代码更简单,但如果您想将复杂性纳入代码,则可以简化文件操作。
不要忘记在私人密码袋上拨打PKCS12_SAFEBAG_create_pkcs8_encrypt
。除非你打电话给密钥,否则你的密钥不会被加密,而且(IIRC)Apple的PFX阅读器不会从未加密的包中加载密钥(可能不是故意的决定,他们可能从未体验过它)。
答案 1 :(得分:0)
我终于成功地添加/解析了多个RSA密钥,并将它们证明到PKCS12结构/文件中。
我的解析函数基于parse_pk12
文件中的OpenSSL p12_kiss.c
函数。这个功能似乎只返回最后一个包。我调整它以检查每个袋子的友好名称并返回匹配的那个。
添加功能首先从现有PKCS12解压缩保险箱(STACK_OF(PKCS7))
,然后处理此保险箱,以便为其添加新的行李箱。然后我使用PKCS12_add_safes
函数创建一个新的PKCS12并删除前一个。
谢谢大家