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_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 メンバーのフラグには、次の値が使用されます。
| 価値 | 意味 |
|---|---|
|
このフラグは使用されなくなりました。
CryptVerifySignature 関数が呼び出される前、または CryptSignHash 関数が呼び出された後に、署名の再フォーマットを停止します。 |
|
エンコード時に NULL パラメーターを省略します。 |
|
公開キーは暗号化にのみ使用されます。 |
|
公開キーは署名にのみ使用されます。 |
|
このフラグは使用されなくなりました。
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_ALGORITHML"ML-DSA:44" |
ML-DSA アルゴリズムは、ML-DSA の CNG アルゴリズム名と CNG パラメーター セット 44 (NIST セキュリティ カテゴリ 2) を組み合わせたものです。 |
CRYPT32_MLDSA_65_ALGORITHML"ML-DSA:65" |
ML-DSA アルゴリズムは、ML-DSA の CNG アルゴリズム名と CNG パラメーター セット 65 (NIST セキュリティ カテゴリ 3) を組み合わせたものです。 |
CRYPT32_MLDSA_87_ALGORITHML"ML-DSA:87" |
ML-DSA アルゴリズムは、ML-DSA の CNG アルゴリズム名と CNG パラメーター セット 87 (NIST セキュリティ カテゴリ 5) を組み合わせたものです。 |
CRYPT_OID_INFO_NO_HASH_ALGORITHML"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 |