CryptFindOIDInfo 함수(wincrypt.h)

CryptFindOIDInfo 함수는 지정된 키 유형 및 키와 일치하는 첫 번째 미리 정의되거나 등록된 CRYPT_OID_INFO 구조를 검색합니다. 검색은 지정된 OID 그룹 내의 OID( 개체 식별자 )로 제한될 수 있습니다.

CryptEnumOIDInfo를 사용하여 CRYPT_OID_INFO 구조체의 전체 또는 선택한 하위 집합을 나열합니다. CryptRegisterOIDInfo를 사용하여 새 CRYPT_OID_INFO 구조를 등록할 수 있습니다. CryptUnregisterOIDInfo를 사용하여 등록된 OID 목록에서 사용자 등록 OID를 제거할 수 있습니다.

새 OID는 미리 정의된 항목 앞이나 뒤의 등록된 OID 목록에 배치할 수 있습니다. CryptFindOIDInfo는 검색 조건과 일치하는 목록의 첫 번째 키를 반환하므로 동일한 키를 가진 미리 정의된 OID 항목 앞에 새로 등록된 OID가 미리 정의된 항목을 재정의합니다.

구문

PCCRYPT_OID_INFO CryptFindOIDInfo(
  [in] DWORD dwKeyType,
  [in] void  *pvKey,
  [in] DWORD dwGroupId
);

매개 변수

[in] dwKeyType

OID 정보를 찾을 때 사용할 키 유형을 지정합니다.

이 매개 변수는 다음 키 형식 중 하나일 수 있습니다.

CRYPT_OID_INFO_OID_KEY

pvKey 는 찾을 OID 문자열이 포함된 null로 종료된 ANSI 문자열의 주소입니다.

CRYPT_OID_INFO_NAME_KEY

pvKey 는 찾을 이름을 포함하는 null로 종료된 유니코드 문자열의 주소입니다.

CRYPT_OID_INFO_ALGID_KEY

pvKeyALG_ID 변수의 주소입니다. 다음 ALG_ID지원됩니다.

해시 알고리즘:

대칭 암호화 알고리즘:

공개 키 알고리즘:

나열되지 않은 알고리즘은 암호화 API: CNG(차세대)만 사용하여 지원됩니다. 대신 CRYPT_OID_INFO_CNG_ALGID_KEY 사용합니다.

CRYPT_OID_INFO_SIGN_KEY

pvKey는 첫 번째요소에 해시 알고리즘 식별자가 포함되고 두 번째 요소에 공개 키 알고리즘 식별자가 포함된 두 ALG_ID 배열의 주소입니다.

다음 ALG_ID 조합이 지원됩니다.

서명 알고리즘 식별자 해시 알고리즘 식별자
CALG_RSA_SIGN
CALG_SHA1
CALG_MD5
CALG_MD4
CALG_MD2
CALG_DSS_SIGN
CALG_SHA1
CALG_NO_SIGN
CALG_SHA1
CALG_NO_SIGN
 

나열되지 않은 알고리즘은 CNG를 통해서만 지원됩니다. 대신 CRYPT_OID_INFO_CNG_SIGN_KEY 사용합니다.

CRYPT_OID_INFO_CNG_ALGID_KEY

pvKey 는 찾을 CNG 알고리즘 식별자가 포함된 null로 종료된 유니코드 문자열의 주소입니다. 미리 정의된 CNG 알고리즘 식별자 또는 등록된 다른 알고리즘 식별자 중 하나일 수 있습니다.

Windows Server 2003 R2 Windows Server 2003 : 이 키 형식은 지원되지 않습니다.

CRYPT_OID_INFO_CNG_SIGN_KEY

pvKey 는 첫 번째 문자열에 해시 CNG 알고리즘 식별자가 포함되고 두 번째 문자열에 공개 키 CNG 알고리즘 식별자가 포함된 null로 끝나는 두 개의 유니코드 문자열 포인터 배열의 주소입니다. 미리 정의된 CNG 알고리즘 식별자 또는 다른 등록된 알고리즘 식별자에서 사용할 수 있습니다.

Windows Server 2003 R2 Windows Server 2003 : 이 키 형식은 지원되지 않습니다.

