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 정의된 경우에만 사용할 수 있습니다.
설명
HashEncryptionAlgorithm 및 pvHashEncryptionAuxInfo 멤버는 CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS 정의된 경우에만 사용할 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
머리글 | wincrypt.h |