다음을 통해 공유


CRYPT_SIGN_MESSAGE_PARA 구조체(wincrypt.h)

CRYPT_SIGN_MESSAGE_PARA 구조에는 지정된 서명 인증서 컨텍스트를 사용하여 메시지에 서명하기 위한 정보가 포함되어 있습니다.

구문

typedef struct _CRYPT_SIGN_MESSAGE_PARA {
  DWORD                      cbSize;
  DWORD                      dwMsgEncodingType;
  PCCERT_CONTEXT             pSigningCert;
  CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
  void                       *pvHashAuxInfo;
  DWORD                      cMsgCert;
  PCCERT_CONTEXT             *rgpMsgCert;
  DWORD                      cMsgCrl;
  PCCRL_CONTEXT              *rgpMsgCrl;
  DWORD                      cAuthAttr;
  PCRYPT_ATTRIBUTE           rgAuthAttr;
  DWORD                      cUnauthAttr;
  PCRYPT_ATTRIBUTE           rgUnauthAttr;
  DWORD                      dwFlags;
  DWORD                      dwInnerContentType;
  CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
  void                       *pvHashEncryptionAuxInfo;
} CRYPT_SIGN_MESSAGE_PARA, *PCRYPT_SIGN_MESSAGE_PARA;

멤버

cbSize

이 구조체의 크기(바이트)입니다.

dwMsgEncodingType

사용된 인코딩 유형입니다. 다음 예제와 같이 비트 OR 작업과 결합하여 인증서 및 메시지 인코딩 형식을 모두 지정할 수 있습니다.

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

현재 정의된 인코딩 형식은 다음과 같습니다.

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

pSigningCert

서명에 사용할 CERT_CONTEXT 대한 포인터입니다.

프라이빗 서명 키에 대한 액세스를 제공하려면 컨텍스트에 대해 CERT_KEY_PROV_INFO_PROP_ID 또는 CERT_KEY_CONTEXT_PROP_ID 속성을 설정해야 합니다.

HashAlgorithm

CRYPT_ALGORITHM_IDENTIFIER 서명할 데이터를 해시하는 데 사용되는 해시 알고리즘을 포함합니다.

pvHashAuxInfo

현재 사용되지 않으며 NULL로 설정해야 합니다.

cMsgCert

CERT_CONTEXT 구조체의 rgpMsgCert 배열에 있는 요소 수입니다. 0으로 설정하면 서명된 메시지에 인증서가 포함되지 않습니다.

rgpMsgCert

서명된 메시지에 포함할 CERT_CONTEXT 구조체에 대한 포인터 배열입니다. pSigningCert를 포함하려면 포인터가 rgpMsgCert 배열에 있어야 합니다.

cMsgCrl

CRL_CONTEXT 구조체에 대한 포인터의 rgpMsgCrl 배열에 있는 요소 수입니다. 0으로 설정하면 서명된 메시지에 CRL_CONTEXT 구조체가 포함되지 않습니다.

rgpMsgCrl

서명된 메시지에 포함할 CRL_CONTEXT 구조체에 대한 포인터 배열입니다.

cAuthAttr

rgAuthAttr 배열의 요소 수입니다. rgAuthAttr에 인증된 특성이 없으면 이 멤버는 0으로 설정됩니다.

rgAuthAttr

각각 인증된 특성 정보를 보유하는 CRYPT_ATTRIBUTE 구조체에 대한 포인터 배열입니다. 인증된 특성이 있는 경우 PKCS #9 표준은 OID(콘텐츠 형식 개체 식별자 ) 및 메시지 자체의 해시라는 두 개 이상의 특성이 있어야 한다고 지시합니다. 이러한 특성은 시스템에서 자동으로 추가됩니다.

cUnauthAttr

rgUnauthAttr 배열의 요소 수입니다. rgUnauthAttr에 인증되지 않은 특성이 없는 경우 이 멤버는 0입니다.

rgUnauthAttr

인증되지 않은 특성 정보를 보유하는 CRYPT_ATTRIBUTE 구조체에 대한 포인터 배열입니다. 인증되지 않은 특성은 다른 용도 중에서도 반대 서명을 포함하는 데 사용할 수 있습니다.

dwFlags

일반적으로 0입니다. 인코딩된 출력이 CMSG_ENVELOPED 메시지와 같은 외부 암호화 메시지의 CMSG_SIGNED 내부 콘텐츠 인 경우 CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG 설정해야 합니다. 설정되지 않은 경우 메시지는 CMSG_DATA 내부 콘텐츠 형식으로 인코딩됩니다.

CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG 비데이터 내부 콘텐츠를 OCTET STRING에 캡슐화하도록 설정할 수 있습니다. CRYPT_MESSAGE_KEYID_SIGNER_FLAG 발급자 및 일련 번호가 아닌 키 식별자에 의해 서명자를 식별하도록 설정할 수 있습니다.

CSP에서 UI를 표시하지 않도록 CRYPT_MESSAGE_SILENT_KEYSET_FLAG 설정할 수 있습니다. CRYPT_SILENT 플래그에 대한 자세한 내용은 CryptAcquireContext를 참조하세요.

dwInnerContentType

일반적으로 0입니다. 서명할 입력이 다른 암호화 메시지의 인코딩된 출력인 경우 입력 메시지의 인코딩 형식으로 설정합니다.

HashEncryptionAlgorithm

CRYPT_ALGORITHM_IDENTIFIER. NULL이 아닌 경우 서명자의 인증서 PublicKeyInfo.Algorithm 멤버 대신 사용됩니다. RSA의 경우 해시 암호화 알고리즘은 일반적으로 공개 키 알고리즘과 동일합니다. DSA의 경우 해시 암호화 알고리즘은 일반적으로 DSS 서명 알고리즘입니다. 이 멤버는 CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS 정의된 경우에만 사용할 수 있습니다.

pvHashEncryptionAuxInfo

현재 사용되지 않으며 NULL로 설정해야 합니다. 이 멤버는 CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS 정의된 경우에만 사용할 수 있습니다.

설명

HashEncryptionAlgorithmpvHashEncryptionAuxInfo 멤버는 CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS 정의된 경우에만 사용할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
머리글 wincrypt.h

추가 정보

CERT_CONTEXT

CRL_CONTEXT

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_ATTRIBUTE

CryptSignAndEncryptMessage

CryptSignMessage