인증서 신뢰 목록(CTL)을 사용할 경우의 장점 중 하나는 대화 상자가 있는 사용자를 방해하지 않고 신뢰할 수 있는 인증서에 대해 서명된 메시지를 자동으로 확인할 수 있도록 애플리케이션을 설계할 수 있다는 것입니다. 또한 신뢰할 수 있는 네트워크 관리자 제어 원본을 제공합니다.
다음 절차는 CTL을 사용하여 서명된 메시지의 서명을 확인하는 데 사용할 수 있습니다.
CTL 사용하여 서명된 메시지를 확인하려면
다음과 같이 메시지를 디코딩합니다.
- 받은 메시지(인코딩된 BLOB)에 대한 포인터를 가져옵니다.
- CryptMsgOpenToDecode호출하여 필요한 인수를 전달합니다.
- CryptMsgUpdate 한 번 호출하여 b단계에서 검색된 핸들과 디코딩할 데이터에 대한 포인터를 전달합니다. 이렇게 하면 메시지 유형에 따라 메시지에 대한 적절한 작업이 수행됩니다.
디코딩된 서명된 메시지의 서명을 확인하고 서명자의 CERT_CONTEXT대한 포인터를 가져옵니다.
이 작업은 CryptMsgGetAndVerifySigner호출하고 1c단계에서 검색된 메시지 핸들을 hCryptMsg 매개 변수로 전달하여 수행할 수 있습니다. 함수 호출이 TRUE반환하는 경우 서명이 확인되고 서명자의 PCCERT_CONTEXT 대한 포인터가 ppSigner 매개 변수에 반환됩니다.
서명자가 신뢰할 수 있는 출처인지 여부를 다음과 같이 확인합니다.
- 적절한 CTL을 포함하는 인증서 저장소를 엽니다.
- CertFindCTLInStore호출하여 CTL_CONTEXT 대한 포인터를 가져옵니다.
- 서명자가 신뢰할 수 있는 원본인지 확인하려면 CertFindSubjectInCTL호출하여 pCtlContext 매개 변수의 이전 단계에서 검색된 포인터, dwSubjectType 매개 변수의 CTL_CERT_SUBJECT_TYPE, pvSubject 매개 변수의 2단계에서 검색된 CERT_CONTEXT 대한 포인터를 전달합니다. 함수 호출이 TRUE 를 반환하면 함수에 전달된 CERT_CONTEXT가 CTL에서 신뢰할 수 있는 원본입니다.