estrutura CMSG_SIGNER_ENCODE_INFO (wincrypt.h)
A estrutura CMSG_SIGNER_ENCODE_INFO contém informações do signatário. Ele é passado para CryptMsgCountersign, CryptMsgCountersignEncoded e, opcionalmente, para CryptMsgOpenToEncode como membro da estrutura CMSG_SIGNED_ENCODE_INFO , se o parâmetro dwMsgType for CMSG_SIGNED.
Sintaxe
typedef struct _CMSG_SIGNER_ENCODE_INFO {
DWORD cbSize;
PCERT_INFO pCertInfo;
union {
HCRYPTPROV hCryptProv;
NCRYPT_KEY_HANDLE hNCryptKey;
BCRYPT_KEY_HANDLE hBCryptKey;
} DUMMYUNIONNAME;
DWORD dwKeySpec;
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
void *pvHashAuxInfo;
DWORD cAuthAttr;
PCRYPT_ATTRIBUTE rgAuthAttr;
DWORD cUnauthAttr;
PCRYPT_ATTRIBUTE rgUnauthAttr;
CERT_ID SignerId;
CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
void *pvHashEncryptionAuxInfo;
} CMSG_SIGNER_ENCODE_INFO, *PCMSG_SIGNER_ENCODE_INFO;
Membros
cbSize
O tamanho, em bytes, dessa estrutura.
pCertInfo
Um ponteiro para uma estrutura CERT_INFO que contém o
Membros Issuer, SerialNumber e SubjectPublicKeyInfo .
Os membros pbData das estruturas Issuer e SerialNumber combinadas identificam exclusivamente um certificado. O membro Algorithm da estrutura SubjectPublicKeyInfo especifica o algoritmo de criptografia de hash usado.
DUMMYUNIONNAME
DUMMYUNIONNAME.hCryptProv
Um identificador para o provedor de serviços criptográficos (CSP). Se HashEncryptionAlgorithm estiver definido como szOID_PKIX_NO_SIGNATURE, esse identificador poderá ser o identificador de um CSP adquirido usando o parâmetro dwFlags definido como CRYPT_VERIFYCONTEXT. A função CNG NCryptIsKeyHandle é chamada para determinar a escolha da união.
DUMMYUNIONNAME.hNCryptKey
Um identificador para o CNG CSP. A função CNG NCryptIsKeyHandle é chamada para determinar a escolha da união. Novos algoritmos criptografados só têm suporte em funções CNG. A função CNG NCryptTranslateHandle será chamada para converter a opção CryptoAPI hCryptProv quando necessário. Recomendamos que os aplicativos passem, para o membro hNCryptKey , o identificador CSP CNG retornado da função NCryptOpenKey .
DUMMYUNIONNAME.hBCryptKey
dwKeySpec
Especifica a chave privada a ser usada. Esse membro não é usado quando o membro hNCryptKey é usado.
Se dwKeySpec for zero, o valor de AT_KEYEXCHANGE padrão será usado.
Os seguintes valores dwKeySpec são definidos para o provedor padrão.
Valor | Significado |
---|---|
|
Chaves usadas para criptografar/descriptografar chaves de sessão. |
|
Chaves usadas para criar e verificar assinaturas digitais. |
HashAlgorithm
Uma estrutura CRYPT_ALGORITHM_IDENTIFIER que especifica o algoritmo de hash.
pvHashAuxInfo
Não usado. Esse membro deve ser definido como NULL.
cAuthAttr
O número de elementos na matriz rgAuthAttr . Se nenhum atributo autenticado estiver presente em rgAuthAttr, cAuthAttr será zero.
rgAuthAttr
Uma matriz de ponteiros para CRYPT_ATTRIBUTE estruturas, cada uma contendo informações de atributo autenticadas.
O padrão PKCS nº 9 determina que, se houver algum atributo, deve haver pelo menos dois: o OID (identificador de objeto de tipo de conteúdo) e o hash da mensagem. Esses atributos são adicionados automaticamente pelo sistema.
cUnauthAttr
O número de elementos na matriz rgUnauthAttr . Se não houver atributos não autenticados, cUnauthAttr será zero.
rgUnauthAttr
Uma matriz de ponteiros para CRYPT_ATTRIBUTE estruturas, cada uma das quais contém informações de atributo não autenticados. Atributos não autenticados podem conter contra-atribuições, entre outros usos.
SignerId
Uma estrutura CERT_ID que contém um identificador exclusivo do certificado do signatário. Opcionalmente, esse membro pode ser usado com PKCS nº 7 com sintaxe de mensagem criptográfica (CMS). Se esse membro não for NULL e seu membro dwIdChoice não for zero, ele será usado para identificar o certificado em vez dos membros Issuer e SerialNumber da estrutura CERT_INFO apontada por pCertInfo. O CMS dá suporte às estruturas KEY_IDENTIFIER e ISSUER_SERIAL_NUMBER CERT_ID. O PKCS versão 1.5 dá suporte apenas à opção ISSUER_SERIAL_NUMBER CERT_ID. Esse membro é usado com CMS para processamento PKCS nº 7 e só poderá ser usado se CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS estiver definido.
HashEncryptionAlgorithm
Uma estrutura CRYPT_ALGORITHM_IDENTIFIER opcionalmente usada com PKCS nº 7 com CMS. Se esse membro não for NULL, o algoritmo identificado será usado em vez do algoritmo SubjectPublicKeyInfo.Algorithm. Se esse membro estiver definido como szOID_PKIX_NO_SIGNATURE, o valor da assinatura conterá apenas os octetos de hash.
Para RSA, o algoritmo de criptografia de hash normalmente é o mesmo que o algoritmo de chave pública. Para DSA, o algoritmo de criptografia de hash normalmente é um algoritmo de assinatura DSS.
Esse membro é usado com CMS para processamento PKCS nº 7 e só poderá ser usado se CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS estiver definido.
pvHashEncryptionAuxInfo
Este membro não é usado. Esse membro deverá ser definido como NULL se ele estiver presente na estrutura de dados. Esse membro estará presente somente se CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS estiver definido.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Cabeçalho | wincrypt.h |