데이터 서명 절차
단일 함수인 CryptSignMessage는 서명된 메시지 만들기에 나열된 모든 작업을 수행합니다. 그러나 구조체 및 기타 데이터의 초기화는 여전히 필요합니다. 다음 그림에서는 구조체 또는 배열을 가리키는 함수 매개 변수와 초기화된 데이터 간의 관계를 보여 줍니다. 이 그림에서는 다른 구조체 또는 함수에서 파생된 함수 매개 변수 및 구조체 멤버만 보여 줍니다. 나머지 매개 변수는 간단한 초기화입니다.
CryptSignMessage를 사용하여 데이터에 서명하려면
- 서명할 데이터에 대한 포인터를 가져옵니다.
- 데이터에 대한 포인터를 할당하여 "서명할 데이터" 배열의 인덱스 0을 지정합니다.
- 암호화 공급자에 대한 핸들을 가져옵니다.
- 서명자의 인증서 가 포함된 인증서 저장소를 엽니다.
- 서명자의 인증서에 대한 주소를 가져옵니다.
- MsgCert 배열의 인덱스 0에 인증서 주소를 할당합니다.
- 메시지와 함께 포함할 다른 인증서의 주소를 MsgCert 배열에 할당합니다.
- pszObjId 멤버를 원하는 해시 알고리즘으로 초기화하고 다른 멤버를 적절하게 초기화하여 CRYPT_ALGORITHM_IDENTIFIER 구조를 초기화합니다.
- CRYPT_SIGN_MESSAGE_PARA 구조를 초기화하여 pSigningCert 멤버를 서명자의 인증서 주소로 초기화하고, MsgCert 배열 멤버를 서명자 및 기타 인증서의 주소로, HashAlgorithm 멤버를 CRYPT_ALGORITHM_IDENTIFIER 구조체의 주소로 초기화하고, 다른 멤버를 적절하게 초기화합니다.
- CryptSignMessage 함수를 호출하여 pSignPara 매개 변수에 대한 CRYPT_SIGN_MESSAGE_PARA 구조체, rgpbToBeSigned 매개 변수에 대한 "서명할 데이터" 배열의 주소, pbSignedBlob 출력 매개 변수의 주소 및 다른 매개 변수의 값을 적절하게 전달합니다.