IX509CertificateRequestPkcs7::InitializeDecode 方法 (certenroll.h)
InitializeDecode 方法會譯碼現有的已簽署或未簽署 PKCS #7 要求物件,並使用它初始化新的 PKCS #7 物件。 現有的要求包含在位元組陣列中,該數位已使用 可辨別編碼規則 ( DER) 編碼,如抽象語法表示法一 (ASN.1) 標準所定義。 位元組陣列是以純二進位序列或 Unicode 編碼的字串來表示。
語法
HRESULT InitializeDecode(
[in] BSTR strEncodedData,
[in] EncodingType Encoding
);
參數
[in] strEncodedData
包含 DER 編碼要求的 BSTR 變數。
[in] Encoding
EncodingType 列舉值,指定套用至包含 DER 編碼要求的輸入字串的 Unicode 編碼類型。 預設值 為 XCN_CRYPT_STRING_BASE64。
傳回值
如果函式成功,函式會傳回 S_OK。
如果函式失敗,它會傳回 指出錯誤的 HRESULT 值。 可能的值包括 (但不限於) 下表中的這些值。 如需常見錯誤碼的清單,請參閱 一般 HRESULT 值。
傳回碼/值 | Description |
---|---|
|
要求對象已經初始化。 |
備註
InitializeDecode 方法:
- 譯碼輸入上指定的 PKCS #7 要求。
- 使用譯碼的物件來建立具有下列集合的內部 PKCS #10 要求:
- 空的 ICryptAttributes 集合。
- 空的 IX509Extensions 集合。
- 重要延伸模組的空白 IObjectIds 集合。
- 要從新要求中隱藏之屬性和延伸模組 OID 的空白 IObjectIds 集合。
- 將譯碼的延伸模組新增至 IX509Extensions 集合。
- 將譯碼的屬性新增至 ICryptAttributes 集合
- 設定 ClientId 屬性。
- 設定 TemplateObjectId 屬性。
- 使用原始 PKCS #7 要求上的簽章來建立新的 ISignerCertificate 物件。
- 從 ISignerCertificate 物件擷取 IX509SignatureInformation 物件。
- 使用原始簽章和哈希演算法,初始化新的 IX509SignatureInformation 物件。
- 將 PKCS #10 要求設定為內部要求物件。
根據預設, InitializeDecode 方法會假設要譯碼的憑證要求適用於終端使用者。 從 Windows 8 和 Windows Server 2012 開始,您可以變更此預設行為。 建立 IX509CertificateRequestPkcs7 介面的實例之後,請將 Encoding 參數設定為 XCN_CRYPT_STRING_BINARY,並將 strEncodedData 參數設定為下列其中一個值,以呼叫 InitializeDecode:
值 | Description |
---|---|
L“ContextMachine” | 編碼的憑證要求適用於計算機。 |
L“ContextUser” | 編碼的憑證要求適用於終端使用者。 |
L“ContextAdministratorForceMachine” | 系統管理員正在代表計算機要求編碼的憑證。 |
然後,使用 strEncodedData 自變數中設定的編碼憑證,再次呼叫 InitializeDecode 方法。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | certenroll.h |
Dll | CertEnroll.dll |