서명된 데이터 디코딩
다음 일반 프로세스는 서명된 데이터 형식을 디코딩합니다.
서명된 메시지를 디코딩하려면
- 인코딩된 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 프로그램: 서명, 인코딩, 디코딩 및 메시지 확인을 참조하세요.