建立新功能
下列函式是可擴充的 CryptoAPI 函式。
CryptoAPI 函式 | OID 函式名稱定義 | 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」 |
在一般搭配現有的 OID 和編碼類型使用時,會使用 CryptoAPI 函式本身中的程式碼。 如果使用 OID 呼叫其中一個函式,且密碼編譯API 函式中的程式碼未設計為處理,則必須在 DLL 中建立包含新功能的新函式。 該 DLL 必須在登錄中註冊,或安裝在記憶體中。
使用新指定的 OID 和編碼類型呼叫其中一個列出的函式時,會使用新 DLL 中的程式碼,而不是在 CryptoAPI 函式中提供的程式碼。
新開發函式的名稱可以是上表中的 「OID 函式名稱字串」 下所列的名稱,也可以在註冊新的函式程式碼時提供不同的名稱。
新的函式必須使用適當的原型。 除了 CertOpenStore以外的所有案例中,此原型與呼叫新函式的 CryptoAPI 函式相同。 在 CertOpenStore 案例中,原型如下所示。
#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
);
注意
如果原型不相符,系統堆疊將會損毀。
除了在 DLL 中提供新函式的程式碼之外,擴充 CryptEncodeObject 或 CryptDecodeObject 的功能,還需要將新 C 資料結構的類型定義放在編譯使用者程式時所包含的標頭檔中。