다음을 통해 공유


IX509CertificateRequestPkcs10::GetCspStatuses 메서드(certenroll.h)

GetCspStatuses 메서드는 호출자가 지정한 프라이빗 키의 의도된 사용과 일치하는 모든 공급자/알고리즘 쌍을 포함하는 ICspStatuses 컬렉션을 검색합니다.

구문

HRESULT GetCspStatuses(
  [in]  X509KeySpec  KeySpec,
  [out] ICspStatuses **ppCspStatuses
);

매개 변수

[in] KeySpec

키의 용도를 지정하는 X509KeySpec 열거형 값입니다. 다음 값 중 하나일 수 있습니다.

의미
XCN_AT_NONE
암호화 API: 차세대(CNG) 공급자만 선택됩니다.
XCN_AT_KEYEXCHANGE
암호화 알고리즘(키 교환 포함)이 있는 CSP( CryptoAPI 암호화 서비스 공급자 )만 선택됩니다.
XCN_AT_SIGNATURE
서명 알고리즘이 있는 CryptoAPI CSP만 선택됩니다.

[out] ppCspStatuses

컬렉션을 나타내는 ICspStatuses 인터페이스에 대한 포인터를 수신하는 변수의 주소입니다.

반환 값

함수가 성공하면 함수는 S_OK 반환합니다.

함수가 실패하면 오류를 나타내는 HRESULT 값을 반환합니다. 가능한 값에는 다음 표에 있는 값이 포함되지만, 이에 국한되는 것은 아닙니다. 일반적인 오류 코드 목록은 일반 HRESULT 값을 참조하세요.

반환 코드 설명
CERTSRV_E_PROPERTY_EMPTY
프라이빗 키를 찾을 수 없습니다.
OLE_E_BLANK
개체가 초기화되지 않았습니다.

설명

이 메서드는 ICspStatus 개체의 컬렉션을 검색합니다. 각 개체는 단일 공급자/알고리즘 쌍을 나타냅니다. IX509CertificateRequestPkcs10 요청 개체를 초기화할 때 템플릿을 지정하는 경우 pKIDefaultCSPpKIDefaultKeySpec과 같은 템플릿 특성은 처음에 사용하도록 설정된 쌍에 영향을 줍니다. 각 ICspStatus 개체에서 다음 속성을 호출하여 쌍에 대한 정보를 검색할 수 있습니다.

  • CspInformation 속성은 공급자 정보를 검색합니다.
  • CspAlgorithm 속성은 알고리즘 정보를 검색합니다.
  • EnrollmentStatus 속성은 IX509EnrollmentStatus 개체를 검색합니다. 상태 개체에서 Selected 속성을 호출하여 이 요청에 대해 공급자/알고리즘 쌍을 사용할 수 있는지 여부를 확인합니다.
  • 서수 속성은 공급자/알고리즘 쌍 컬렉션의 위치를 검색합니다.

이 메서드에서 검색한 컬렉션은 요청 개체에 내부적으로 저장됩니다. 각 KeySpec 값에 대해 하나씩 최대 3개의 컬렉션을 만들고 저장할 수 있습니다. 이는 공급자/알고리즘 쌍의 선택 상태를 유지하여 관련 속성 페이지를 정확하고 빠르게 여러 번 표시할 수 있도록 하고 , 인코딩 메서드가 프라이빗 키를 만들어야 하는 경우 선택된 공급자 및 알고리즘을 식별할 수 있도록 하기 위해 수행됩니다. 공급자/알고리즘 쌍의 선택 상태가 수정되면 변경 내용이 적절한 컬렉션에 저장됩니다. 한 컬렉션의 멤버에 대한 변경 내용은 다른 컬렉션의 멤버에 영향을 주지 않습니다. PKCS #10 개체가 계속 존재하는 한 컬렉션이 존재합니다.

예를 들어 KeySpec 매개 변수가 XCN_AT_SIGNATURE 설정된 상태에서 이 메서드가 호출되고 템플릿이 요청을 초기화하는 데 사용된다고 가정합니다. 다음 문은 true입니다.

  • ICspStatus 개체의 컬렉션이 만들어지고 IX509CertificateRequestPkcs10 개체에 저장됩니다. 컬렉션에는 컴퓨터에 설치된 모든 유효한 공급자/알고리즘 쌍이 포함됩니다.
  • KeySpec 매개 변수가 XCN_AT_NONE 설정되지 않았으므로 Selected 속성은 컬렉션의 각 Cryptography API: Next Generation(CNG) 공급자/알고리즘 쌍에 대해 SelectedNo로 설정됩니다.
  • KeySpec 매개 변수가 XCN_AT_KEYEXCHANGE 설정되지 않았으므로 컬렉션에서 알고리즘을 사용하여 데이터를 암호화하거나 키를 보관할 수 있는 각 CryptoAPI CSP/알고리즘 쌍에 대해 SelectedNo로 설정됩니다.
  • 템플릿 또는 프라이빗 키에서 참조하지만 컴퓨터에서 지원되지 않는 각 공급자에 대해 자리 표시자 ICspStatus 개체가 만들어지고 컬렉션에 추가되고 Selected 속성이 SelectedNo로 설정됩니다.
  • Selected 속성은 알고리즘을 사용하여 데이터에 서명할 수 있는 각 CryptoAPI CSP/알고리즘 쌍에 대해 SelectedYes로 설정됩니다.
  • 서수 속성은 pKIDefaultCSPs 템플릿 특성으로 식별되는 CSP 순서(있는 경우)를 반영하도록 설정됩니다. 특성에 의해 먼저 나열된 CSP는 컬렉션에서 먼저 정렬됩니다. 이 속성은 프라이빗 키를 만들어야 하는 경우 등록 중에 사용됩니다. 첫 번째 선택한 CSP/알고리즘 쌍은 키를 만드는 데 사용되지만 작업이 실패하면 선택한 다음 쌍이 시도됩니다.
  • 동일한 KeySpec 매개 변수를 사용하여 이 메서드를 다시 호출하면 해당 매개 변수 값에 대해 이전에 만든 기존 컬렉션에 대한 포인터가 검색됩니다.
  • 다른 KeySpec 매개 변수를 사용하여 이 메서드를 다시 호출해도 XCN_AT_SIGNATURE KeySpec 값에 대해 생성된 컬렉션에는 영향을 미치지 않습니다. 또한 새 컬렉션의 멤버에서 Selected 속성을 변경해도 이전 컬렉션의 멤버에는 영향을 주지 않습니다.

GetCspStatuses 메서드는 KeySpec 매개 변수를 사용하여 CspStatuses 속성과 다릅니다. 메서드를 사용하면 사용자가 이 값을 지정할 수 있지만 속성은 요청 개체와 연결된 프라이빗 키에 설정된 값을 사용합니다.

이 메서드를 호출하기 전에 IX509CertificateRequestPkcs10 개체를 초기화해야 합니다. 자세한 내용은 다음 방법 중 일부를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 certenroll.h
DLL CertEnroll.dll

추가 정보

IX509CertificateRequestPkcs10