Funzione CryptFindOIDInfo (wincrypt.h)

La funzione CryptFindOIDInfo recupera la prima struttura predefinita o registrata CRYPT_OID_INFO che corrisponde a un tipo di chiave e una chiave specificati. La ricerca può essere limitata agli identificatori di oggetto (OID) all'interno di un gruppo OID specificato.

Usare CryptEnumOIDInfo per elencare tutti o i subset selezionati di strutture CRYPT_OID_INFO . È possibile registrare nuove strutture CRYPT_OID_INFO usando CryptRegisterOIDInfo. Gli IDE registrati dall'utente possono essere rimossi dall'elenco di IDE registrati usando CryptUnregisterOIDInfo.

I nuovi OID possono essere inseriti nell'elenco degli URI registrati prima o dopo le voci predefinite. Poiché CryptFindOIDInfo restituisce la prima chiave nell'elenco che corrisponde ai criteri di ricerca, un OID appena registrato posizionato prima di una voce OID predefinita con la stessa chiave esegue l'override di una voce predefinita.

Sintassi

PCCRYPT_OID_INFO CryptFindOIDInfo(
  [in] DWORD dwKeyType,
  [in] void  *pvKey,
  [in] DWORD dwGroupId
);

Parametri

[in] dwKeyType

Specifica il tipo di chiave da utilizzare per la ricerca di informazioni OID.

Questo parametro può essere uno dei tipi di chiave seguenti.

CRYPT_OID_INFO_OID_KEY

pvKey è l'indirizzo di una stringa ANSI con terminazione Null che contiene la stringa OID da trovare.

CRYPT_OID_INFO_NAME_KEY

pvKey è l'indirizzo di una stringa Unicode con terminazione Null che contiene il nome da trovare.

CRYPT_OID_INFO_ALGID_KEY

pvKey è l'indirizzo di una variabile ALG_ID . Sono supportati i ALG_IDseguenti:

Algoritmi hash:

Algoritmi di crittografia simmetrica:

Algoritmi a chiave pubblica:

Gli algoritmi non elencati sono supportati tramite l'API di crittografia: solo CNG (Next Generation ); usare invece CRYPT_OID_INFO_CNG_ALGID_KEY.

CRYPT_OID_INFO_SIGN_KEY

pvKey è l'indirizzo di una matrice di due ALG_IDin cui il primo elemento contiene l'identificatore dell'algoritmo hash e il secondo elemento contiene l'identificatore dell'algoritmo di chiave pubblica.

Sono supportate le combinazioni di ALG_ID seguenti.

Identificatore dell'algoritmo di firma Identificatore dell'algoritmo hash
CALG_RSA_SIGN
CALG_SHA1
CALG_MD5
CALG_MD4
CALG_MD2
CALG_DSS_SIGN
CALG_SHA1
CALG_NO_SIGN
CALG_SHA1
CALG_NO_SIGN
 

Gli algoritmi non elencati sono supportati solo tramite CNG; usare invece CRYPT_OID_INFO_CNG_SIGN_KEY.

CRYPT_OID_INFO_CNG_ALGID_KEY

pvKey è l'indirizzo di una stringa Unicode con terminazione Null che contiene l'identificatore dell'algoritmo CNG da trovare. Può trattarsi di uno degli identificatori di algoritmo CNG predefiniti o di un altro identificatore di algoritmo registrato.

Windows Server 2003 R2 Windows Server 2003 : Questo tipo di chiave non è supportato.

CRYPT_OID_INFO_CNG_SIGN_KEY

pvKey è l'indirizzo di una matrice di due puntatori di stringa Unicode con terminazione Null in cui la prima stringa contiene l'identificatore dell'algoritmo hash CNG e la seconda stringa contiene l'identificatore dell'algoritmo CNG a chiave pubblica. Possono essere provenienti dagli identificatori di algoritmo CNG predefiniti o da un altro identificatore di algoritmo registrato.

