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 그룹 식별자 중 하나일 수 있습니다.

의미
CRYPT_ENCRYPT_ALG_OID_GROUP_ID
암호화 알고리즘
CRYPT_ENHKEY_USAGE_OID_GROUP_ID
향상된 키 사용
CRYPT_EXT_OR_ATTR_OID_GROUP_ID
확장 또는 특성
CRYPT_HASH_ALG_OID_GROUP_ID
해시 알고리즘
CRYPT_POLICY_OID_GROUP_ID
정책
CRYPT_PUBKEY_ALG_OID_GROUP_ID
공개 키 알고리즘
CRYPT_RDN_ATTR_OID_GROUP_ID
RDN 특성
CRYPT_SIGN_ALG_OID_GROUP_ID
서명 알고리즘

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_ENCRYPT_ALG_OID_GROUP_ID OID 그룹의 OID에는 ExtraInfo 멤버의 DWORD[0] 멤버에 있는 AES 알고리즘에 대해 설정된 비트 길이가 있습니다.

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 멤버의 플래그에 다음 값이 사용됩니다.

의미
CRYPT_OID_INHIBIT_SIGNATURE_FORMAT_FLAG
이 플래그는 더 이상 사용되지 않습니다.

CryptVerifySignature 함수가 호출되기 전이나 CryptSignHash 함수가 호출된 후 서명의 다시 포맷을 중지합니다.

CRYPT_OID_NO_NULL_ALGORITHM_PARA_FLAG
인코딩할 때 NULL 매개 변수를 생략합니다.
CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG
공개 키는 암호화에만 사용됩니다.
CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG
공개 키는 서명에만 사용됩니다.
CRYPT_OID_USE_PUBKEY_PARA_FOR_PKCS7_FLAG
이 플래그는 더 이상 사용되지 않습니다.

PKCS #7 메시지에 대한 digestEncryptionAlgorithm 매개 변수에 공개 키 알고리즘의 매개 변수를 포함합니다.

pwszCNGAlgid

CNG 함수(Bcrypt.h 및 Ncrypt.h에 정의된 BCrypt* 및 NCrypt* 함수)에 전달된 알고리즘 식별자 문자열입니다. CNG 함수는 CALG_SHA1 같은 ALG_ID 데이터 형식 상수 대신 L"SHA1"과 같은 알고리즘 식별자 문자열을 사용합니다. Windows Server 2003 및 Windows XP: 이 멤버를 사용할 수 없습니다.

참고pwszCNGAlgid 멤버는 코드에 다음 문을 포함하는 경우에만 사용할 수 있습니다.
 
#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 멤버를 dwGroupId의 다른 값에 대해 빈 문자열 L""으로 설정합니다.

pwszCNGAlgid 멤버는 CNG 함수에 직접 전달되지 않는 문자열 값으로 설정할 수도 있습니다. 다음 표에서는 이러한 값과 해당 의미를 나열합니다.

의미
CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM
ECC 곡선 알고리즘은 OID 알고리즘의 인코딩된 매개 변수에서 가져옵니다.
CRYPT_OID_INFO_ECC_WRAP_PARAMETERS_ALGORITHM
키 래핑 알고리즘은 OID 알고리즘의 인코딩된 매개 변수에서 가져옵니다.
CRYPT_OID_INFO_HASH_PARAMETERS_ALGORITHM
해시 알고리즘은 OID 알고리즘의 인코딩된 매개 변수에서 가져옵니다.
CRYPT_OID_INFO_MGF1_PARAMETERS_ALGORITHM
PKCS #1 v2.1 마스크 생성 해시 알고리즘은 OID 알고리즘의 인코딩된 매개 변수에서 가져옵니다.
CRYPT_OID_INFO_NO_SIGN_ALGORITHM
서명 값이 서명되지 않은 해시임을 나타내는 공개 키 알고리즘입니다.
CRYPT_OID_INFO_OAEP_PARAMETERS_ALGORITHM
RSAES-OAEP 패딩 해시 알고리즘은 OID 알고리즘의 인코딩된 매개 변수에서 가져옵니다.

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

추가 정보

CryptFindOIDInfo

CryptRegisterOIDInfo

CryptUnregisterOIDInfo