Как извлечь подпись из конверта pkcs7? - PullRequest
2 голосов
/ 10 февраля 2012

Я хочу извлечь подпись из конверта pkcs7. Как я могу это сделать?

1 Ответ

3 голосов
/ 11 февраля 2012

Используйте STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7) для получения отдельных SignerInfos, содержащихся в вашем PKCS7.Чтобы получить фактическую подпись от отдельного SignerInfo, вам нужно будет получить доступ к соответствующему указателю вручную.PKCS7_SIGNER_INFO определяется как:

typedef struct pkcs7_signer_info_st
{
ASN1_INTEGER            *version;   /* version 1 */
PKCS7_ISSUER_AND_SERIAL     *issuer_and_serial;
X509_ALGOR          *digest_alg;
STACK_OF(X509_ATTRIBUTE)    *auth_attr; /* [ 0 ] */
X509_ALGOR          *digest_enc_alg;
ASN1_OCTET_STRING       *enc_digest;
STACK_OF(X509_ATTRIBUTE)    *unauth_attr;   /* [ 1 ] */

/* The private key to sign with */
EVP_PKEY            *pkey;
} PKCS7_SIGNER_INFO;

Правильное поле (слегка вводящее в заблуждение) enc_digest.

...