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
AT_KEYEXCHANGE
Chaves usadas para criptografar/descriptografar chaves de sessão.
AT_SIGNATURE
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

Confira também

CERT_INFO

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_ATTRIBUTE

Cryptmsgcontrol

CryptMsgCountersign