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 群組標識符之一。
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_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 成員中的旗標。
值 | 意義 |
---|---|
|
不再使用此旗標。
在呼叫 CryptVerifySignature 函式或呼叫 CryptSignHash 函式之後,停止重新格式化簽章。 |
|
編碼時省略 NULL 參數。 |
|
公鑰僅用於加密。 |
|
公鑰僅用於簽章。 |
|
不再使用此旗標。
在 PKCS #7 訊息的 digestEncryptionAlgorithm 參數中包含公鑰演算法的參數。 |
pwszCNGAlgid
傳遞至 CNG 函式的演算法識別符字串 (Bcrypt.h 和 Ncrypt.h) 中定義的 BCrypt* 和 NCrypt* 函式。 CNG 函式會使用演算法識別符字串,例如 L“SHA1”,而不是 ALG_ID 數據類型常數,例如 CALG_SHA1。Windows Server 2003 和 Windows XP: 此成員無法使用。
#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 成員也可以設定為未直接傳遞至 CNG 函式的字串值。 下表列出這些值及其意義。
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 |