다음을 통해 공유


데이터 서명 절차

단일 함수인 CryptSignMessage서명된 메시지 만들기에 나열된 모든 작업을 수행합니다. 그러나 구조체 및 기타 데이터의 초기화는 여전히 필요합니다. 다음 그림에서는 구조체 또는 배열을 가리키는 함수 매개 변수와 초기화된 데이터 간의 관계를 보여 줍니다. 이 그림에서는 다른 구조체 또는 함수에서 파생된 함수 매개 변수 및 구조체 멤버만 보여 줍니다. 나머지 매개 변수는 간단한 초기화입니다.

cryptsignmessage 호출에 대한 초기화 맵

CryptSignMessage를 사용하여 데이터에 서명하려면

  1. 서명할 데이터에 대한 포인터를 가져옵니다.
  2. 데이터에 대한 포인터를 할당하여 "서명할 데이터" 배열의 인덱스 0을 지정합니다.
  3. 암호화 공급자에 대한 핸들을 가져옵니다.
  4. 서명자의 인증서 가 포함된 인증서 저장소를 엽니다.
  5. 서명자의 인증서에 대한 주소를 가져옵니다.
  6. MsgCert 배열의 인덱스 0에 인증서 주소를 할당합니다.
  7. 메시지와 함께 포함할 다른 인증서의 주소를 MsgCert 배열에 할당합니다.
  8. pszObjId 멤버를 원하는 해시 알고리즘으로 초기화하고 다른 멤버를 적절하게 초기화하여 CRYPT_ALGORITHM_IDENTIFIER 구조를 초기화합니다.
  9. CRYPT_SIGN_MESSAGE_PARA 구조를 초기화하여 pSigningCert 멤버를 서명자의 인증서 주소로 초기화하고, MsgCert 배열 멤버를 서명자 및 기타 인증서의 주소로, HashAlgorithm 멤버를 CRYPT_ALGORITHM_IDENTIFIER 구조체의 주소로 초기화하고, 다른 멤버를 적절하게 초기화합니다.
  10. CryptSignMessage 함수를 호출하여 pSignPara 매개 변수에 대한 CRYPT_SIGN_MESSAGE_PARA 구조체, rgpbToBeSigned 매개 변수에 대한 "서명할 데이터" 배열의 주소, pbSignedBlob 출력 매개 변수의 주소 및 다른 매개 변수의 값을 적절하게 전달합니다.