Sdílet prostřednictvím


Vytvoření nové funkce

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.