다음 함수는 확장할 수 있는 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 (Function name remains untranslated due to technical context; no improvements required unless additional context is standard.) |
"CertDllVerifyCTLUsage" |
| CertVerifyRevocation | CRYPT_OID_VERIFY_ REVOCATION_FUNC |
CertDllVerifyRevocation (인증서 DLL 취소 확인) |
기존 OID 및 인코딩 형식에서 일반적으로 사용하는 경우 CryptoAPI 함수 자체의 코드가 사용됩니다. CryptoAPI 함수의 코드가 처리하도록 설계되지 않은 OID 및 인코딩 형식으로 이러한 함수 중 하나를 호출하는 경우 새 기능을 포함하는 새 함수를 DLL에 만들어야 합니다. 해당 DLL은 레지스트리에 등록되거나 메모리에 설치되어야 합니다.
나열된 함수 중 하나가 새로 지정된 OID 및 인코딩 형식으로 호출되면 CryptoAPI 함수의 일부로 제공되는 코드 대신 새 DLL의 코드가 사용됩니다.
새로 개발된 함수의 이름은 이전 테이블의 "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 데이터 구조체에 대한 형식 정의가 필요합니다.