다음을 통해 공유


CertCreateContext 함수(wincrypt.h)

CertCreateContext 함수는 인코딩된 바이트에서 지정된 컨텍스트를 만듭니다. 만든 컨텍스트에는 확장 속성이 포함되지 않습니다.

구문

const void * CertCreateContext(
  [in]           DWORD                     dwContextType,
  [in]           DWORD                     dwEncodingType,
  [in]           const BYTE                *pbEncoded,
  [in]           DWORD                     cbEncoded,
  [in]           DWORD                     dwFlags,
  [in, optional] PCERT_CREATE_CONTEXT_PARA pCreatePara
);

매개 변수

[in] dwContextType

만들 수 있는 컨텍스트를 지정합니다. 예를 들어 인증서컨텍스트를 만들려면 dwContextType 을 CERT_STORE_CERTIFICATE_CONTEXT.

현재 정의된 컨텍스트 형식 플래그는 다음 표에 나와 있습니다.

의미
CERT_STORE_CERTIFICATE_CONTEXT
인증서 컨텍스트.
CERT_STORE_CRL_CONTEXT
CRL 컨텍스트.
CERT_STORE_CTL_CONTEXT
CTL 컨텍스트.

[in] dwEncodingType

사용되는 인코딩 형식을 지정합니다. 현재는 X509_ASN_ENCODING 및 PKCS_7_ASN_ENCODING만 사용되고 있습니다. 그러나 나중에 추가 인코딩 형식이 추가될 수 있습니다. 현재 인코딩 형식의 경우 다음을 사용합니다.

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING.

[in] pbEncoded

복사할 기존 인코딩된 컨텍스트 콘텐츠가 포함된 버퍼에 대한 포인터입니다.

[in] cbEncoded

pbEncoded 버퍼의 크기(바이트)입니다.

[in] dwFlags

다음 플래그 값은 정의되며 비트 OR 연산을 사용하여 결합할 수 있습니다.

의미
CERT_CREATE_CONTEXT_NOCOPY_FLAG
생성된 컨텍스트는 할당된 복사본 대신 pbEncoded 가 가리키는 콘텐츠를 직접 가리킵니다.
CERT_CREATE_CONTEXT_SORTED_FLAG
함수는 정렬된 항목이 있는 컨텍스트를 만듭니다. 현재 이 플래그는 CTL 컨텍스트에만 적용됩니다.

CTL의 경우 반환된 CTL_INFO 구조체의 cCTLEntry 멤버는 항상 0입니다. CTL 항목을 찾거나 열거하려면 CertFindSubjectInSortedCTLCertEnumSubjectInSortedCTL을 호출해야 합니다.

CERT_CREATE_CONTEXT_NO_HCRYPTMSG_FLAG
기본적으로 CTL 컨텍스트가 만들어지면 해당 SignedData 메시지에 대한 HCRYTPMSG 핸들이 만들어집니다. 이 핸들을 만들지 않음으로써 성능을 향상시키기 위해 이 플래그를 설정할 수 있습니다. 이 플래그는 dwContextType 이 CERT_STORE_CTL_CONTEXT 경우에만 사용할 수 있습니다.
CERT_CREATE_CONTEXT_NO_ENTRY_FLAG
기본적으로 CTL 컨텍스트가 만들어지면 해당 항목이 디코딩됩니다. 이 플래그를 설정하면 항목이 디코딩되지 않고 성능이 향상됩니다. 이 플래그는 dwContextType 이 CERT_STORE_CTL_CONTEXT 경우에만 사용할 수 있습니다.

[in, optional] pCreatePara

CERT_CREATE_CONTEXT_PARA 구조체에 대한 포인터입니다.

pCreateParapfnFree 멤버가 모두 NULL이 아닌 경우 pfnFree 멤버는 pvFree 멤버가 지정한 메모리를 해제하는 데 사용됩니다. pvFree 멤버가 NULL인 경우 pfnFree 멤버를 사용하여 pbEncoded 포인터를 해제합니다.

pCreatePara 또는 pfnFree 멤버가 NULL인 경우 pbEncoded를 해제하려고 시도하지 않습니다.

반환 값

함수가 성공하면 반환 값은 새로 만든 컨텍스트에 대한 포인터입니다. 생성된 컨텍스트를 해제하려면 pCreateParapvFree 멤버를 호출해야 합니다.

함수가 실패하면 반환 값은 NULL입니다. 확장 오류 정보는 GetLastError를 호출합니다.

GetLastErrorERROR_CANCELLED 반환하는 경우 PFN_CERT_CREATE_CONTEXT_SORT_FUNC 콜백 함수가 정렬을 중지하기 위해 FALSE를 반환했음을 의미합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 wincrypt.h
라이브러리 Crypt32.lib
DLL Crypt32.dll

추가 정보

CTL_INFO

CertEnumSubjectInSortedCTL

CertFindSubjectInSortedCTL

인증서 및 인증서 저장소 유지 관리 함수