CRYPT_OID_INFO結構 (wincrypt.h)

CRYPT_OID_INFO 結構包含 OID (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

這個成員尚未實作。 它一律設定為零。

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 具有 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,而陣列中的第三個值為零。

下列值用於 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 函式會使用演算法識別符字串,例如 L“SHA1”,而不是 ALG_ID 數據類型常數,例如 CALG_SHA1Windows 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 演演算法的編碼參數取得。

pwszCNGExtraAlgid

pwszCNGAlgid 成員中的字串以外的額外演算法字串,可以傳遞至 CNG 函式, (Bcrypt.h 和 Ncrypt.h) 中定義的 BCrypt* 和 NCrypt* 函式。

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