Gestori di estensioni
A partire dal formato certificato X.509 versione 3, un certificato può contenere estensioni di certificato. Per il contenuto di un certificato X.509, vedere Proprietà del certificato. Queste estensioni indicano informazioni aggiuntive. Ad esempio, un'estensione può indicare informazioni aggiuntive sull'identificazione del soggetto oppure può indicare informazioni sull'utilizzo delle chiavi, che specificano le attività (ad esempio la firma o la crittografia) per cui è possibile usare una chiave. Viene definito un set di estensioni standard per l'uso dell'applicazione e possono essere personalizzate anche le estensioni.
Ogni estensione ha una stringa di identificatore di oggetto associata che identifica il tipo di informazioni aggiuntive e una struttura di dati che contiene queste informazioni. Ad esempio, l'identificatore dell'oggetto di utilizzo della chiave è "2.5.29.15", che indica le informazioni sull'utilizzo delle chiavi. La struttura dei dati associata è un CRYPT_BIT_BLOB (campo di bit) che specifica la modalità di utilizzo della chiave.
È possibile aggiungere un'estensione a un certificato prima che venga emessa. Quando il certificato viene emesso, tutte le estensioni abilitate fanno parte del certificato. Se un'estensione è contrassegnata come critica, l'uso deve essere noto dall'applicazione using e l'applicazione deve rispettare la finalità o il valore dell'estensione. Servizi certificati consente l'impostazione delle estensioni in un certificato non rilasciato tramite metodi forniti da ICertAdmin e ICertServerPolicy. Per informazioni dettagliate sulle estensioni del certificato, vedere CERT_EXTENSION nella documentazione di CryptoAPI. Per informazioni sulle strutture dei dati comuni dell'estensione del certificato, vedere Strutture di estensione del certificato X.509.
Il gestore di estensioni è un oggetto COM che fornisce routine per la codifica delle estensioni e dei tipi di dati più complessi, ma usati comunemente, ad esempio IA5String o PrintableString.
Le estensioni con i tipi di dati DATE, LONG e BSTR non richiedono un gestore di estensione. Il modulo criteri chiama semplicemente ICertServerPolicy::SetCertificateExtension con il parametro Type impostato su un valore che rappresenta il tipo di dati dell'estensione: PROPTYPE_DATE, PROPTYPE_LONG o PROPTYPE_STRING. Passa quindi l'estensione al motore server. Il motore server esegue a sua volta la codifica ASN.1 ( Abstract Syntax Notation One ) prima di archiviare l'estensione nel certificato.
Tuttavia, le estensioni con tipi di dati diversi da questi tipi predefiniti devono essere codificate da un gestore di estensioni prima che il modulo criteri li passi al motore del server. Quando il modulo criteri chiama ICertServerPolicy::SetCertificateExtension per passare un'estensione con codifica ASN.1 al motore del server, deve impostare il parametro Type su PROPTYPE_BINARY. Il motore server archivia quindi semplicemente questa estensione codificata nel certificato.
Il gestore dell'estensione predefinito, Certenc.dll, esporta una serie di interfacce ICertEncodeXXX e può essere chiamato dal modulo criteri. Le informazioni sul tipo necessarie sono contenute anche in Certencl.dll che viene fornito in Platform Software Development Kit (SDK). Ogni interfaccia fornisce un metodo Encode che restituisce un'estensione del certificato con codifica ASN.1 al modulo criteri in formato binario. Il modulo criteri può quindi impostare l'estensione in un certificato chiamando il metodo ICertServerPolicy::SetCertificateExtension .
Per altre informazioni, vedere Scrittura di gestori di estensioni personalizzati.