Funzione BCryptImportKeyPair (bcrypt.h)

La funzione BCryptImportKeyPair importa una coppia di chiavi pubblica/privata da un BLOB di chiavi. La funzione BCryptImportKey viene usata per importare una coppia di chiavi simmetriche .

Sintassi

NTSTATUS BCryptImportKeyPair(
  [in]      BCRYPT_ALG_HANDLE hAlgorithm,
  [in, out] BCRYPT_KEY_HANDLE hImportKey,
  [in]      LPCWSTR           pszBlobType,
  [out]     BCRYPT_KEY_HANDLE *phKey,
  [in]      PUCHAR            pbInput,
  [in]      ULONG             cbInput,
  [in]      ULONG             dwFlags
);

Parametri

[in] hAlgorithm

Handle del provider di algoritmi per importare la chiave. Questo handle viene ottenuto chiamando la funzione BCryptOpenAlgorithmProvider .

[in, out] hImportKey

Questo parametro non è attualmente utilizzato e deve essere NULL.

[in] pszBlobType

Stringa Unicode con terminazione Null contenente un identificatore che specifica il tipo di BLOB contenuto nel buffer pbInput . Può trattarsi di uno dei valori seguenti.

Valore Significato
BCRYPT_DH_PRIVATE_BLOB
Il BLOB è un BLOB Diffie-Hellman COPPIA di chiavi pubblica/privata. Il buffer pbInput deve contenere una struttura BCRYPT_DH_KEY_BLOB immediatamente seguita dai dati chiave.
BCRYPT_DH_PUBLIC_BLOB
IL BLOB è un BLOB a chiave pubblica Diffie-Hellman. Il buffer pbInput deve contenere una struttura BCRYPT_DH_KEY_BLOB immediatamente seguita dai dati chiave.
BCRYPT_DSA_PRIVATE_BLOB
Il BLOB è un BLOB di coppia di chiavi pubblica/privata DSA. Il buffer pbInput deve contenere una struttura BCRYPT_DSA_KEY_BLOB o BCRYPT_DSA_KEY_BLOB_V2 immediatamente seguita dai dati chiave. BCRYPT_DSA_KEY_BLOB viene usato per le lunghezze di chiave da 512 a 1024 bit. BCRYPT_DSA_KEY_BLOB_V2 viene usato per le lunghezze di chiave che superano i 1024 bit, ma sono minori o uguali a 3072 bit.

Windows 8: inizia il supporto per BCRYPT_DSA_KEY_BLOB_V2.

BCRYPT_DSA_PUBLIC_BLOB
IL BLOB è un BLOB di chiave pubblica DSA. Il buffer pbInput deve contenere una struttura BCRYPT_DSA_KEY_BLOB o BCRYPT_DSA_KEY_BLOB_V2 immediatamente seguita dai dati chiave. BCRYPT_DSA_KEY_BLOB viene usato per le lunghezze di chiave da 512 a 1024 bit. BCRYPT_DSA_KEY_BLOB_V2 viene usato per le lunghezze di chiave che superano i 1024 bit, ma sono minori o uguali a 3072 bit.

Windows 8: inizia il supporto per BCRYPT_DSA_KEY_BLOB_V2.

