다음을 통해 공유


새 기능 만들기

다음 함수는 확장할 수 있는 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 데이터 구조체에 대한 형식 정의가 필요합니다.