Funzione CryptSetProvParam (wincrypt.h)

Importante Questa API è deprecata. Il software nuovo ed esistente deve iniziare a usare le API cryptography next generation. Microsoft potrebbe rimuovere questa API nelle versioni future.
 
La funzione CryptSetProvParam personalizza le operazioni di un provider di servizi di crittografia (CSP). Questa funzione viene comunemente usata per impostare un descrittore di sicurezza nel contenitore di chiavi associato a un CSP per controllare l'accesso alle chiavi private in tale contenitore di chiavi.

Sintassi

BOOL CryptSetProvParam(
  [in] HCRYPTPROV hProv,
  [in] DWORD      dwParam,
  [in] const BYTE *pbData,
  [in] DWORD      dwFlags
);

Parametri

[in] hProv

Handle di un provider di servizi di configurazione per il quale impostare i valori. Questo handle deve essere già stato creato usando la funzione CryptAcquireContext .

[in] dwParam

Specifica il parametro da impostare. Può trattarsi di uno dei valori seguenti.

Valore Significato
PP_CLIENT_HWND
1 (0x1)
Impostare l'handle di finestra utilizzato dal provider come elemento padre di qualsiasi finestra di dialogo creata. pbData contiene un puntatore a un HWND che contiene l'handle della finestra padre.

Questo parametro deve essere impostato prima di chiamare CryptAcquireContext perché molti CSP visualizzeranno un'interfaccia utente quando viene chiamato CryptAcquireContext . È possibile passare NULL per il parametro hProv per impostare questo handle di finestra per tutti i contesti di crittografia acquisiti successivamente all'interno di questo processo.

PP_DELETEKEY
24 (0x18)
Eliminare la chiave temporanea associata a un contesto hash, di crittografia o di verifica. Questa operazione consente di liberare memoria e cancellare le impostazioni del Registro di sistema associate alla chiave.
PP_KEYEXCHANGE_ALG
Questa costante non viene utilizzata.
PP_KEYEXCHANGE_PIN
32 (0x20)
Specifica che il PIN di scambio delle chiavi è contenuto in pbData. Il PIN è rappresentato come stringa ASCII con terminazione Null.
PP_KEYEXCHANGE_KEYSIZE
Questa costante non viene utilizzata.
PP_KEYSET_SEC_DESCR
8 (0x8)
Imposta il descrittore di sicurezza nel contenitore di archiviazione delle chiavi. Il parametro pbData è l'indirizzo di una struttura SECURITY_DESCRIPTOR che contiene il nuovo descrittore di sicurezza per il contenitore di archiviazione delle chiavi.
PP_PIN_PROMPT_STRING
44 (0x2C)
Imposta una stringa di richiesta alternativa da visualizzare all'utente quando viene richiesto il PIN dell'utente. Il parametro pbData è un puntatore a una stringa Unicode con terminazione Null.
PP_ROOT_CERTSTORE
46 (0x2E)
Imposta l'archivio certificati radice per la smart card. Il provider copierà i certificati radice da questo archivio nella smart card.

Il parametro pbData è una variabile HCERTSTORE che contiene l'handle del nuovo archivio certificati. Il provider copierà i certificati dall'archivio durante questa chiamata, pertanto è possibile chiudere questo archivio dopo la chiamata a questa funzione.

Windows XP e Windows Server 2003: Questo parametro non è supportato.

PP_SIGNATURE_ALG
Questa costante non viene utilizzata.
PP_SIGNATURE_PIN
33 (0x21)
Specifica il PIN della firma. Il parametro pbData è una stringa ASCII con terminazione Null che rappresenta il PIN.
PP_SIGNATURE_KEYSIZE
Questa costante non viene utilizzata.
PP_UI_PROMPT
21 (0x15)
Per un provider di smart card, imposta la stringa di ricerca visualizzata all'utente come richiesta di inserire la smart card. Questa stringa viene passata come membro lpstrSearchDesc della struttura OPENCARDNAME_EX passata alla funzione SCardUIDlgSelectCard . Questa stringa viene utilizzata per la durata del processo chiamante.

Il parametro pbData è un puntatore a una stringa Unicode con terminazione Null.

