Funzione BCryptSecretAgreement (bcrypt.h)

La funzione BCryptSecretAgreement crea un valore del contratto segreto da una chiave privata e una chiave pubblica.

Sintassi

NTSTATUS BCryptSecretAgreement(
  [in]  BCRYPT_KEY_HANDLE    hPrivKey,
  [in]  BCRYPT_KEY_HANDLE    hPubKey,
  [out] BCRYPT_SECRET_HANDLE *phAgreedSecret,
  [in]  ULONG                dwFlags
);

Parametri

[in] hPrivKey

Handle della chiave privata da usare per creare il valore del contratto segreto. Questa chiave e la chiave hPubKey devono provenire dallo stesso provider di algoritmi di crittografia CNG.

[in] hPubKey

Handle della chiave pubblica da usare per creare il valore del contratto segreto. Questa chiave e la chiave hPrivKey devono provenire dallo stesso provider di algoritmi di crittografia CNG.

[out] phAgreedSecret

Puntatore a un BCRYPT_SECRET_HANDLE che riceve un handle che rappresenta il valore del contratto segreto. Questo handle deve essere rilasciato passandolo alla funzione BCryptDestroySecret quando non è più necessaria.

[in] dwFlags

Set di flag che modificano il comportamento di questa funzione. Non sono definiti flag per questa funzione.

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
STATUS_SUCCESS
La funzione ha avuto esito positivo.
STATUS_INVALID_HANDLE
L'handle della chiave nel parametro hPrivKey o hPubKey non è valido.
STATUS_INVALID_PARAMETER
Uno o più parametri non sono validi.
STATUS_NOT_SUPPORTED
L'handle di chiave nel parametro hPrivKey non è una chiave di Diffie-Hellman.

Osservazioni

A seconda delle modalità del processore supportate da un provider, è possibile chiamare BCryptSecretAgreement dalla modalità utente o dal kernel. I chiamanti in modalità kernel possono essere eseguiti in PASSIVE_LEVELirQL o DISPATCH_LEVEL IRQL. Se il livello IRQL corrente è DISPATCH_LEVEL, gli handle forniti nel hPrivKey e parametri hPubKey devono essere derivati da un handle di algoritmo restituito da un provider aperto tramite il flag BCRYPT_PROV_DISPATCH e qualsiasi puntatore passato alla funzione BCryptSecretAgreement deve fare riferimento a memoria non bloccata o non a pagina.

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.

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

Vedere anche

BCryptDestroySecret