Funzione CryptSetKeyParam (wincrypt.h)
Il provider di crittografia microsoft base non consente l'impostazione dei valori per lo scambio di chiavi o le chiavi di firma; Tuttavia, i provider personalizzati possono definire valori che possono essere impostati per le relative chiavi.
Sintassi
BOOL CryptSetKeyParam(
[in] HCRYPTKEY hKey,
[in] DWORD dwParam,
[in] const BYTE *pbData,
[in] DWORD dwFlags
);
Parametri
[in] hKey
Handle per la chiave per cui impostare i valori.
[in] dwParam
Le tabelle seguenti contengono valori predefiniti che è possibile usare.
Per tutti i tipi di chiave, questo parametro può contenere uno dei valori seguenti.
Valore | Significato |
---|---|
|
pbData punta a un ALG_IDappropriato. Questa operazione viene usata quando si scambiano chiavi di sessione con microsoft Base Digital Signature Standard (DSS), Diffie-Hellman provider di crittografia o CSP compatibili. Dopo che una chiave è concordata con la funzione CryptImportKey, la chiave di sessione viene abilitata per l'uso impostandone il tipo di algoritmo. |
|
pbData è l'indirizzo di un buffer contenente il certificato X.509 codificato tramite regole di codifica distinte. La chiave pubblica nel certificato deve corrispondere alla firma o alla chiave di scambio corrispondente. |
|
|
|
|
|
pbData punta a una struttura CRYPT_INTEGER_BLOB che contiene il salt. Per altre informazioni, vedere Specifica di un valore salt. |
Se un
Valore | Significato |
---|---|
|
pbData punta al generatore G dal BLOB della chiave DSS. I dati sono sotto forma di struttura |
|
pbData punta al P modulo primo di un BLOB di chiave DSS. I dati sono sotto forma di struttura CRYPT_INTEGER_BLOB. Il membro |
|
pbData punta al primo Q di un BLOB di chiavi DSS. I dati sono sotto forma di struttura |
|
Dopo aver impostato i valori P, Q e G, è possibile eseguire una chiamata che specifica il valore KP_X per dwParam e NULL per il parametro pbData può essere eseguito alla funzione CryptSetKeyParam. In questo modo vengono generati i valori X e Y. |
Se un algoritmo
Valore | Significato |
---|---|
|
Imposta le informazioni per una chiave di |
|
Imposta i parametri pubblici (P, Q, G e così via) di una chiave DSS o Diffie-Hellman. L'handle di chiave per questa chiave deve trovarsi nello stato PREGEN, generato con il flag CRYPT_PREGEN. Il parametro pbData |
Se un
Valore | Significato |
---|---|
|
Questo tipo di valore può essere usato solo con chiavi RC2 ed è stato aggiunto a causa dell'implementazione della funzione CryptSetKeyParam nel provider di crittografia avanzato Microsoft prima di Windows 2000. Nell'implementazione precedente, le chiavi RC2 nel provider avanzato erano di 128 bit, ma la lunghezza effettiva della chiave usata per espandere le chiavi nella tabella delle chiavi era solo di 40 bit. In questo modo, la forza dell'algoritmo è stata ridotta a 40 bit. Per mantenere la compatibilità con le versioni precedenti, l'implementazione precedente rimarrà invariata. Tuttavia, la lunghezza effettiva della chiave può essere impostata su maggiore di 40 bit usando KP_EFFECTIVE_KEYLEN nella chiamata CryptSetKeyParam. La lunghezza effettiva della chiave viene passata nel parametro pbData come puntatore a un valore DWORD con il valore effettivo della lunghezza della chiave. La lunghezza minima effettiva della chiave nel provider di crittografia di Base Microsoft è 1 e il massimo è 40. Nel provider di crittografia avanzato Microsoft, il valore minimo è uno e il massimo è 1.024. La lunghezza della chiave deve essere impostata prima di crittografare o decrittografare con la chiave. |
|
Imposta la versione TLS (Transport Layer Security) più elevata consentita. Questa proprietà si applica solo alle chiavi SSL e TLS. Il parametro pbData |
|
Il vettore di inizializzazione è impostato su zero per impostazione predefinita per il provider di crittografia di base Microsoft. |
|
Impostare il valore della chiave per una chiave (DES) |
|
Impostare la modalità di riempimento. Il parametro pbData
|
|
pbData punta a un valore DWORD che specifica la modalità di crittografia da utilizzare. Per un elenco delle modalità di crittografia definite, vedere CryptGetKeyParam. La modalità di crittografia è impostata su CRYPT_MODE_CBC per impostazione predefinita per il provider di crittografia di base Microsoft. |
|
|
Se viene specificata una chiave RSA
Si noti che i valori seguenti non vengono usati:
- 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
Puntatore a un buffer inizializzato con il valore da impostare prima di chiamare CryptSetKeyParam. Il formato di questi dati varia a seconda del valore di dwParam.
[in] dwFlags
Utilizzato solo quando dwParam è KP_ALGID. Il parametro dwFlags viene usato per passare i valori di flag per la chiave abilitata. Il parametro dwFlags può contenere valori come la dimensione della chiave e gli altri valori di flag consentiti durante la generazione dello stesso tipo di chiave con CryptGenKey. Per informazioni sui valori dei flag consentiti, vedere CryptGenKey.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è diverso da zero (TRUE).
Se la funzione ha esito negativo, il valore restituito è zero (FALSE). Per informazioni sugli errori estesi, chiamare GetLastError.
I codici di errore preceduti da "NTE" vengono generati dal provider di servizi di configurazione specifico usato. Di seguito sono riportati alcuni possibili codici di errore.
Osservazioni
Se i parametri KP_Q, KP_P o KP_X vengono impostati su una chiave PREGEN Diffie-Hellman o DSS, le lunghezze della chiave devono essere compatibili con la lunghezza della chiave impostata utilizzando i 16 bit superiori del parametro dwFlags quando la chiave è stata creata usando CryptGenKey. Se non è stata impostata alcuna lunghezza della chiave in CryptGenKey, è stata usata la lunghezza predefinita della chiave. Verrà generato un errore se viene usata una lunghezza della chiave non predefinita per impostare P, Q o X.
Esempi
Per un esempio che usa questa funzione, vedere Programma C di esempio: Duplicare una chiave di sessione. Per altre informazioni sul codice che usa questa funzione, vedere Programma C di esempio: Impostazione e recupero dei parametri della chiave di sessione .
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows XP [solo app desktop] |
server minimo supportato | Windows Server 2003 [solo app desktop] |
piattaforma di destinazione | Finestre |
intestazione |
wincrypt.h |
libreria |
Advapi32.lib |
dll | Advapi32.dll |