Função CryptSetKeyParam (wincrypt.h)
O do Provedor Criptográfico base da Microsoft
Sintaxe
BOOL CryptSetKeyParam(
[in] HCRYPTKEY hKey,
[in] DWORD dwParam,
[in] const BYTE *pbData,
[in] DWORD dwFlags
);
Parâmetros
[in] hKey
Um identificador para a chave para a qual os valores devem ser definidos.
[in] dwParam
As tabelas a seguir contêm valores predefinidos que podem ser usados.
Para todos os tipos de chave, esse parâmetro pode conter um dos valores a seguir.
Valor | Significado |
---|---|
|
pbData aponta para um ALG_IDapropriado. Isso é usado ao trocar chaves de sessão com o Microsoft Base Digital Signature Standard (DSS), Diffie-Hellman Provedor Criptográfico ou CSPs compatíveis. Depois que uma chave é acordada com a função CryptImportKey, a chave de sessão é habilitada para uso definindo seu tipo de algoritmo. |
|
pbData é o endereço de um buffer que contém o certificado X.509 que foi codificado usando DER (Distinguished Encoding Rules). A chave pública no certificado deve corresponder à assinatura ou à chave de troca correspondente. |
|
|
|
|
|
pbData aponta para uma estrutura CRYPT_INTEGER_BLOB que contém o sal. Para obter mais informações, consulte Especificando um valor de sal. |
Se uma chave DSS (Digital Signature Standard) for especificada pelo parâmetro hKey, o valor dwParam também poderá ser definido como um dos valores a seguir.
Valor | Significado |
---|---|
|
|
|
pbData aponta para o módulo P principal de um BLOB de chave DSS. Os dados estão na forma de uma estrutura de CRYPT_INTEGER_BLOB. O membro pbData é o valor e o membro cbData é o comprimento do valor. O valor é esperado sem informações de cabeçalho e formulário de little-endian. |
|
pbData aponta para o Q principal de um BLOB de chave DSS. Os dados estão na forma de uma estrutura CRYPT_INTEGER_BLOB em que o membro pbData é o valor e o membro cbData é o comprimento do valor. O valor é esperado sem informações de cabeçalho e formulário de little-endian. |
|
Depois que os valores P, Q e G tiverem sido definidos, uma chamada que especifica o valor KP_X para |
Se um algoritmo
Valor | Significado |
---|---|
|
Define as informações de uma chave de Diffie-Hellman |
|
Define os parâmetros públicos (P, Q, G e assim por diante) de uma chave DSS ou Diffie-Hellman. O identificador de chave dessa chave deve estar no estado PREGEN, gerado com o sinalizador CRYPT_PREGEN. O parâmetro pbData deve ser um ponteiro para uma estrutura DATA_BLOB em que os dados nessa estrutura são um BLOB DHPUBKEY_VER3 ou DSSPUBKEY_VER3. A função copia os parâmetros públicos dessa estrutura CRYPT_INTEGER_BLOB para o identificador de chave. Depois que essa chamada for feita, o valor do parâmetro KP_X deverá ser usado com CryptSetKeyParam para criar a chave privada real. O parâmetro KP_PUB_PARAMS é usado como uma chamada em vez de várias chamadas com os valores de parâmetro KP_P, KP_Q e KP_G. |
Se uma
Valor | Significado |
---|---|
|
Esse tipo de valor só pode ser usado com chaves RC2 e foi adicionado devido à implementação da função CryptSetKeyParam no Provedor criptográfico avançado da Microsoft antes do Windows 2000. Na implementação anterior, as chaves RC2 no Provedor Avançado tinham 128 bits de força, mas o comprimento de chave efetivo usado para expandir as chaves para a tabela de chaves era de apenas 40 bits. Isso reduziu a força do algoritmo para 40 bits. Para manter a compatibilidade com versões anteriores, a implementação anterior permanecerá como está. No entanto, o comprimento efetivo da chave pode ser definido como maior que 40 bits usando KP_EFFECTIVE_KEYLEN na chamada cryptSetKeyParam |
|
Define a versão mais alta TLS (Transport Layer Security) permitida. Essa propriedade só se aplica a chaves SSL e TLS. O parâmetro pbData é o endereço de uma variável DWORD que contém o número de versão TLS mais alto com suporte. |
|
O vetor de inicialização é definido como zero por padrão para o Provedor Criptográfico Base da Microsoft. |
|
Defina o valor da chave para uma chave padrão de criptografia de dados (DES) de |
|
Defina o modo de preenchimento. O parâmetro
|
|
|
|
|
Se uma chave RSA for especificada no parâmetro hKey, o valor do parâmetro dwParam poderá ser o valor a seguir.
Valor | Significado |
---|---|
|
Defina os parâmetros OAEP (Preenchimento de Criptografia Assimétrica Ideal) (PKCS nº 1 versão 2) para a chave. O parâmetro pbData é o endereço de uma estrutura CRYPT_DATA_BLOB que contém o rótulo OAEP. Essa propriedade só se aplica a chaves RSA. |
Observe que os seguintes valores não são usados:
- KP_ADMIN_PIN
- KP_CMS_KEY_INFO
- KP_INFO
- KP_KEYEXCHANGE_PIN
- KP_PRECOMP_MD5
- KP_PRECOMP_SHA
- KP_PREHASH
- KP_PUB_EX_LEN
- KP_PUB_EX_VAL
- KP_RA
- KP_RB
- KP_ROUNDS
- KP_RP
- KP_SIGNATURE_PIN
- KP_Y
[in] pbData
Um ponteiro para um buffer inicializado com o valor a ser definido antes de chamar CryptSetKeyParam. A forma desses dados varia dependendo do valor de dwParam.
[in] dwFlags
Usado somente quando dwParam é KP_ALGID. O parâmetro dwFlags é usado para passar valores de sinalizador para a chave habilitada. O parâmetro dwFlags pode conter valores como o tamanho da chave e os outros valores de sinalizador permitidos ao gerar o mesmo tipo de chave com CryptGenKey. Para obter informações sobre valores de sinalizador permitidos, consulte CryptGenKey.
Valor de retorno
Se a função for bem-sucedida, o valor retornado será diferente de zero (TRUE).
Se a função falhar, o valor retornado será zero (FALSE). Para obter informações de erro estendidas, chame GetLastError.
Os códigos de erro precedidos por "NTE" são gerados pelo CSP específico que está sendo usado. Alguns códigos de erro possíveis seguem.
Observações
Se os parâmetros KP_Q, KP_P ou KP_X forem definidos em uma chave PREGEN Diffie-Hellman ou DSS, os comprimentos de chave deverão ser compatíveis com o comprimento da chave
Exemplos
Para obter um exemplo que usa essa função, consulte Exemplo de Programa C: Duplicando uma chave de sessão. Para obter mais códigos que usam essa função, consulte Exemplo de Programa C: Definindo e obtendo parâmetros de chave de sessão .
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows XP [somente aplicativos da área de trabalho] |
servidor com suporte mínimo | Windows Server 2003 [somente aplicativos da área de trabalho] |
da Plataforma de Destino |
Windows |
cabeçalho | wincrypt.h |
biblioteca | Advapi32.lib |
de DLL |
Advapi32.dll |
Consulte também
CryptGetKeyParam