BCRYPT_ECCPRIVATE_BLOB
IL BLOB è una chiave privata ecc (elliptic curve cryptography). Il buffer pbInput deve contenere una struttura BCRYPT_ECCKEY_BLOB immediatamente seguita dai dati chiave.
BCRYPT_ECCPUBLIC_BLOB
IL BLOB è una chiave pubblica ECC. Il buffer pbInput deve contenere una struttura BCRYPT_ECCKEY_BLOB immediatamente seguita dai dati chiave.
BCRYPT_PUBLIC_KEY_BLOB
IL BLOB è una chiave pubblica generica di qualsiasi tipo. Il tipo di chiave in questo BLOB è determinato dal membro Magic della struttura BCRYPT_KEY_BLOB .
BCRYPT_PRIVATE_KEY_BLOB
IL BLOB è una chiave privata generica di qualsiasi tipo. La chiave privata non contiene necessariamente la chiave pubblica. Il tipo di chiave in questo BLOB è determinato dal membro Magic della struttura BCRYPT_KEY_BLOB .
BCRYPT_RSAPRIVATE_BLOB
Il BLOB è un BLOB di coppia di chiavi pubblica/privata RSA. Il buffer pbInput deve contenere una struttura BCRYPT_RSAKEY_BLOB immediatamente seguita dai dati chiave.
BCRYPT_RSAPUBLIC_BLOB
Il BLOB è un BLOB di chiave pubblica RSA. Il buffer pbInput deve contenere una struttura BCRYPT_RSAKEY_BLOB immediatamente seguita dai dati chiave.
LEGACY_DH_PUBLIC_BLOB
Il BLOB è un BLOB di chiave pubblica Diffie-Hellman esportato tramite CryptoAPI. Il provider primitivo Microsoft non supporta l'importazione di questo tipo BLOB.
LEGACY_DH_PRIVATE_BLOB
IL BLOB è un BLOB di chiave privata Diffie-Hellman versione 3 legacy che contiene una coppia di chiavi pubblica/privata Diffie-Hellman esportata tramite CryptoAPI.
LEGACY_DSA_PRIVATE_BLOB
Il BLOB è un BLOB di coppia di chiavi pubblica/privata DSA esportato tramite CryptoAPI.
LEGACY_DSA_PUBLIC_BLOB
Il BLOB è un BLOB di chiave pubblica DSA esportato tramite CryptoAPI. Il provider primitivo Microsoft non supporta l'importazione di questo tipo BLOB.
LEGACY_DSA_V2_PRIVATE_BLOB
Il BLOB è una chiave privata DSA versione 2 in un formato che può essere importato tramite CryptoAPI.
LEGACY_RSAPRIVATE_BLOB
Il BLOB è un BLOB di coppia di chiavi pubblica/privata RSA esportato tramite CryptoAPI.
LEGACY_RSAPUBLIC_BLOB
IL BLOB è un BLOB di chiave pubblica RSA esportato tramite CryptoAPI. Il provider primitivo Microsoft non supporta l'importazione di questo tipo BLOB.

[out] phKey

Puntatore a un BCRYPT_KEY_HANDLE che riceve l'handle della chiave importata. Questo handle viene usato nelle funzioni successive che richiedono una chiave, ad esempio BCryptSignHash. Questo handle deve essere rilasciato quando non è più necessario passandolo alla funzione BCryptDestroyKey .

[in] pbInput

Indirizzo di un buffer che contiene il BLOB della chiave da importare. Il parametro cbInput contiene le dimensioni di questo buffer. Il parametro pszBlobType specifica il tipo di CHIAVE che contiene questo buffer.

[in] cbInput

Dimensione, in byte, del buffer pbInput .

[in] dwFlags

Set di flag che modificano il comportamento di questa funzione. Può essere zero o il valore seguente.

Valore Significato
BCRYPT_NO_KEY_VALIDATION
Non convalidare la parte pubblica della coppia di chiavi.

Valore restituito

Restituisce un codice di stato che indica l'esito positivo o negativo della funzione.

I codici restituiti possibili includono, a titolo esemplificativo, quanto segue.

Codice restituito Descrizione
STATUS_SUCCESS
La funzione ha avuto esito positivo.
STATUS_INVALID_HANDLE
L'handle dell'algoritmo nel parametro hAlgorithm non è valido.
STATUS_INVALID_PARAMETER
Uno o più parametri non sono validi.
STATUS_NOT_SUPPORTED
Il provider di algoritmi specificato dal parametro hAlgorithm non supporta il tipo BLOB specificato dal parametro pszBlobType .

Commenti

A seconda delle modalità del processore supportate da un provider, BCryptImportKeyPair può essere chiamato dalla modalità utente o dalla modalità kernel. I chiamanti in modalità kernel possono essere eseguiti in PASSIVE_LEVELIRQL o DISPATCH_LEVEL IRQL. Se il livello IRQL corrente è DISPATCH_LEVEL, l'handle fornito nel parametro hAlgorithm deve essere stato aperto usando il flag BCRYPT_PROV_DISPATCH e tutti i puntatori passati alla funzione BCryptImportKeyPair devono fare riferimento a memoria non di paging (o bloccata).

Per chiamare questa funzione in modalità kernel, usare Cng.lib, che fa parte di Driver Development Kit (DDK). Windows Server 2008 e Windows Vista: Per chiamare questa funzione in modalità kernel, usare Ksecdd.lib.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2008 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione bcrypt.h
Libreria Bcrypt.lib
DLL Bcrypt.dll

Vedi anche

BCryptDestroyKey

BCryptExportKey

BCryptImportKey