Condividi tramite


Funzione BCryptImportKeyPair (bcrypt.h)

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

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 di BCRYPT_DH_KEY_BLOB immediatamente seguita dai dati chiave.
BCRYPT_DH_PUBLIC_BLOB
IL BLOB è un BLOB Diffie-Hellman chiave pubblica. Il buffer pbInput deve contenere una struttura di 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 di 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 delle chiavi 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 di 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 delle chiavi 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 curva ellittica (ECC) chiave privata. Il buffer pbInput deve contenere una struttura BCRYPT_ECCKEY_BLOB immediatamente seguita dai dati della chiave.
BCRYPT_ECCPUBLIC_BLOB
IL BLOB è una chiave pubblica ECC. Il buffer pbInput deve contenere una struttura BCRYPT_ECCKEY_BLOB immediatamente seguita dai dati della 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 usando CryptoAPI. Il provider primitivo Microsoft non supporta l'importazione di questo tipo BLOB.
LEGACY_DH_PRIVATE_BLOB
IL BLOB è un BLOB di chiavi private Diffie-Hellman versione 3 versione 3 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 l' BLOB della chiave da importare. Il parametro cbInput contiene le dimensioni di questo buffer. Il parametro pszBlobType specifica il tipo di chiave BLOB contenuto nel buffer.

[in] cbInput

Dimensioni, 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, ma non solo, 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.

Osservazioni

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 nella parametro hAlgorithm deve essere stato aperto usando il flag BCRYPT_PROV_DISPATCH e qualsiasi puntatore passato alla funzione BCryptImportKeyPair deve fare riferimento alla memoria non di pagina (o bloccata).

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

BCryptDestroyKey

BCryptExportKey

BCryptImportKey