Share via


CertAddEncodedCertificateToStore 함수(wincrypt.h)

CertAddEncodedCertificateToStore 함수는 인코딩된 인증서에서 인증서 컨텍스트를 만들어 인증서 저장소에 추가합니다. 만든 컨텍스트에는 확장 속성이 포함되지 않습니다.

또한 CertAddEncodedCertificateToStore 함수는 인증서를 저장소에 추가하기 전에 인코딩된 인증서의 복사본을 만듭니다.

구문

BOOL CertAddEncodedCertificateToStore(
  [in]            HCERTSTORE     hCertStore,
  [in]            DWORD          dwCertEncodingType,
  [in]            const BYTE     *pbCertEncoded,
  [in]            DWORD          cbCertEncoded,
  [in]            DWORD          dwAddDisposition,
  [out, optional] PCCERT_CONTEXT *ppCertContext
);

매개 변수

[in] hCertStore

인증서 저장소에 대한 핸들입니다.

[in] dwCertEncodingType

사용되는 인코딩 유형을 지정합니다. 다음 예제와 같이 비트 OR 작업과 결합하여 인증서 및 메시지 인코딩 형식을 모두 지정할 수 있습니다.

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING 현재 정의된 인코딩 형식은 다음과 같습니다.

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pbCertEncoded

인증서 저장소에 추가할 인코딩된 인증서를 포함하는 버퍼에 대한 포인터입니다.

[in] cbCertEncoded

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

[in] dwAddDisposition

일치하는 인증서 또는 일치하는 인증서에 대한 링크가 저장소에 있는 경우 수행할 작업을 지정합니다. 현재 정의된 처리 값 및 해당 용도는 다음과 같습니다.

의미
CERT_STORE_ADD_ALWAYS
함수는 일치하는 기존 인증서 또는 일치하는 인증서에 대한 링크에 대한 검사 않습니다. 새 인증서는 항상 저장소에 추가됩니다. 이로 인해 저장소에서 중복이 발생할 수 있습니다.
CERT_STORE_ADD_NEW
일치하는 인증서 또는 일치하는 인증서에 대한 링크가 저장소에 있으면 작업이 실패합니다. GetLastError 는 CRYPT_E_EXISTS 코드를 반환합니다.
CERT_STORE_ADD_REPLACE_EXISTING
일치하는 인증서 또는 일치하는 인증서에 대한 링크가 저장소에 있는 경우 기존 인증서 또는 링크가 삭제되고 새 인증서가 만들어지고 저장소에 추가됩니다. 일치하는 인증서 또는 일치하는 인증서에 대한 링크가 없는 경우 새 인증서가 만들어지고 저장소에 추가됩니다.
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
일치하는 인증서가 저장소에 있는 경우 새 컨텍스트를 만들고 추가하기 전에 기존 컨텍스트가 삭제됩니다. 새 컨텍스트는 기존 인증서에서 속성을 상속합니다.
CERT_STORE_ADD_USE_EXISTING
일치하는 인증서 또는 일치하는 인증서에 대한 링크가 있는 경우 기존 인증서 또는 링크가 사용되고 새 인증서의 속성이 추가됩니다. 함수는 실패하지 않지만 새 컨텍스트를 추가하지는 않습니다. ppCertContextNULL이 아니면 기존 컨텍스트가 중복됩니다.

일치하는 인증서 또는 일치하는 인증서에 대한 링크가 없는 경우 새 인증서가 추가됩니다.

[out, optional] ppCertContext

디코딩된 인증서 컨텍스트에 대한 포인터에 대한 포인터입니다. 호출 애플리케이션에 새 인증서 또는 기존 인증서의 복사본이 필요하지 않음을 나타내는 NULL일 수 있는 선택적 매개 변수입니다. 복사본이 만들어지면 CertFreeCertificateContext를 사용하여 컨텍스트를 해제해야 합니다.

반환 값

함수가 성공하면 반환 값은 TRUE입니다.

함수가 실패하면 반환 값은 FALSE입니다. 확장 오류 정보는 GetLastError를 호출합니다. 몇 가지 가능한 오류 코드는 다음과 같습니다.

반환 코드 설명
CRYPT_E_EXISTS
이 코드는 CERT_STORE_ADD_NEW 설정되고 인증서가 저장소에 이미 있거나 CERT_STORE_ADD_NEWER 설정되어 있고 추가할 인증서의 NotBefore 날짜보다 크거나 같은 NotBefore 날짜가 있는 인증서가 저장소에 있는 경우 반환됩니다.
E_INVALIDARG
유효하지 않은 처리 값이 dwAddDisposition 매개 변수에 지정되었거나 유효하지 않은 인증서 인코딩 형식을 지정했습니다. 현재는 X509_ASN_ENCODING 형식만 지원됩니다.
 

함수가 실패하면 GetLastError추상 구문 표기법 1(ASN.1) 인코딩/디코딩 오류를 반환합니다. 이러한 오류에 대한 자세한 내용은 ASN.1 반환 값 인코딩/디코딩을 참조하세요.

요구 사항

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

추가 정보

CertAddCertificateContextToStore

CertFreeCertificateContext

인증서 함수