Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Annotazioni
Alcune informazioni riguardano un prodotto in versione preliminare che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non fornisce alcuna garanzia, espressa o implicita, in relazione alle informazioni fornite qui. La funzionalità descritta in questo argomento è disponibile nelle versioni non definitive del Windows Insider Preview.
La funzione BCryptDecapsulate esegue l'operazione di decapsulation di un meccanismo di incapsulamento chiave (KEM). Accetta un testo crittografato KEM e decrittografa con la chiave privata fornita, restituendo la chiave privata condivisa.
Se il testo crittografato è formattato correttamente ma non corrisponde alla chiave di decapsulation, questa API avrà esito positivo, ma verrà generata una chiave privata condivisa casuale.
Sintassi
NTSTATUS BCryptDecapsulate(
_In_ BCRYPT_KEY_HANDLE hKey,
_In_reads_bytes_(cbCipherText)
PUCHAR pbCipherText,
_In_ ULONG cbCipherText,
_Out_writes_bytes_to_opt_(cbSecretKey, *pcbSecretKey)
PUCHAR pbSecretKey,
_In_ ULONG cbSecretKey,
_Out_ ULONG *pcbSecretKey,
_In_ ULONG dwFlags
);
Parametri
hKey[in]
Handle della chiave da usare per decapsulare il testo crittografato KEM. Deve essere la chiave privata (decapsulation) che corrisponde alla chiave pubblica (incapsulamento) usata per produrre il testo crittografato KEM. L'handle di chiave viene ottenuto da una delle funzioni di creazione della coppia di chiavi, ad esempio BCryptGenerateKeyPair o BCryptImportKeyPair.
pbCipherText[in]
Puntatore a un buffer contenente il testo crittografato KEM. La funzione BCryptEncapsulate può essere usata per creare un testo crittografato KEM.
cbCipherText[in]
Dimensioni, in byte, del buffer pbCipherText .
pbSecretKey[out]
Puntatore a un buffer che riceve la chiave privata condivisa. Per altre informazioni, vedere le osservazioni .
cbSecretKey[in]
Dimensione, in byte, del buffer pbSecretKey .
pcbSecretKey[out]
Puntatore a una variabile ULONG che riceve il numero di byte scritti nel buffer pbSecretKey .
Se pbSecretKey è NULL
, riceve le dimensioni, in byte, necessarie per la chiave privata condivisa.
Per altre informazioni, vedere le osservazioni .
dwFlags[in]
Riservato, deve essere zero.
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 di ritorno | Descrizione |
---|---|
STATUS_SUCCESS |
La funzione ha avuto esito positivo. |
STATUS_INVALID_PARAMETER |
Uno o più parametri obbligatori (hKey, pcbSecretKey, pbCipherText) è NULL o uno dei parametri ha un valore non valido. |
STATUS_INVALID_BUFFER_SIZE |
Una dimensione del buffer (cbSecretKey, cbCipherText) non corrisponde alle dimensioni previste per i parametri KEM associati alla chiave di decapsulation. |
STATUS_BUFFER_TOO_SMALL |
Una dimensione del buffer di output (cbSecretKey) è troppo piccola per l'operazione di decapsulation dei risultati per i parametri KEM associati alla chiave di decapsulation. pcbSecretKey riceve il numero di byte necessari per pbSecretKey. |
Osservazioni:
Per eseguire una query sulle dimensioni necessarie del buffer pbSecretKey necessario per la chiave privata condivisa KEM, chiamare BCryptDecapsulate con pbSecretKeyNULL
. Le dimensioni richieste verranno restituite in pcbSecretKey. Questa query è efficiente e restituisce le dimensioni senza eseguire il decapsulation.
In modo equivalente, usare BCryptGetProperty per eseguire una query sulla proprietà BCRYPT_KEM_SHARED_SECRET_LENGTH dell'algoritmo o dell'handle di chiave.
Per gli algoritmi KEM attualmente supportati (ML-KEM), la lunghezza del segreto condiviso è una dimensione costante per un determinato algoritmo.
Osservazioni aggiuntive
Dato un testo crittografato non valido, ma con dimensioni corrette, l'operazione di decapsulation ML-KEM rifiuterà in modo implicito il testo crittografato restituendo esito positivo in tempo uguale a un'operazione di decapsulation valida, con output di chiave privata condivisa pseudo-casuale. In questo modo i protocolli di livello superiore non vengono eseguiti in un secondo momento quando le chiavi simmetriche dei peer non corrispondono. Di conseguenza, il decapsulato avrà esito negativo solo se sono presenti errori di programmazione (ad esempio dimensioni non corrette, uso di hKey non inizializzati) o qualcosa di fondamentalmente va storto con l'ambiente (ovvero l'allocazione della memoria interna non riesce o il test di coerenza interna rileva un errore hardware).
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Insiders Preview [solo app desktop] |
Server minimo supportato | Windows Insiders Preview [solo app desktop] |
Biblioteca | Bcrypt.lib |
DLL | Bcrypt.dll |