CMSG_SIGNER_ENCODE_INFO 구조체(wincrypt.h)
CMSG_SIGNER_ENCODE_INFO 구조에는 서명자 정보가 포함됩니다. dwMsgType 매개 변수가 CMSG_SIGNED 경우 CryptMsgCountersign, CryptMsgCountersignEncoded 및 필요에 따라 CMSG_SIGNED_ENCODE_INFO 구조체의 멤버로 CryptMsgOpenToEncode에 전달됩니다.
구문
typedef struct _CMSG_SIGNER_ENCODE_INFO {
DWORD cbSize;
PCERT_INFO pCertInfo;
union {
HCRYPTPROV hCryptProv;
NCRYPT_KEY_HANDLE hNCryptKey;
BCRYPT_KEY_HANDLE hBCryptKey;
} DUMMYUNIONNAME;
DWORD dwKeySpec;
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
void *pvHashAuxInfo;
DWORD cAuthAttr;
PCRYPT_ATTRIBUTE rgAuthAttr;
DWORD cUnauthAttr;
PCRYPT_ATTRIBUTE rgUnauthAttr;
CERT_ID SignerId;
CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
void *pvHashEncryptionAuxInfo;
} CMSG_SIGNER_ENCODE_INFO, *PCMSG_SIGNER_ENCODE_INFO;
멤버
cbSize
이 구조체의 크기(바이트)입니다.
pCertInfo
를 포함하는 CERT_INFO 구조체에 대한 포인터입니다.
발급자, SerialNumber 및 SubjectPublicKeyInfo 멤버.
발급자 및 SerialNumber 구조체의 pbData 멤버는 인증서를 고유하게 식별합니다. SubjectPublicKeyInfo 구조의 알고리즘 멤버는 사용되는 해시 암호화 알고리즘을 지정합니다.
DUMMYUNIONNAME
DUMMYUNIONNAME.hCryptProv
CSP( 암호화 서비스 공급자 )에 대한 핸들입니다. HashEncryptionAlgorithm이 szOID_PKIX_NO_SIGNATURE 설정된 경우 이 핸들은 CRYPT_VERIFYCONTEXT 설정된 dwFlags 매개 변수를 사용하여 획득한 CSP의 핸들일 수 있습니다. CNG 함수 NCryptIsKeyHandle 은 공용 구조체 선택을 결정하기 위해 호출됩니다.
DUMMYUNIONNAME.hNCryptKey
CNG CSP에 대한 핸들입니다. CNG 함수 NCryptIsKeyHandle 은 공용 구조체 선택을 결정하기 위해 호출됩니다. 새 암호화 알고리즘은 CNG 함수에서만 지원됩니다. CNG 함수 NCryptTranslateHandle 은 필요한 경우 CryptoAPI hCryptProv 선택을 변환하기 위해 호출됩니다. 애플리케이션은 NCryptOpenKey 함수에서 반환되는 CNG CSP 핸들인 hNCryptKey 멤버에 전달하는 것이 좋습니다.
DUMMYUNIONNAME.hBCryptKey
dwKeySpec
사용할 프라이빗 키를 지정합니다. 이 멤버는 hNCryptKey 멤버를 사용할 때 사용되지 않습니다.
dwKeySpec이 0이면 기본 AT_KEYEXCHANGE 값이 사용됩니다.
다음 dwKeySpec 값은 기본 공급자에 대해 정의됩니다.
값 | 의미 |
---|---|
|
세션 키를 암호화/암호 해독하는 데 사용되는 키입니다. |
|
디지털 서명을 만들고 확인하는 데 사용되는 키입니다. |
HashAlgorithm
해시 알고리즘을 지정하는 CRYPT_ALGORITHM_IDENTIFIER 구조체입니다.
pvHashAuxInfo
사용되지 않습니다. 이 멤버는 NULL로 설정해야 합니다.
cAuthAttr
rgAuthAttr 배열의 요소 수입니다. rgAuthAttr에 인증된 특성이 없으면 cAuthAttr은 0입니다.
rgAuthAttr
각각 인증된 특성 정보를 포함하는 CRYPT_ATTRIBUTE 구조체에 대한 포인터 배열입니다.
PKCS #9 표준은 특성이 있는 경우 OID(콘텐츠 형식 개체 식별자 ) 및 메시지 해시의 두 개 이상이 있어야 한다고 지시합니다. 이러한 특성은 시스템에서 자동으로 추가됩니다.
cUnauthAttr
rgUnauthAttr 배열의 요소 수입니다. 인증되지 않은 특성이 없으면 cUnauthAttr 은 0입니다.
rgUnauthAttr
각각 인증되지 않은 특성 정보를 포함하는 CRYPT_ATTRIBUTE 구조체에 대한 포인터 배열입니다. 인증되지 않은 특성에는 다른 용도 중에서도 카운터 서명이 포함될 수 있습니다.
SignerId
서명자 인증서의 고유 식별자를 포함하는 CERT_ID 구조체입니다. 이 멤버는 필요에 따라 CMS(암호화 메시지 구문)와 함께 PKCS #7과 함께 사용할 수 있습니다. 이 멤버가 NULL이 아니고 dwIdChoice 멤버가 0이 아닌 경우 pCertInfo가 가리키는 CERT_INFO 구조체의 발급자 및 SerialNumber 멤버 대신 인증서를 식별하는 데 사용됩니다. CMS는 KEY_IDENTIFIER 및 ISSUER_SERIAL_NUMBER CERT_ID 구조를 지원합니다. PKCS 버전 1.5는 ISSUER_SERIAL_NUMBER CERT_ID 선택만 지원합니다. 이 멤버는 PKCS #7 처리를 위해 CMS와 함께 사용되며 CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS 정의된 경우에만 사용할 수 있습니다.
HashEncryptionAlgorithm
선택적으로 CMS에서 PKCS #7과 함께 사용되는 CRYPT_ALGORITHM_IDENTIFIER 구조체입니다. 이 멤버가 NULL이 아닌 경우 식별된 알고리즘은 SubjectPublicKeyInfo.Algorithm 알고리즘 대신 사용됩니다. 이 멤버가 szOID_PKIX_NO_SIGNATURE 설정된 경우 서명 값에는 해시 옥텟만 포함됩니다.
RSA의 경우 해시 암호화 알고리즘은 일반적으로 공개 키 알고리즘과 동일합니다. DSA의 경우 해시 암호화 알고리즘은 일반적으로 DSS 서명 알고리즘입니다.
이 멤버는 PKCS #7 처리를 위해 CMS와 함께 사용되며 CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS 정의된 경우에만 사용할 수 있습니다.
pvHashEncryptionAuxInfo
이 멤버는 사용되지 않습니다. 데이터 구조에 있는 경우 이 멤버를 NULL 로 설정해야 합니다. 이 멤버는 CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS 정의된 경우에만 존재합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
머리글 | wincrypt.h |