다음을 통해 공유


CertSetCTLContextProperty 함수(wincrypt.h)

CertSetCTLContextProperty 함수는 지정된 CTL(인증서 신뢰 목록) 컨텍스트에 대한 확장 속성을 설정합니다.

구문

BOOL CertSetCTLContextProperty(
  [in] PCCTL_CONTEXT pCtlContext,
  [in] DWORD         dwPropId,
  [in] DWORD         dwFlags,
  [in] const void    *pvData
);

매개 변수

[in] pCtlContext

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

[in] dwPropId

설정할 속성을 확인합니다. dwPropId 값은 pvData 매개 변수의 형식과 콘텐츠를 결정합니다. 현재 정의된 식별자와 관련 pvData 형식은 다음과 같습니다.

의미
CERT_ARCHIVED_PROP_ID
pvData의 데이터 형식: NULL

열거형 중에 인증서를 건너뛰었다는 것을 나타냅니다. 이 속성 집합이 있는 인증서는 특정 해시 또는 특정 일련 번호가 있는 인증서 찾기와 같은 명시적 검색 작업을 통해 여전히 찾을 수 있습니다.

CERT_AUTO_ENROLL_PROP_ID
pvData의 데이터 형식: CRYPT_DATA_BLOB 대한 포인터

자동 등록을 사용하여 인증서를 등록한 후 설정된 속성입니다. pvData가 가리키는 CRYPT_DATA_BLOB 구조에는 인증서가 자동으로 등록된 인증서 유형의 null로 종료된 유니코드 이름이 포함됩니다. 인증서에 대한 자동 등록에 대한 후속 호출은 인증서가 등록되었는지 여부를 확인하기 위해 이 속성을 확인합니다.

CERT_CTL_USAGE_PROP_ID
pvData의 데이터 형식: CRYPT_DATA_BLOB 대한 포인터

pvData는 ASN.1(Abstract Syntax Notation One) 인코딩된 CTL_USAGE 구조체를 포함하는 CRYPT_DATA_BLOB 구조를 가리킵니다. 이 구조체는 X509_ENHANCED_KEY_USAGE 값이 설정된 CryptEncodeObject 를 사용하여 인코딩되었습니다.

CERT_DESCRIPTION_PROP_ID
pvData의 데이터 형식: CRYPT_DATA_BLOB 대한 포인터

인증서 UI에 의해 설정되고 표시되는 속성입니다. 이 속성을 사용하면 사용자가 인증서의 사용을 설명할 수 있습니다.

CERT_ENHKEY_USAGE_PROP_ID
pvData의 데이터 형식: CRYPT_DATA_BLOB 대한 포인터

ASN.1로 인코딩된 CERT_ENHKEY_USAGE 구조를 포함하는 CRYPT_DATA_BLOB 구조체입니다. 이 구조체는 X509_ENHANCED_KEY_USAGE 값이 설정된 CryptEncodeObject 를 사용하여 인코딩되었습니다.

CERT_FRIENDLY_NAME_PROP_ID
pvData의 데이터 형식: CRYPT_DATA_BLOB 대한 포인터

CRYPT_DATA_BLOB 구조체는 인증서의 표시 이름을 지정합니다.

CERT_HASH_PROP_ID
pvData의 데이터 형식: CRYPT_HASH_BLOB 대한 포인터

이 속성은 CertGetCertificateContextProperty를 호출하여 암시적으로 설정됩니다.

CERT_KEY_CONTEXT_PROP_ID
pvData의 데이터 형식: CERT_KEY_CONTEXT 대한 포인터

CERT_KEY_CONTEXT 구조에는 HCRYPTPROV 값과 프라이빗 키에 대한 키 사양이 모두 포함됩니다. hCryptProv 멤버 및 dwFlags 설정에 대한 자세한 내용은 CERT_KEY_PROV_HANDLE_PROP_ID 다음을 참조하세요. 이 속성에 대해 더 많은 CERT_KEY_CONTEXT 구조체 멤버를 추가할 수 있습니다. 그렇다면 cbSize 멤버 값이 그에 따라 조정됩니다. cbSize 멤버는 CERT_KEY_CONTEXT 구조체의 크기로 설정해야 합니다.

CERT_KEY_IDENTIFIER_PROP_ID
pvData의 데이터 형식: CRYPT_DATA_BLOB 대한 포인터

이 속성은 일반적으로 CertGetCertificateContextProperty 호출에 의해 암시적으로 설정됩니다.

CERT_KEY_PROV_HANDLE_PROP_ID
pvData의 데이터 형식: HCRYPTPROV에 대한 포인터