Windows Server 2003 R2 Windows Server 2003 : Questo tipo di chiave non è supportato.

Facoltativamente, è possibile specificare i tipi di chiave seguenti nel parametro dwKeyType usando l'operatore LOGICO OR (|).

Valore Significato
CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG
Ignora le chiavi pubbliche nel gruppo di CRYPT_PUBKEY_ALG_OID_GROUP_ID contrassegnate in modo esplicito con il flag CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG.
CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG
Ignora le chiavi pubbliche nel gruppo di CRYPT_PUBKEY_ALG_OID_GROUP_ID contrassegnate in modo esplicito con il flag CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG.

[in] pvKey

Indirizzo di un buffer che contiene informazioni di ricerca aggiuntive. Questo parametro dipende dal valore del parametro dwKeyType . Per altre informazioni, vedere la tabella in dwKeyType.

[in] dwGroupId

Identificatore del gruppo da utilizzare per la ricerca di informazioni OID. L'impostazione di questo parametro su zero esegue la ricerca in tutti i gruppi in base al parametro dwKeyType . In caso contrario, viene eseguita la ricerca solo nell'elemento dwGroupId indicato.

Per informazioni sul codice che elenca le informazioni OID in base all'identificatore del gruppo, vedere CryptEnumOIDInfo.

Facoltativamente, è possibile specificare il flag seguente nel parametro dwGroupId usando l'operatore LOGICO OR (|).

Valore Significato
CRYPT_OID_DISABLE_SEARCH_DS_FLAG
Disabilita la ricerca nel server di directory.
 

La lunghezza del bit spostata a sinistra a 16 bit può essere specificata nel parametro dwGroupId usando l'operatore OR logico (|). Per altre informazioni, vedere la sezione Osservazioni.

Valore restituito

Restituisce un puntatore a una struttura costante di tipo CRYPT_OID_INFO. Il puntatore restituito non deve essere liberato. Quando la chiave e il gruppo specificati non vengono trovati, viene restituito NULL .

Commenti

La funzione CryptFindOIDInfo esegue una ricerca in Active Directory per recuperare i nomi descrittivi degli OID nelle condizioni seguenti:

  • Il tipo di chiave nel parametro dwKeyType è impostato su CRYPT_OID_INFO_OID_KEY o CRYPT_OID_INFO_NAME_KEY.
  • Nessun identificatore di gruppo specificato nel parametro dwGroupId o groupID fa riferimento agli OID EKU, agli OID dei criteri o agli ID modello.
Il recupero di rete del nome descrittivo può essere eliminato chiamando la funzione con il flag CRYPT_OID_DISABLE_SEARCH_DS_FLAG .

La lunghezza del bit spostata a sinistra a 16 bit può essere specificata nel parametro dwGroupId usando l'operatore OR logico (|). Questa opzione è applicabile solo alle voci del gruppo di CRYPT_ENCRYPT_ALG_OID_GROUP_ID con una lunghezza di bit specificata nel membro ExtraInfo della struttura CRYPT_OID_INFO . Attualmente sono disponibili solo gli algoritmi di crittografia AES. La costante CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT può essere utilizzata per eseguire lo spostamento. Ad esempio, per trovare le informazioni OID per BCRYPT_AES_ALGORITHM con lunghezza di bit uguale a 192, chiamare CryptFindOIDInfo come indicato di seguito.


DWORD dwBitLen = 192;

PCCRYPT_OID_INFO pOIDInfo = CryptFindOIDInfo(
     CRYPT_OID_INFO_CNG_ALGID_KEY,
     (void *) BCRYPT_AES_ALGORITHM,
     CRYPT_ENCRYPT_ALG_OID_GROUP_ID |
         (dwBitLen << CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT)
     );


Requisiti

Requisito Valore
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione wincrypt.h
Libreria Crypt32.lib
DLL Crypt32.dll

Vedi anche

ALG_ID

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_OID_INFO

CryptRegisterOIDInfo

CryptUnregisterOIDInfo

Funzioni di supporto OID