我正在創建一個可執行基本電子郵件安全操作(如加密,解密,簽名和驗證)的Android應用程序。到目前爲止,我能夠成功執行所有4 操作。但是我還沒有想到的一件事是如何在運行時指定簽名算法。在OpenSSL中動態選擇簽名算法
我的意思是我想有一個下拉列表,用戶可以從中選擇簽名算法算法。
我知道如何在加密的情況下做到這一點。但是對於簽名,我們沒有在PKCS7_Sign函數調用中指定任何算法。那麼如何在簽署郵件時提及我應該使用哪種簽名算法。
在此先感謝!
我正在創建一個可執行基本電子郵件安全操作(如加密,解密,簽名和驗證)的Android應用程序。到目前爲止,我能夠成功執行所有4 操作。但是我還沒有想到的一件事是如何在運行時指定簽名算法。在OpenSSL中動態選擇簽名算法
我的意思是我想有一個下拉列表,用戶可以從中選擇簽名算法算法。
我知道如何在加密的情況下做到這一點。但是對於簽名,我們沒有在PKCS7_Sign函數調用中指定任何算法。那麼如何在簽署郵件時提及我應該使用哪種簽名算法。
在此先感謝!
但是對於簽名,我們沒有在PKCS7_sign 函數調用中指定任何算法。那麼我如何提到簽署郵件時我應該使用哪種簽名算法 。
嘗試PKCS7_add_signature
。從<openssl dir>/crypto/pkcs7/pkcs7.h
:
PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509,
EVP_PKEY *pkey, const EVP_MD *dgst);
實施是在pk7_lib.c
,可在<openssl dir>/crypto/pkcs7/pk7_lib.c
找到。功能不多。它看起來像是由PKCS7_SIGNER_INFO_set
完成的。
它用在圖書館的一些地方。有一個在apps/
沒有演示:
$ cd openssl-1.0.1h
$ grep -R PKCS7_add_signature *
crypto/pkcs7/enc.c: if (PKCS7_add_signature(p7,x509,pkey,EVP_sha1()) == NULL) goto err;
crypto/pkcs7/pk7_lib.c:PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, EVP_PKEY *pkey,
crypto/pkcs7/pk7_smime.c: if (!(si = PKCS7_add_signature(p7,signcert,pkey, md)))
crypto/pkcs7/pkcs7.h:PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509,
crypto/pkcs7/pkcs7err.c:{ERR_FUNC(PKCS7_F_PKCS7_ADD_SIGNATURE), "PKCS7_add_signature"},
crypto/pkcs7/sign.c: si=PKCS7_add_signature(p7,x509,pkey,EVP_sha1());
crypto/ts/ts_rsp_sign.c: if (!(si = PKCS7_add_signature(p7, ctx->signer_cert,
的openssl cms
命令應該讓你在命令行中運行。請參閱"openssl smime ... [-md digest] ..." seems to be unknown option on the last version openssl。它有點舊,但它應該仍然成立。