인증서의 프라이빗 키에 대한 HCRYPTPROV 핸들이 전달됩니다. CERT_KEY_CONTEXT 구조체의 hCryptProv 멤버가 있는 경우 업데이트됩니다. 존재하지 않는 경우 CERT_KEY_PROV_INFO_PROP_ID 의해 초기화된 dwKeySpec 을 사용하여 만들어집니다. CERT_STORE_NO_CRYPT_RELEASE_FLAG 설정되지 않은 경우 hCryptProv 값은 속성이 NULL 로 설정되거나 CERT_CONTEXT 구조체의 최종 해제 시 암시적으로 해제됩니다.

CERT_KEY_PROV_INFO_PROP_ID
pvData의 데이터 형식: CRYPT_KEY_PROV_INFO 대한 포인터

CRYPT_KEY_PROV_INFO 구조는 인증서의 프라이빗 키를 지정합니다.

CERT_KEY_SPEC_PROP_ID
pvData의 데이터 형식: DWORD에 대한 포인터

DWORD 값은 프라이빗 키를 지정합니다. CERT_KEY_CONTEXT 구조체의 dwKeySpec 멤버가 있는 경우 업데이트됩니다. 그렇지 않으면 hCryptProv 를 0으로 설정하여 만듭니다.

CERT_MD5_HASH_PROP_ID
pvData의 데이터 형식: CRYPT_HASH_BLOB 대한 포인터

이 속성은 CertGetCertificateContextProperty를 호출하여 암시적으로 설정됩니다.

CERT_NEXT_UPDATE_LOCATION_PROP_ID
pvData의 데이터 형식: CRYPT_DATA_BLOB 대한 포인터

CRYPT_DATA_BLOB 구조에는 X509_ALTERNATE_NAME 값 집합과 함께 CryptEncodeObject를 사용하여 인코딩된 ASN.1로 인코딩된 CERT_ALT_NAME_INFO 구조체가 포함되어 있습니다. CERT_NEXT_UPDATE_LOCATION_PROP_ID 현재 CTL에서만 사용됩니다.

CERT_PVK_FILE_PROP_ID
pvData의 데이터 형식: CRYPT_DATA_BLOB 대한 포인터

CRYPT_DATA_BLOB 구조는 인증서의 공개 키와 연결된 프라이빗 키가 포함된 파일의 이름을 지정합니다. CRYPT_DATA_BLOB 구조체 내에서 pbData 멤버는 null로 끝나는 유니코드, 와이드 문자열에 대한 포인터이며 cbData 멤버는 문자열의 길이를 나타냅니다.

CERT_SHA1_HASH_PROP_ID
pvData의 데이터 형식: CRYPT_HASH_BLOB 대한 포인터

이 속성은 CertGetCertificateContextProperty를 호출하여 암시적으로 설정됩니다.

CERT_SIGNATURE_HASH_PROP_ID
CRYPT_HASH_BLOB
pvData의 데이터 형식: CRYPT_HASH_BLOB 대한 포인터

서명 해시가 없으면 CryptHashToBeSigned로 계산됩니다. pvData 는 기존 또는 계산된 해시를 가리킵니다. 일반적으로 해시의 길이는 SHA의 경우 20바이트, MD5의 경우 16바이트입니다.

 

일반적으로 CERT_NEXT_UPDATE_LOCATION_PROP_ID 속성만 설정됩니다.

CERT_FIRST_USER_PROP_ID CERT_LAST_USER_PROP_ID DWORD 값을 사용하여 사용자가 추가 dwPropId 형식을 정의할 수 있습니다. 모든 사용자 정의 dwPropId 형식의 경우 pvData 는 인코딩된 CRYPT_DATA_BLOB 구조를 가리킵니다.

[in] dwFlags

CERT_KEY_PROV_HANDLE_PROP_ID 또는 CERT_KEY_CONTEXT_PROP_ID dwPropId 속성에 대해 CERT_STORE_NO_CRYPT_RELEASE_FLAG 설정할 수 있습니다.

CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG 값이 설정되면 공급자 쓰기 오류가 무시되고 캐시된 컨텍스트의 속성이 항상 설정됩니다.

CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAG 설정되면 모든 속성 집합이 유지되지 않습니다.

[in] pvData

dwPropId에 전달된 값에 의해 결정되는 데이터 형식에 대한 포인터입니다.

참고dwPropId의 경우 pvDataNULL 로 설정하면 속성이 삭제됩니다.
 

반환 값

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

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

반환 코드 설명
E_INVALIDARG
잘못된 속성 식별자입니다. 자세한 내용은 CertSetCertificateContextProperty를 참조하세요.

설명

속성이 이미 있는 경우 이전 값이 대체됩니다.

예제

예제 C 프로그램: 인증서 속성 가져오기 및 설정을 참조하세요.

요구 사항

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

추가 정보

CertGetCTLContextProperty

CertSetCertificateContextProperty

CryptEncodeObject

확장 속성 함수