다음을 통해 공유


CERT_CHAIN_FIND_ISSUER_PARA 구조체(wincrypt.h)

CERT_CHAIN_FIND_BY_ISSUER_PARA 구조에는 인증서 체인을 빌드하기 위해 CertFindChainInStore 함수에 사용되는 정보가 포함되어 있습니다.

구문

typedef struct _CERT_CHAIN_FIND_BY_ISSUER_PARA {
  DWORD                                  cbSize;
  LPCSTR                                 pszUsageIdentifier;
  DWORD                                  dwKeySpec;
  DWORD                                  dwAcquirePrivateKeyFlags;
  DWORD                                  cIssuer;
  CERT_NAME_BLOB                         *rgIssuer;
  PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK pfnFindCallback;
  void                                   *pvFindArg;
  DWORD                                  *pdwIssuerChainIndex;
  DWORD                                  *pdwIssuerElementIndex;
} CERT_CHAIN_FIND_ISSUER_PARA, *PCERT_CHAIN_FIND_ISSUER_PARA, CERT_CHAIN_FIND_BY_ISSUER_PARA, *PCERT_CHAIN_FIND_BY_ISSUER_PARA;

멤버

cbSize

이 구조체의 크기(바이트)를 포함합니다. 이 크기는 하드 코딩되어서는 안 됩니다. 다음 예제와 같이 sizeof 연산자를 사용하여 컴파일 시간에 설정해야 합니다.

CERT_CHAIN_FIND_BY_ISSUER_PARA findParams;
findParams.cbSize = sizeof(CERT_CHAIN_FIND_BY_ISSUER_PARA);

pszUsageIdentifier

일치시킬 사용 식별자를 포함하는 null로 끝나는 ANSI 문자열에 대한 포인터입니다. 이 멤버가 NULL인 경우 사용량이 있는 인증서가 일치할 수 있습니다.

dwKeySpec

일치시킬 키 사양 값을 포함합니다. 다음 값 중 하나일 수 있습니다. 이 매개 변수가 0이면 모든 인증서가 일치할 수 있습니다.

의미
AT_KEYEXCHANGE
0x01
키는 알고리즘에 따라 암호화하거나 서명하는 데 사용할 수 있습니다.
AT_SIGNATURE
0x02
키는 서명에 사용할 수 있습니다.

dwAcquirePrivateKeyFlags

CertFindChainInStore 함수의 dwFindFlags 매개 변수에 CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG 포함된 경우 공개 키 비교를 수행하도록 CryptAcquireCertificatePrivateKey 함수가 호출됩니다. 이 경우 이 멤버는 CryptAcquireCertificatePrivateKey 함수의 dwFlags 매개 변수로 전달됩니다. 이 멤버와 해당 의미에 대한 가능한 값은 CryptAcquireCertificatePrivateKey 함수의 dwFlags 매개 변수를 참조하세요.

cIssuer

rgIssuer 배열의 요소 수를 포함합니다. 이 멤버가 0이면 발급자를 일치시킬 수 있습니다.

rgIssuer

일치시킬 X.509, ASN.1( Abstract Syntax Notation One ) 인코딩된 발급자 이름 BLOB 의 배열입니다. 이 멤버가 NULL이거나 콜백 함수가 TRUE를 반환하는 경우 지정된 KeySpec 및 향상된 키 사용이 있는 프라이빗 키가 있는 인증서의 체인에 새 요소가 추가됩니다.

pfnFindCallback

애플리케이션이 체인이 만들어진 인증서를 필터링할 수 있도록 하는 CertChainFindByIssuerCallback 콜백 함수에 대한 포인터입니다. 이 멤버가 NULL인 경우 찾은 모든 인증서에 대해 체인이 빌드됩니다. 이 멤버가 NULL이 아닌 경우 콜백 함수의 반환 값을 기반으로 찾은 인증서에 대한 체인이 빌드됩니다.

pvFindArg

이 구조체의 pfnFindCallback 멤버가 가리키는 CertChainFindByIssuerCallback 콜백 함수의 pvFindArg 매개 변수로 전달될 애플리케이션 정의 값입니다.

pdwIssuerChainIndex

발급자와 일치하는 체인의 인덱스(0부터 시작)를 수신하는 DWORD 값에 대한 포인터입니다. 이 멤버가 NULL이면 사용되지 않습니다.

cIssuer가 0이면 이 멤버가 사용되지 않습니다.

이 멤버는 CERT_CHAIN_FIND_BY_ISSUER_PARA_HAS_EXTRA_FIELDS 매크로가 정의된 경우에만 정의됩니다.

pdwIssuerElementIndex

발급자 인증서 체인에 있는 요소의 인덱스(0부터 시작)를 받는 DWORD 값에 대한 포인터입니다. 이 멤버가 NULL이면 사용되지 않습니다.

cIssuer가 0이면 이 멤버가 사용되지 않습니다.

이 멤버는 찾은 인증서의 인덱스 및 발급자의 인증서 인덱스 제공을 위한 인덱스로 설정됩니다. 이로 인해 BLOB 이름과 일치하는 부분 체인 또는 자체 서명된 인증서로 인해 pdwIssuerElementIndex 가 체인의 마지막 인증서를 지나게 될 수 있습니다. 이 상황은 pdwIssuerElementIndex의 콘텐츠를 CERT_SIMPLE_CHAIN 구조체의 cElement 멤버와 비교하여 인덱스가 유효한지 확인하여 검색할 수 있습니다.

이 멤버는 CERT_CHAIN_FIND_BY_ISSUER_PARA_HAS_EXTRA_FIELDS 매크로가 정의된 경우에만 정의됩니다.

설명

pdwIssuerChainIndexpdwIssuerElementIndex 멤버는 CERT_CHAIN_FIND_BY_ISSUER_PARA_HAS_EXTRA_FIELDS 매크로가 정의된 경우에만 사용할 수 있습니다. CERT_CHAIN_FIND_BY_ISSUER_PARA_HAS_EXTRA_FIELDS 매크로가 정의된 경우 애플리케이션은 사용되지 않는 모든 필드를 0으로 초기화해야 합니다.

예제

다음 의사 코드는 이 구조체의 pdwIssuerChainIndexpdwIssuerElementIndex 멤버를 사용하여 발급자의 인증서에 액세스하는 방법을 보여 줍니다.

CERT_CHAIN_FIND_BY_ISSUER_PARA findParams;
PCCERT_CHAIN_CONTEXT pChainContext = NULL;
DWORD dwChainIndex = 0;
DWORD dwElementIndex = 0;
findParams.pdwIssuerChainIndex = &dwChainIndex;
findParams.pdwIssuerElementIndex = &dwElementIndex;

pChainContext = CertFindChainInStore(
    hCertStore,
    X509_ASN_ENCODING,
    0,
    CERT_CHAIN_FIND_BY_ISSUER,
    (LPVOID)&findParams,
    NULL);
if(pChainContext)
{
    // Make sure the element index is valid.
    if(dwElementIndex < pChainContext->
        rgpChain[dwChainIndex]->cElement)
    {
        PCERT_CHAIN_ELEMENT pIssuerElement;
        pIssuerElement = pChainContext->
            rgpChain[dwChainIndex]->rgpElement[dwElementIndex];
       // ...
    }

    // Free the certificate chain.
    CertFreeCertificateChain(pChainContext);
}

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
머리글 wincrypt.h

추가 정보

CertChainFindByIssuerCallback

CertFindChainInStore

CryptAcquireCertificatePrivateKey