그러나 서명을 위해 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);
구현은 <openssl dir>/crypto/pkcs7/pk7_lib.c
에서 찾을 수 있습니다 pk7_lib.c
에 있습니다. 기능에는 그다지 중요하지 않습니다. 헤비 리프팅이 PKCS7_SIGNER_INFO_set
에 의해 수행 된 것 같습니다.
라이브러리의 몇 군데에서 사용됩니다. openssl cms
명령은 명령 줄에서 작업 할 수 있도록해야한다
$ 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,
: apps/
에는 데모가 없습니다. "openssl smime ... [-md digest] ..." seems to be unknown option on the last version openssl을 참조하십시오. 조금 오래되었지만 여전히 유지되어야합니다.
출처
2014-06-11 07:41:21
jww