PP_USE_HARDWARE_RNG
38 (0x26)
Specifica che il provider di servizi di configurazione deve usare esclusivamente il generatore di numeri casuali hardware (RNG). Quando viene impostata PP_USE_HARDWARE_RNG , i valori casuali vengono acquisiti esclusivamente dal RNG hardware e non vengono usate altre origini. Se un RNG hardware è supportato dal CSP e può essere usato esclusivamente, la funzione ha esito positivo e restituisce TRUE; in caso contrario, la funzione ha esito negativo e restituisce FALSE. Il parametro pbData deve essere NULL e dwFlags deve essere zero quando si usa questo valore.

Nessun provider di servizi di configurazione Microsoft attualmente supporta l'uso di un RNG hardware.

PP_USER_CERTSTORE
42 (0x2A)
Specifica l'archivio certificati utente per la smart card. Questo archivio certificati contiene tutti i certificati utente archiviati nella smart card. I certificati in questo archivio vengono codificati tramite codifica PKCS_7_ASN_ENCODING o X509_ASN_ENCODING e devono contenere la proprietà CERT_KEY_PROV_INFO_PROP_ID .

Il parametro pbData è una variabile HCERTSTORE che riceve l'handle di un archivio certificati in memoria. Quando questo handle non è più necessario, il chiamante deve chiuderlo usando la funzione CertCloseStore .

Windows Server 2003 e Windows XP: Questo parametro non è supportato.

PP_SECURE_KEYEXCHANGE_PIN
47 (0x2F)
Specifica che un PIN di scambio di chiavi crittografato è contenuto in pbData. Il parametro pbData contiene un DATA_BLOB.
PP_SECURE_SIGNATURE_PIN
48 (0x30)
Specifica che un PIN della firma crittografata è contenuto in pbData. Il parametro pbData contiene un DATA_BLOB.
PP_SMARTCARD_READER
43 (0x2B)
Specifica il nome del lettore di smart card. Il parametro pbData è l'indirizzo di una matrice di caratteri ANSI che contiene una stringa ANSI con terminazione Null contenente il nome del lettore di smart card.

Windows Server 2003 e Windows XP: Questo parametro non è supportato.

PP_SMARTCARD_GUID
45 (0x2D)
Specifica l'identificatore della smart card. Il parametro pbData è l'indirizzo di una struttura GUID che contiene l'identificatore della smart card.

Windows Server 2003 e Windows XP: Questo parametro non è supportato.

[in] pbData

Puntatore a un buffer di dati che contiene il valore da impostare come parametro del provider. La forma di questi dati varia a seconda del valore dwParam . Se dwParam contiene PP_USE_HARDWARE_RNG, questo parametro deve essere NULL.

[in] dwFlags

Se dwParam contiene PP_KEYSET_SEC_DESCR, dwFlags contiene i flag di bit applicabili SECURITY_INFORMATION applicabili, come definito in Platform SDK. La sicurezza del contenitore chiave viene gestita usando SetFileSecurity e GetFileSecurity.

Questi flag di bit possono essere combinati usando un'operazione BIT-OR . Per altre informazioni, vedere CryptGetProvParam.

Se dwParam è PP_USE_HARDWARE_RNG o PP_DELETEKEY, è necessario impostare dwFlags su zero.

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 sull'errore estese, chiamare GetLastError.

I codici di errore preceduti da "NTE" vengono generati dal particolare CSP usato. I codici di errore includono quanto segue.

Codice restituito Descrizione
ERROR_BUSY
Il contesto CSP è attualmente usato da un altro processo.
ERROR_INVALID_HANDLE
Uno dei parametri specifica un handle non valido.
ERROR_INVALID_PARAMETER
Uno dei parametri contiene un valore non valido. Questo è più spesso un puntatore che non è valido.
NTE_BAD_FLAGS
Il parametro dwFlags è diverso da zero o il buffer pbData contiene un valore non valido.
NTE_BAD_TYPE
Il parametro dwParam specifica un parametro sconosciuto.
NTE_BAD_UID
Impossibile trovare il contesto CSP specificato quando è stata creata la chiave hKey .
NTE_FAIL
La funzione non è riuscita in modo imprevisto.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wincrypt.h
Libreria Advapi32.lib
DLL Advapi32.dll

Vedi anche

Cryptacquirecontext

CryptGetProvParam

CryptSetKeyParam

Funzioni del provider di servizi