Función CryptSetKeyParam (wincrypt.h)
El proveedor criptográfico base de Microsoft no permite establecer valores para el intercambio de claves ni las claves de firma; sin embargo, los proveedores personalizados pueden definir valores que se pueden establecer para sus claves.
Sintaxis
BOOL CryptSetKeyParam(
[in] HCRYPTKEY hKey,
[in] DWORD dwParam,
[in] const BYTE *pbData,
[in] DWORD dwFlags
);
Parámetros
[in] hKey
Identificador de la clave para la que se van a establecer los valores.
[in] dwParam
Las tablas siguientes contienen valores predefinidos que se pueden usar.
Para todos los tipos de clave, este parámetro puede contener uno de los valores siguientes.
Valor | Significado |
---|---|
|
pbData apunta a un ALG_IDadecuado. Esto se usa al intercambiar claves de sesión con microsoft Base Digital Signature Standard (DSS), Diffie-Hellman proveedor criptográfico o CSP compatibles. Después de acordar una clave con la función CryptImportKey, la clave de sesión se habilita para su uso estableciendo su tipo de algoritmo. |
|
pbData es la dirección de un búfer que contiene el certificado X.509 que se ha codificado mediante reglas de codificación distintivo (DER). La clave pública del certificado debe coincidir con la firma o la clave de intercambio correspondientes. |
|
pbData apunta a un valor de DWORD que especifica cero o más marcas de permisos. Para obtener una descripción de estas marcas, consulte CryptGetKeyParam. |
|
|
|
pbData apunta a una estructura de CRYPT_INTEGER_BLOB que contiene la sal. Para obtener más información, vea Especificar un valor de sal. |
Si la clave estándar de firma digital (DSS) de
Valor | Significado |
---|---|
|
pbData apunta al generador G desde la clave BLOB de DSS. Los datos están en forma de una estructura de CRYPT_INTEGER_BLOB, donde el miembro pbData es el valor y el miembro cbData es la longitud del valor. El valor se espera sin información de encabezado y en formato little-endian. |
|
pbData apunta al módulo principal P de un BLOB de clave DSS. Los datos están en forma de una estructura de CRYPT_INTEGER_BLOB. El miembro pbData es el valor y el miembro cbData es la longitud del valor. El valor se espera sin información de encabezado y en formato little-endian. |
|
pbData apunta a la Q principal de un BLOB de clave DSS. Los datos están en forma de una estructura de CRYPT_INTEGER_BLOB donde el miembro pbData es el valor y el miembro cbData es la longitud del valor. El valor se espera sin información de encabezado y en formato little-endian. |
|
Después de establecer los valores P, Q y G, se puede realizar una llamada que especifique el valor de KP_X para |
Si se especifica
Valor | Significado |
---|---|
|
Establece la información de una clave |
|
Establece los parámetros públicos (P, Q, G, etc.) de una clave DSS o Diffie-Hellman. El identificador de clave de esta clave debe estar en estado PREGEN, generado con la marca CRYPT_PREGEN. El parámetro pbData debe ser un puntero a una estructura de DATA_BLOB donde los datos de esta estructura son un blob de DHPUBKEY_VER3 o DSSPUBKEY_VER3. La función copia los parámetros públicos de esta estructura de CRYPT_INTEGER_BLOB al identificador de clave. Una vez realizada esta llamada, el valor del parámetro KP_X debe usarse con CryptSetKeyParam para crear la clave privada real. El parámetro KP_PUB_PARAMS se usa como una llamada en lugar de varias llamadas con los valores de parámetro KP_P, KP_Q y KP_G. |
Si el parámetro
Valor | Significado |
---|---|
|
Este tipo de valor solo se puede usar con claves RC2 y se ha agregado debido a la implementación de la función CryptSetKeyParam en el proveedor criptográfico mejorado de Microsoft antes de Windows 2000. En la implementación anterior, las claves RC2 del proveedor mejorado eran de 128 bits de intensidad, pero la longitud de clave efectiva usada para expandir las claves en la tabla de claves era de solo 40 bits. Esto redujo la intensidad del algoritmo a 40 bits. Para mantener la compatibilidad con versiones anteriores, la implementación anterior permanecerá tal como está. Sin embargo, la longitud de clave efectiva se puede establecer para que sea mayor que 40 bits mediante KP_EFFECTIVE_KEYLEN en la llamada de CryptSetKeyParam. La longitud de clave efectiva se pasa en el parámetro pbData como puntero a un valor de DWORD con el valor de longitud de clave efectivo. La longitud mínima de clave efectiva en el proveedor criptográfico base de Microsoft es una y el máximo es 40. En el proveedor criptográfico mejorado de Microsoft, el mínimo es uno y el máximo es 1024. La longitud de la clave debe establecerse antes de cifrar o descifrar con la clave. |
|
Establece la versión de seguridad de la capa de transporte (TLS) más alta |
|
El vector de inicialización se establece en cero de forma predeterminada para el proveedor criptográfico base de Microsoft. |
|
Establezca el valor de clave de una clave de clave estándar de cifrado de datos (DES). El parámetro pbData es la dirección de un búfer que contiene la clave. Este búfer debe tener la misma longitud que la clave. Esta propiedad solo se aplica a las claves DES. |
|
Establezca el modo de relleno. El parámetro
|
|
pbData apunta a un valor DWORD que especifica el modo de cifrado de que se va a usar. Para obtener una lista de los modos de cifrado definidos, consulte CryptGetKeyParam. El modo de cifrado se establece en CRYPT_MODE_CBC de forma predeterminada para el proveedor criptográfico base de Microsoft. |
|
|
Si se especifica una clave de RSA
Valor | Significado |
---|---|
|
Establezca los parámetros de relleno de cifrado asimétrico óptimo (OAEP) (PKCS #1 versión 2) para la clave. El parámetro pbData es la dirección de una estructura de CRYPT_DATA_BLOB que contiene la etiqueta OAEP. Esta propiedad solo se aplica a las claves RSA. |
Tenga en cuenta que no se usan los siguientes valores:
- 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
Puntero a un búfer inicializado con el valor que se va a establecer antes de llamar a CryptSetKeyParam. El formato de estos datos varía en función del valor de dwParam.
[in] dwFlags
Solo se usa cuando se KP_ALGID dwParam. El parámetro dwFlags se usa para pasar valores de marca para la clave habilitada. El parámetro dwFlags puede contener valores como el tamaño de clave y los demás valores de marca permitidos al generar el mismo tipo de clave con CryptGenKey. Para obtener información sobre los valores de marca permitidos, vea CryptGenKey.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es distinto de cero (TRUE).
Si se produce un error en la función, el valor devuelto es cero (FALSE). Para obtener información de error extendida, llame a GetLastError.
Los códigos de error precedidos por "NTE" se generan mediante el CSP en particular que se usa. A continuación se indican algunos códigos de error posibles.
Código devuelto | Descripción |
---|---|
|
Otro proceso de usa actualmente el contexto de CSP. |
|
Uno de los parámetros especifica un identificador que no es válido. |
|
Uno de los parámetros contiene un valor que no es válido. Suele ser un puntero que no es válido. |
|
El parámetro dwFlags es distinto de cero o el pbData búfer contiene un valor que no es válido. |
|
El parámetro dwParam especifica un parámetro desconocido. |
|
No se encuentra el contexto de CSP que se especificó cuando no se encontró la clave hKey |
|
Error en la función de alguna manera inesperada. |
|
Algunos CSP tienen valores P, Q y G codificados de forma rígida. Si este es el caso, el uso de KP_P, KP_Q y KP_G para el valor de dwParam produce este error. |
Observaciones
Si los parámetros KP_Q, KP_P o KP_X se establecen en una clave PREGEN Diffie-Hellman o DSS, las longitudes de clave deben ser compatibles con la longitud de clave establecer con los 16 bits superiores del parámetro dwFlags cuando la clave se creó con CryptGenKey. Si no se estableció ninguna longitud de clave en CryptGenKey, se usó la longitud de clave predeterminada. Esto creará un error si se usa una longitud de clave no predeterminada para establecer P, Q o X.
Ejemplos
Para obtener un ejemplo que usa esta función, vea Programa C de ejemplo: Duplicar una clave de sesión. Para obtener más código que use esta función, vea Programa C de ejemplo: Establecer y obtener parámetros de clave de sesión .
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows XP [solo aplicaciones de escritorio] |
servidor mínimo admitido | Windows Server 2003 [solo aplicaciones de escritorio] |
de la plataforma de destino de |
Windows |
encabezado de |
wincrypt.h |
biblioteca de |
Advapi32.lib |
DLL de |
Advapi32.dll |
Consulte también
de generación de claves y funciones de Exchange de