CRYPT_OID_INFO 구조체(wincrypt.h)
CRYPT_OID_INFO 구조체에는 OID(개체 식별자)에 대한 정보가 포함되어 있습니다. 이러한 구조체는 OID 식별자, 이름, 해당 그룹 및 OID에 대한 기타 정보 간의 관계를 제공합니다. 이러한 구조체는 CryptEnumOIDInfo 함수를 사용하여 나열할 수 있습니다. CryptRegisterOIDInfo 함수를 사용하여 새 CRYPT_OID_STRUCTURES 추가할 수 있습니다.
구문
typedef struct _CRYPT_OID_INFO {
DWORD cbSize;
LPCSTR pszOID;
LPCWSTR pwszName;
DWORD dwGroupId;
union {
DWORD dwValue;
ALG_ID Algid;
DWORD dwLength;
} DUMMYUNIONNAME;
CRYPT_DATA_BLOB ExtraInfo;
LPCWSTR pwszCNGAlgid;
LPCWSTR pwszCNGExtraAlgid;
} CRYPT_OID_INFO, *PCRYPT_OID_INFO;
멤버
cbSize
이 구조체의 크기(바이트)입니다.
pszOID
이 OID 정보와 연결된 OID입니다.
pwszName
OID와 연결된 표시 이름입니다.
dwGroupId
이 OID 정보와 연결된 그룹 식별자 값입니다.
이 멤버는 다음 dwGroupId 그룹 식별자 중 하나일 수 있습니다.
DUMMYUNIONNAME
DUMMYUNIONNAME.dwValue
이 OID 정보와 연결된 숫자 값입니다. 이 멤버는 dwGroupId CRYPT_SIGN_ALG_OID_GROUP_ID 사용됩니다.
DUMMYUNIONNAME.Algid
이 OID 정보와 연결된 알고리즘 식별자입니다.
이 멤버는 dwGroupId의 다음 값에 적용됩니다.
- CRYPT_HASH_ALG_OID_GROUP_ID
- CRYPT_ENCRYPT_ALG_OID_GROUP_ID
- CRYPT_PUBKEY_ALG_OID_GROUP_ID
- CRYPT_SIGN_ALG_OID_GROUP_ID
DUMMYUNIONNAME.dwLength
이 멤버는 구현되어 있지 않습니다. 항상 0으로 설정됩니다.
ExtraInfo
OID 정보를 찾거나 등록하는 데 사용되는 추가 정보입니다. 이 멤버는 dwGroupId의 다음 값에 적용됩니다.
- CRYPT_PUBKEY_ALG_OID_GROUP_ID
- CRYPT_SIGN_ALG_OID_GROUP_ID
- CRYPT_RDN_ATTR_OID_GROUP_ID
CRYPT_PUBKEY_ALG_OID_GROUP_ID 그룹의 OID에는 ExtraInfo 멤버의 DWORD[0] 멤버에 플래그가 설정되어 있습니다.
ECC 곡선 이름 공개 키의 OID(예: szOID_ECC_CURVE_P256("1.2.840.10045.3.1.7")에는 DWORD[0] 멤버에 플래그가 설정되어 있습니다. DWORD[1] 멤버에 설정된 BCRYPT_ECCKEY_BLOB dwMagic 필드 값과 BCRYPT_ECCKEY_BLOB cbKey 값이 dwBitLength/8 +((dwBitLength % 8)와 같은 비트 길이인 경우? 1 : 0) ExtraInfo 멤버의 DWORD[2] 멤버에 설정됩니다.
CRYPT_SIGN_ALG_OID_GROUP_ID 그룹의 OID에는 DWORD[0] 멤버에 설정된 공개 키 알고리즘 식별자, DWORD[1] 멤버에 설정된 플래그 및 ExtraInfo 멤버의 DWORD[2] 멤버에 설정된 선택적 공급자 유형이 있습니다.
CRYPT_RDN_ATTR_OID_GROUP_ID 그룹의 OID에는 ExtraInfo 멤버의 DWORD 값 배열에 설정된 허용 가능한 RDN 특성 값 형식의 null 종료 목록이 있습니다. 생략된 목록은 배열의 첫 번째 값이 CERT_RDN_PRINTABLE_STRING, 배열의 두 번째 값이 CERT_RDN_UNICODE_STRING 배열의 세 번째 값이 0인 값의 배열을 의미합니다.
ExtraInfo 멤버의 플래그에 다음 값이 사용됩니다.
값 | 의미 |
---|---|
|
이 플래그는 더 이상 사용되지 않습니다.
CryptVerifySignature 함수가 호출되기 전이나 CryptSignHash 함수가 호출된 후 서명의 다시 포맷을 중지합니다. |
|
인코딩할 때 NULL 매개 변수를 생략합니다. |
|
공개 키는 암호화에만 사용됩니다. |
|
공개 키는 서명에만 사용됩니다. |
|
이 플래그는 더 이상 사용되지 않습니다.
PKCS #7 메시지에 대한 digestEncryptionAlgorithm 매개 변수에 공개 키 알고리즘의 매개 변수를 포함합니다. |
pwszCNGAlgid
CNG 함수(Bcrypt.h 및 Ncrypt.h에 정의된 BCrypt* 및 NCrypt* 함수)에 전달된 알고리즘 식별자 문자열입니다. CNG 함수는 CALG_SHA1 같은 ALG_ID 데이터 형식 상수 대신 L"SHA1"과 같은 알고리즘 식별자 문자열을 사용합니다. Windows Server 2003 및 Windows XP: 이 멤버를 사용할 수 없습니다.
#define CRYPT_OID_INFO_HAS_EXTRA_FIELDS
이 멤버는 dwGroupId의 다음 값에 적용됩니다.
- CRYPT_HASH_ALG_OID_GROUP_ID
- CRYPT_ENCRYPT_ALG_OID_GROUP_ID
- CRYPT_PUBKEY_ALG_OID_GROUP_ID
- CRYPT_SIGN_ALG_OID_GROUP_ID
pwszCNGAlgid 멤버는 CNG 함수에 직접 전달되지 않는 문자열 값으로 설정할 수도 있습니다. 다음 표에서는 이러한 값과 해당 의미를 나열합니다.
pwszCNGExtraAlgid
cNG 함수(Bcrypt.h 및 Ncrypt.h에 정의된 BCrypt* 및 NCrypt* 함수)에 전달할 수 있는 pwszCNGAlgid 멤버의 문자열 이외의 추가 알고리즘 문자열입니다.
Windows Server 2003 및 Windows XP: 이 멤버를 사용할 수 없습니다.
#define CRYPT_OID_INFO_HAS_EXTRA_FIELDS
서명 알고리즘(CRYPT_SIGN_ALG_OID_GROUP_ID)의 경우 이 멤버는 CNG 함수에 전달할 공개 키 알고리즘 문자열입니다.
ECC 서명의 경우 이 멤버는 특수 CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM 문자열 값입니다.
서명되지 않은 서명의 경우 이 멤버는 특수 CRYPT_OID_INFO_NO_SIGN_ALGORITHM 문자열 값입니다.
ECC 곡선 이름 공개 키(예: szOID_ECC_CURVE_P256("1.2.840.10045.3.1.7")의 경우 특수 CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM 문자열 값입니다.
dwGroupId의 다른 값에 대해 pwszCNGExtraAlgid 멤버를 빈 문자열 L"로 설정합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
머리글 | wincrypt.h |