Funzione BCryptOpenAlgorithmProvider (bcrypt.h)
La funzione BCryptOpenAlgorithmProvider carica e inizializza un provider CNG.
Sintassi
NTSTATUS BCryptOpenAlgorithmProvider(
[out] BCRYPT_ALG_HANDLE *phAlgorithm,
[in] LPCWSTR pszAlgId,
[in] LPCWSTR pszImplementation,
[in] ULONG dwFlags
);
Parametri
[out] phAlgorithm
Puntatore a una variabile BCRYPT_ALG_HANDLE che riceve l'handle del provider CNG. Al termine dell'uso di questo handle, rilasciarlo passandolo alla funzione BCryptCloseAlgorithmProvider.
[in] pszAlgId
Puntatore a una stringa Unicode con terminazione Null che identifica l'algoritmo di crittografia richiesto. Può trattarsi di uno degli identificatori di algoritmo CNG standard o dell'identificatore per un altro algoritmo registrato.
[in] pszImplementation
Puntatore a una stringa Unicode con terminazione Null che identifica il provider specifico da caricare. Si tratta dell'alias registrato del provider primitivo di crittografia. Questo parametro è facoltativo e può essere NULL se non è necessario. Se questo parametro è NULL, verrà caricato il provider predefinito per l'algoritmo specificato.
Di seguito sono riportati i nomi predefiniti dei provider.
[in] dwFlags
Flag che modificano il comportamento della funzione. Può essere zero o una combinazione di uno o più dei valori seguenti.
Valore | Significato |
---|---|
|
Il provider eseguirà l'algoritmo Hash-Based Message Authentication Code (HMAC) con l'algoritmo hash specificato. Questo flag viene usato solo dai provider di algoritmi hash. |
|
Carica il provider nel pool di memoria non di paging. Se questo flag non è presente, il provider viene caricato nel pool di memoria di paging. Quando si specifica questo flag, l'handle restituito non deve essere chiuso prima che tutti gli oggetti dipendenti siano stati liberati.
Nota Questo flag è supportato solo in modalità kernel e consente l'elaborazione delle operazioni successive sul provider a livello di dispatch. Se il provider non supporta la chiamata a livello di invio, verrà restituito un errore quando viene aperto usando questo flag.
|
|
Crea un oggetto hash riutilizzabile. L'oggetto può essere usato per una nuova operazione di hashing immediatamente dopo aver chiamato BCryptFinishHash. Per altre informazioni, vedere Creazione di un hash con CNG.
Windows Server 2008 R2, Windows 7, Windows Server 2008 e Windows Vista: Questo flag non è supportato. |
Valore restituito
Restituisce un codice di stato che indica l'esito positivo o negativo della funzione.
I codici restituiti possibili includono, ma non solo, quanto segue.
Codice restituito | Descrizione |
---|---|
|
La funzione ha avuto esito positivo. |
|
Non è stato trovato alcun provider per l'ID algoritmo specificato. |
|
Uno o più parametri non sono validi. |
|
Si è verificato un errore di allocazione della memoria. |
Osservazioni
A causa del numero e del tipo di operazioni necessarie per trovare, caricare e inizializzare un provider di algoritmi, la funzione BCryptOpenAlgorithmProvider è una funzione a elevato utilizzo di tempo. Per questo motivo, è consigliabile memorizzare nella cache tutti gli handle del provider di algoritmi che verranno usati più volte, anziché aprire e chiudere i provider di algoritmi oltre e oltre.
BCryptOpenAlgorithmProvider può essere chiamato dalla modalità utente o dalla modalità kernel. I chiamanti in modalità kernel devono essere in esecuzione in PASSIVE_LEVELIRQL.
Per chiamare questa funzione in modalità kernel, usare Cng.lib, che fa parte del Driver Development Kit (DDK). Windows Server 2008 e Windows Vista: Per chiamare questa funzione in modalità kernel, usare Ksecdd.lib.
A partire da Windows 10, CNG non segue più ogni aggiornamento alla configurazione della crittografia. Alcune modifiche, ad esempio l'aggiunta di un nuovo provider predefinito o la modifica dell'ordine di preferenza dei provider di algoritmi, potrebbero richiedere un riavvio. Per questo motivo, è necessario riavviare prima di chiamare BCryptOpenAlgorithmProvider con qualsiasi provider appena configurato.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows Vista [app desktop | App UWP] |
server minimo supportato | Windows Server 2008 [app desktop | App UWP] |
piattaforma di destinazione | Finestre |
intestazione |
bcrypt.h |
libreria |
Bcrypt.lib |
dll | Bcrypt.dll |