zuk*_*kka 6 openssl smime digital-signature pkcs#7
嗨,我找不到一种方法来转换不透明的pkcs#7(p7m)在明文deatached smime中,以便签名的内容可以由常规的mime库处理.
我想取p7m文件并将其转换为一个有效签名的smime消息.
步骤应该是:
从p7m中提取签名内容
从p7m中提取cms结构
将所有内容打包在一个带有分离签名的新smime结构中
这个操作可以吗?
我搜索过openssl手册,但我找不到办法.
我能够使用以下代码将不透明签名的消息转换为独立的消息:
#include <openssl/evp.h>
#include <openssl/bio.h>
#include <openssl/pkcs7.h>
int main(int argc, char **argv)
{
BIO *data = NULL, *bin = NULL, *bout = NULL;
PKCS7 *p7, *p7b;
OpenSSL_add_all_algorithms();
bin = BIO_new_file("opaque.p7m", "rb");
p7 = SMIME_read_PKCS7(bin, &data);
p7b = PKCS7_dup(p7);
data = PKCS7_dataInit(p7, NULL);
PKCS7_set_detached(p7b, 1);
bout = BIO_new_file("detached.p7m", "wb");
SMIME_write_PKCS7(bout, p7b, data, PKCS7_BINARY | SMIME_DETACHED);
}
Run Code Online (Sandbox Code Playgroud)
为了测试程序,我使用以下命令生成 opaque.p7m:
$ openssl smime -sign -in foo.txt -signer my.crt -inkey my.key -nodetach -out opaque.p7m
Run Code Online (Sandbox Code Playgroud)
简而言之,上面的代码没有检查。要接受不同的输入格式,可以更改SMIME_read_PKCS7为PEM_read_bio_PKCS7(PEM)或d2i_PKCS7_bio(DER)。
| 归档时间: |
|
| 查看次数: |
1376 次 |
| 最近记录: |