次の方法で共有


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、配列の 2 番目の値がCERT_RDN_UNICODE_STRING、配列の 3 番目の値が 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 パラメーターに公開キー アルゴリズムのパラメーターを含めます。

量子後の使用

PQ OID (上記) で使用する場合、CRYPT_PUBKEY_ALG_OID_GROUP_IDには次の ExtraInfo フィールドがあります。

フィールド 説明
DWORD[0] フラグ
DWORD[1] パブリック マジック ( 例: BCRYPT_MLDSA_PUBLIC_MAGIC)
DWORD[2] プライベート マジック (例: BCRYPT_MLDSA_PRIVATE_SEED_MAGIC)
DWORD[4] 公開キーのバイト長
DWORD[5] 秘密キーのバイト長
DWORD[6] シグネチャのバイト長

PQ OID で使用する場合、CRYPT_SIGN_ALG_OID_GROUP_IDには次の ExtraInfo フィールドがあります。

フィールド 説明
DWORD[0] フラグ
DWORD[1] シグネチャのバイト長

CRYPT_HASH_ALG_OID_GROUP_ID は、署名前にハッシュがないことを示す L"NoHash" に設定でき、PQ キーは ToBeSigned バイトに 直接署名します。

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

dwGroupId の他の値に対して、pwszCNGAlgid メンバーを空の文字列 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 アルゴリズムのエンコードされたパラメーターから取得されます。
CRYPT32_MLDSA_44_ALGORITHM
L"ML-DSA:44"
ML-DSA アルゴリズムは、ML-DSA の CNG アルゴリズム名と CNG パラメーター セット 44 (NIST セキュリティ カテゴリ 2) を組み合わせたものです。
CRYPT32_MLDSA_65_ALGORITHM
L"ML-DSA:65"
ML-DSA アルゴリズムは、ML-DSA の CNG アルゴリズム名と CNG パラメーター セット 65 (NIST セキュリティ カテゴリ 3) を組み合わせたものです。
CRYPT32_MLDSA_87_ALGORITHM
L"ML-DSA:87"
ML-DSA アルゴリズムは、ML-DSA の CNG アルゴリズム名と CNG パラメーター セット 87 (NIST セキュリティ カテゴリ 5) を組み合わせたものです。
CRYPT_OID_INFO_NO_HASH_ALGORITHM
L"NoHash"
PQ デジタル署名の場合は、署名前にハッシュがないことを示し、PQ キーは ToBeSigned バイトに直接署名します。

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