Fonction CryptSetKeyParam (wincrypt.h)
Le fournisseur de chiffrement de base Microsoft n’autorise pas la définition de valeurs pour l’échange de clés ou les clés de signature ; Toutefois, les fournisseurs personnalisés peuvent définir des valeurs qui peuvent être définies pour ses clés.
Syntaxe
BOOL CryptSetKeyParam(
[in] HCRYPTKEY hKey,
[in] DWORD dwParam,
[in] const BYTE *pbData,
[in] DWORD dwFlags
);
Paramètres
[in] hKey
Handle vers la clé pour laquelle les valeurs doivent être définies.
[in] dwParam
Les tableaux suivants contiennent des valeurs prédéfinies qui peuvent être utilisées.
Pour tous les types de clés, ce paramètre peut contenir l’une des valeurs suivantes.
Valeur | Signification |
---|---|
|
pbData pointe vers une ALG_IDappropriée. Cela est utilisé lors de l’échange de clés de session avec microsoft Base Digital Signature Standard (DSS), Diffie-Hellman fournisseur de chiffrement ou fournisseurs de solutions cloud compatibles. Une fois qu’une clé est acceptée avec la fonction CryptImportKey, la clé de session est activée pour être utilisée en définissant son type d’algorithme. |
|
pbData est l’adresse d’une mémoire tampon qui contient le certificat X.509 qui a été encodé à l’aide de règles d’encodage unique (DER). La clé publique dans le certificat doit correspondre à la signature ou à la clé d’échange correspondante. |
|
|
|
pbData pointe vers un tableau BYTE qui spécifie une nouvelle valeur de sel faire partie de la clé de session. La taille de la valeur de sel varie en fonction de l’utilisation du fournisseur de solutions cloud. Avant de définir cette valeur, déterminez la taille de la valeur de sel en appelant la fonction CryptGetKeyParam. Les valeurs salt sont utilisées pour rendre les clés de session plus uniques, ce qui rend les attaques de dictionnaire plus difficiles. La valeur de sel est égale à zéro par défaut pour le fournisseur de chiffrement de base Microsoft. |
|
pbData pointe vers une structure de CRYPT_INTEGER_BLOB qui contient le sel. Pour plus d’informations, consultez Spécification d’une valeur de sel. |
Si une clé Digital Signature Standard (DSS) est spécifiée par le paramètre hKey, la valeur dwParam peut également être définie sur l’une des valeurs suivantes.
Valeur | Signification |
---|---|
|
|
|
pbData pointe vers le module principal P d’un objet BLOB de clé DSS. Les données sont sous la forme d’une structure CRYPT_INTEGER_BLOB. Le membre pbData est la valeur, et le membre cbData est la longueur de la valeur. La valeur est attendue sans informations d’en-tête et dans formulaire little-endian. |
|
pbData pointe vers le premier Q d’un objet BLOB de clé DSS. Les données sont sous la forme d’une structure |
|
Une fois que les valeurs P, Q et G ont été définies, un appel qui spécifie la valeur KP_X pour dwParam et NULL pour le paramètre pbData peut être effectué à la fonction CryptSetKeyParam. Cela entraîne la génération des valeurs X et Y. |
Si une clé d’algorithme Diffie-Hellman ou DSA (Digital Signature Algorithm) est spécifiée par hKey, la valeur dwParam peut également être définie sur l’une des valeurs suivantes.
Valeur | Signification |
---|---|
|
Définit les informations d’une clé Diffie-Hellman importée. Le paramètre pbData est l’adresse d’une structure CMS_DH_KEY_INFO qui contient les informations clés à définir. |
|
Définit les paramètres publics (P, Q, G, et ainsi de suite) d’une clé DSS ou Diffie-Hellman. Le handle de clé de cette clé doit être dans l’état PREGEN, généré avec l’indicateur CRYPT_PREGEN. Le paramètre pbData doit être un pointeur vers une structure DATA_BLOB où les données de cette structure sont un objet blob DHPUBKEY_VER3 ou DSSPUBKEY_VER3. La fonction copie les paramètres publics de cette structure CRYPT_INTEGER_BLOB vers le handle de clé. Une fois cet appel effectué, la valeur du paramètre KP_X doit être utilisée avec CryptSetKeyParam pour créer la clé privée réelle. Le paramètre KP_PUB_PARAMS est utilisé en tant qu’appel plutôt que plusieurs appels avec les valeurs de paramètre KP_P, KP_Q et KP_G. |
Si une clé de session
Valeur | Signification |
---|---|
|
Ce type de valeur ne peut être utilisé qu’avec des clés RC2 et a été ajouté en raison de l’implémentation de la fonction CryptSetKeyParam dans le fournisseur de chiffrement Microsoft Enhanced avant Windows 2000. Dans l’implémentation précédente, les clés RC2 du fournisseur amélioré étaient de 128 bits en force, mais la longueur de clé effective utilisée pour développer les clés dans la table de clés n’était que de 40 bits. Cela a réduit la puissance de l’algorithme à 40 bits. Pour maintenir la compatibilité descendante, l’implémentation précédente reste la même. Toutefois, la longueur de clé effective peut être définie sur plus de 40 bits à l’aide de KP_EFFECTIVE_KEYLEN dans l’appel CryptSetKeyParam. La longueur de clé effective est passée dans le paramètre pbData en tant que pointeur vers une valeur DWORD avec la valeur de longueur de clé effective. La longueur minimale de clé effective sur le fournisseur de chiffrement de base Microsoft est une et la valeur maximale est de 40. Dans le fournisseur de chiffrement Microsoft Enhanced, le minimum est un et le maximum est de 1 024. La longueur de la clé doit être définie avant le chiffrement ou le déchiffrement avec la clé. |
|
Définit la version la plus élevée transport Layer Security (TLS) autorisée. Cette propriété s’applique uniquement aux clés SSL et TLS. Le paramètre pbData |
|
Le vecteur d’initialisation est défini sur zéro par défaut pour le fournisseur de chiffrement de base Microsoft. |
|
Définissez la valeur de clé d’une clé Data Encryption Standard (DES). Le paramètre pbData est l’adresse d’une mémoire tampon qui contient la clé. Cette mémoire tampon doit être de la même longueur que la clé. Cette propriété s’applique uniquement aux clés DES. |
|
Définissez le mode de remplissage. Le paramètre
|
|
|
|
|
Si une clé de RSA
Valeur | Signification |
---|---|
|
Définissez les paramètres de remplissage de chiffrement asymétrique optimal (OAEP) (PKCS #1 version 2) pour la clé. Le paramètre pbData est l’adresse d’une structure CRYPT_DATA_BLOB qui contient l’étiquette OAEP. Cette propriété s’applique uniquement aux clés RSA. |
Notez que les valeurs suivantes ne sont pas utilisées :
- 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
Pointeur vers une mémoire tampon initialisée avec la valeur à définir avant d’appeler CryptSetKeyParam. La forme de ces données varie en fonction de la valeur de dwParam.
[in] dwFlags
Utilisé uniquement lorsque dwParam est KP_ALGID. Le paramètre dwFlags est utilisé pour transmettre des valeurs d’indicateur pour la clé activée. Le paramètre dwFlags peut contenir des valeurs telles que la taille de clé et les autres valeurs d’indicateur autorisées lors de la génération du même type de clé avec CryptGenKey. Pour plus d’informations sur les valeurs d’indicateur autorisées, consultez CryptGenKey.
Valeur de retour
Si la fonction réussit, la valeur de retour est différente de zéro (TRUE).
Si la fonction échoue, la valeur de retour est zéro (FALSE). Pour obtenir des informations d’erreur étendues, appelez GetLastError.
Les codes d’erreur précédés par « NTE » sont générés par le fournisseur de solutions Cloud en cours d’utilisation. Certains codes d’erreur possibles suivent.
Remarques
Si les paramètres KP_Q, KP_P ou KP_X sont définis sur une clé PREGEN Diffie-Hellman ou DSS, les longueurs de clé doivent être compatibles avec la longueur de clé définie à l’aide des 16 bits supérieurs du paramètre dwFlags lors de la création de la clé à l’aide de CryptGenKey. Si aucune longueur de clé n’a été définie dans CryptGenKey, la longueur de la clé par défaut a été utilisée. Cela crée une erreur si une longueur de clé non définie est utilisée pour définir P, Q ou X.
Exemples
Pour obtenir un exemple qui utilise cette fonction, consultez Exemple de programme C : dupliquer une clé de session. Pour plus de code qui utilise cette fonction, consultez Exemple de programme C : définition et obtention de paramètres de clé de session .
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows XP [applications de bureau uniquement] |
serveur minimum pris en charge | Windows Server 2003 [applications de bureau uniquement] |
plateforme cible | Windows |
d’en-tête | wincrypt.h |
bibliothèque | Advapi32.lib |
DLL | Advapi32.dll |