Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Mezi funkcemi CryptoAPI, které je možné rozšířit, patří následující funkce.
| Funkce CryptoAPI | Definice názvu funkce OID | Řetězec názvu funkce OID |
|---|---|---|
| CryptEncodeObject | CRYPT_OID_ENCODE_ OBJECT_FUNC |
"CryptDllEncodeObject" |
| CryptDecodeObject | CRYPT_OID_DECODE_ OBJECT_FUNC |
"CryptDllDecodeObject" |
| CertOpenStore | CRYPT_OID_OPEN_ STORE_PROV_FUNC |
"CertDllOpenStoreProv" |
| CertVerifyCTLUsage | CRYPT_OID_VERIFY_ CTL_USAGE_FUNC |
"CertDllVerifyCTLUsage" |
| CertVerifyRevocation | CRYPT_OID_VERIFY_ REVOCATION_FUNC |
"CertDllVerifyRevocation" |
Při běžném použití se stávajícím identifikátorem OID a typem kódování se použije kód ve funkci CryptoAPI. Pokud je volána jedna z těchto funkcí s identifikátorem OID a kódovacím typem, který kód ve funkci CryptoAPI nebyl navržen tak, aby zpracovával, nová funkce, která obsahuje nové funkce, musí být vytvořena v knihovně DLL. Tato knihovna DLL musí být zaregistrovaná v registru nebo musí být nainstalována v paměti.
Pokud je volána jedna z uvedených funkcí s nově určeným typem identifikátoru OID a kódování, použije se kód v nové knihovně DLL místo kódu poskytnutého jako součást funkce CryptoAPI.
Název nově vyvinuté funkce může být název uvedený v části "Řetězec názvu funkce OID" v předchozí tabulce nebo jiný název lze zadat při registraci nového kódu funkce.
Nová funkce musí používat odpovídající prototyp. Ve všech případech s výjimkou CertOpenStore je tento prototyp stejný jako funkce CryptoAPI, která volá novou funkci. V případě CertOpenStore prototyp je následující.
#include <windows.h>
BOOL WINAPI CertDllOpenStoreProv(
IN LPCSTR lpszStoreProvider,
IN DWORD dwEncodingType,
IN HCRYPTPROV hCryptProv,
IN DWORD dwFlags,
IN const void *pvPara,
IN HCERTSTORE hCertStore,
IN OUT PCERT_STORE_PROV_INFO pStoreProvInfo
);
Poznámka
Pokud se prototypy neshodují, systémový zásobník bude poškozen.
Kromě poskytnutí kódu pro novou funkci v knihovně DLL, rozšíření funkčnosti CryptEncodeObject nebo CryptDecodeObject vyžaduje definici typu pro novou datovou strukturu jazyka C, která se umístí do souboru hlaviček, který je součástí při kompilaci programu uživatele.