필요에 따라 논리 OR 연산자(|)를 사용하여 dwKeyType 매개 변수에 다음 키 형식을 지정할 수 있습니다.

의미
CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG
CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG 플래그로 명시적으로 플래그가 지정된 CRYPT_PUBKEY_ALG_OID_GROUP_ID 그룹의 공개 키를 건너뜁니다.
CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG
CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG 플래그로 명시적으로 플래그가 지정된 CRYPT_PUBKEY_ALG_OID_GROUP_ID 그룹의 공개 키를 건너뜁니다.

[in] pvKey

추가 검색 정보가 포함된 버퍼의 주소입니다. 이 매개 변수는 dwKeyType 매개 변수의 값에 따라 달라집니다. 자세한 내용은 dwKeyType 아래의 표를 참조하세요.

[in] dwGroupId

OID 정보를 찾을 때 사용할 그룹 식별자입니다. 이 매개 변수를 0으로 설정하면 dwKeyType 매개 변수에 따라 모든 그룹이 검색됩니다. 그렇지 않으면 표시된 dwGroupId 만 검색됩니다.

그룹 식별자별 OID 정보를 나열하는 코드에 대한 자세한 내용은 CryptEnumOIDInfo를 참조하세요.

필요에 따라 논리 OR 연산자(|)를 사용하여 dwGroupId 매개 변수에 다음 플래그를 지정할 수 있습니다.

의미
CRYPT_OID_DISABLE_SEARCH_DS_FLAG
디렉터리 서버 검색을 사용하지 않도록 설정합니다.
 

왼쪽 16비트 이동 비트 길이는 논리 OR 연산자(|)를 사용하여 dwGroupId 매개 변수에 지정할 수 있습니다. 자세한 내용은 설명 부분을 참조하세요.

반환 값

CRYPT_OID_INFO 형식의 상수 구조에 대한 포인터를 반환합니다. 반환된 포인터를 해제하면 안 됩니다. 지정된 키와 그룹을 찾을 수 없으면 NULL 이 반환됩니다.

설명

CryptFindOIDInfo 함수는 Active Directory에서 조회를 수행하여 다음 조건에서 ID의 이름을 검색합니다.

  • dwKeyType 매개 변수의 키 형식은 CRYPT_OID_INFO_OID_KEY 또는 CRYPT_OID_INFO_NAME_KEY 설정됩니다.
  • dwGroupId 매개 변수에 그룹 식별자가 지정되지 않거나 GroupID가 EKU OID, 정책 OID 또는 템플릿 OID를 참조합니다.
CRYPT_OID_DISABLE_SEARCH_DS_FLAG 플래그를 사용하여 함수를 호출하여 식별 이름의 네트워크 검색을 표시하지 않을 수 있습니다.

왼쪽 16비트 이동 비트 길이는 논리 OR 연산자(|)를 사용하여 dwGroupId 매개 변수에 지정할 수 있습니다. 이는 CRYPT_OID_INFO 구조체의 ExtraInfo 멤버에 지정된 비트 길이가 있는 CRYPT_ENCRYPT_ALG_OID_GROUP_ID 그룹 항목에만 적용됩니다. 현재 AES 암호화 알고리즘만 이 알고리즘을 사용합니다. 상수 CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT 교대 근무에 사용할 수 있습니다. 예를 들어 비트 길이가 192인 BCRYPT_AES_ALGORITHM 대한 OID 정보를 찾으려면 다음과 같이 CryptFindOIDInfo 를 호출합니다.


DWORD dwBitLen = 192;

PCCRYPT_OID_INFO pOIDInfo = CryptFindOIDInfo(
     CRYPT_OID_INFO_CNG_ALGID_KEY,
     (void *) BCRYPT_AES_ALGORITHM,
     CRYPT_ENCRYPT_ALG_OID_GROUP_ID |
         (dwBitLen << CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT)
     );


요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 wincrypt.h
라이브러리 Crypt32.lib
DLL Crypt32.dll

추가 정보

ALG_ID

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_OID_INFO

CryptRegisterOIDInfo

CryptUnregisterOIDInfo

OID 지원 함수