다음 일반 프로세스는 서명된 데이터 형식을 디코딩합니다.
서명된 메시지 디코딩하려면
- 인코딩된 BLOB에 대한 포인터를 가져옵니다.
- CryptMsgOpenToDecode호출하여 필요한 인수를 전달합니다.
- CryptMsgUpdate 한 번 호출하여 2단계에서 검색된 핸들과 디코딩할 데이터에 대한 포인터를 전달합니다. 이렇게 하면 메시지 유형에 따라 메시지에 대한 적절한 작업이 수행됩니다.
- CryptMsgGetParam호출하여 2단계에서 검색된 핸들과 디코딩된 데이터에 액세스하기 위한 적절한 매개 변수 형식을 전달합니다. 예를 들어 CMSG_CONTENT_PARAM 전달하여 디코딩된 콘텐츠에 대한 포인터를 가져옵니다.
다음 일반 프로세스는 디코딩된 서명된 메시지의 서명을 확인합니다.
디코딩된 서명된 메시지의 서명을 확인하려면
- CryptMsgGetParam호출하여 메시지 핸들과 함께 CMSG_SIGNER_CERT_INFO_PARAM을 전달하여 메시지에서 서명자의 CERT_INFO를 가져옵니다.
- CertOpenStore 호출하여 메시지의 인증서로 초기화된 임시 저장소를 엽니다.
- CertGetSubjectCertificateFromStore 호출하여 메시지에 포함된 인증서에서 서명자의 CERT_INFO 가져옵니다.
- CryptMsgControl호출하여 CMSG_CTRL_VERIFY_SIGNATURE 전달하여 서명을 확인합니다.
- CryptMsgClose 호출하여 메시지를 닫습니다.
이러한 절차의 결과는 서명이 확인되고 서명된 메시지를 디코딩하기 위한 프로시저의 4단계에서 가져온 디코딩된 메시지 콘텐츠에 대한 포인터가 검색됩니다.
C 코딩 세부 정보는 예제 C 프로그램( 서명, 인코딩, 디코딩 및 메시지확인)을 참조하세요.