provider-object
名稱
provider-object - 供應商原生物件抽象規格
語法
#include <openssl/core_object.h>
#include <openssl/core_names.h>
說明
供應商原生物件抽象是一組 OSSL_PARAM(3) 鍵和值,可用於將供應商原生物件傳遞給 OpenSSL 程式庫程式碼或在不同供應商作業實作之間傳遞,並在 OpenSSL 程式庫程式碼的協助下傳遞。
用意是讓某些供應商原生作業可以傳遞任何屬於其他作業或屬於 OpenSSL 程式庫程式碼的物件。
物件可以透過下列方式傳遞
依據值
這表示會將物件資料傳遞為八進位字串或 UTF8 字串,其他提供的實作可以透過各種方式處理。物件的編碼取決於其使用的脈絡;例如,OSSL_DECODER(3) 允許多種編碼,具體取決於現有的解碼器。如果核心 OpenSSL 程式庫功能要直接處理資料,則必須針對所有物件類型以 DER 編碼,但 OSSL_OBJECT_NAME 除外(請參閱下方的「參數參考」),其中假設為純粹的 UTF8 字串。
依據參考
這表示不會直接傳遞物件資料,而是傳遞物件參考。這是一個八進位字串,只有正確的供應商才能正確理解。
依據值傳遞的物件可以由任何處理 DER 編碼物件的程式使用。
依據參考傳遞的物件需要物件來源實作(我們稱之為 X)及其目標實作(我們稱之為 Y)有更高層級的合作
目標實作中的物件載入函式
目標實作 (Y) 可能有一個函式可以接收物件參考。只有當目標實作與產生問題物件抽象的供應商相同時,才能使用此函式 (X)。
要使用的確切目標實作是由物件類型和物件資料類型決定的。例如,當 OpenSSL 程式庫收到具有物件類型 OSSL_OBJECT_PKEY 的物件抽象時,它會使用物件資料類型作為其金鑰類型(EVP_KEYMGMT_fetch(3) 中的第二個引數)來擷取 provider-keymgmt(7)。
原始實作中的物件匯出器
原始實作 (X) 可能有匯出器函數。此匯出器函數可用於匯出 OSSL_PARAM(3) 形式的物件,然後可以由目標實作的匯入函數匯入。
這可用於無法從同一個提供者擷取目標實作 (Y) 的情況。
參數參考
提供者原生物件抽象是具有下列參數選項的 OSSL_PARAM(3)
- "data" (OSSL_OBJECT_PARAM_DATA) <八位元組字串> 或 <UTF8 字串>
-
傳遞值的物件資料。
- "reference" (OSSL_OBJECT_PARAM_REFERENCE) <八位元組字串>
-
傳遞參考的物件資料。
- "type" (OSSL_OBJECT_PARAM_TYPE) <整數>
-
物件類型,一個數字,可能具有下列任何值 (全部定義於 <openssl/core_object.h>)
- OSSL_OBJECT_NAME
-
物件資料只能傳遞值,而且應該是 UTF8 字串。
這對於 provider-storemgmt(7) 有用,當 URI 載入產生新的 URI。
- OSSL_OBJECT_PKEY
-
物件資料適用於提供者原生 EVP_PKEY 金鑰資料。物件資料可以傳遞值或傳遞參考。
- OSSL_OBJECT_CERT
-
物件資料適用於 X509 資料。此物件類型的物件資料只能傳遞值,而且應該是八位元組字串。
由於沒有提供者原生的 X.509 物件,因此預期接收此物件抽象的 OpenSSL 函式庫會使用 d2i_X509() 將資料轉換為 X509 物件。
- OSSL_OBJECT_CRL
-
物件資料適用於 X509_CRL 資料。物件資料只能傳遞值,而且應該是八位元組字串。
由於沒有提供者原生的 X.509 CRL 物件,因此預期接收此物件抽象的 OpenSSL 函式庫會使用 d2i_X509_CRL() 將資料轉換為 X509_CRL 物件。
- "data-type" (OSSL_OBJECT_PARAM_DATA_TYPE) <UTF8 字串>
-
物件內容的特定類型。合法值取決於物件類型;如果是 OSSL_OBJECT_PKEY,預期資料類型是適合擷取 provider-keymgmt(7) 的金鑰類型,該金鑰類型可以處理資料。
- "data-structure" (OSSL_OBJECT_PARAM_DATA_STRUCTURE) <UTF8 字串>
-
物件內容的最外層結構。合法值取決於物件類型。
- "desc" (OSSL_OBJECT_PARAM_DESC) <UTF8 字串>
-
描述物件額外詳細資料的人類可讀文字。
當使用供應商原生物件抽象時,它必須至少包含一種形式的物件資料(傳遞值的物件資料,即「資料」項目,或傳遞參考的物件資料,即「參考」項目)。兩者可能會同時存在,在這種情況下,收到此資料的 OpenSSL 程式庫程式碼將使用最理想的變體。
對於物件類型為 OSSL_OBJECT_NAME 的物件,必須提供該物件類型。
另請參閱
歷程
供應商的概念及其周邊的一切是在 OpenSSL 3.0 中引入的。
版權
Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved.
在 Apache 授權條款 2.0(「授權條款」)下授權。您不得使用此檔案,除非符合授權條款。您可以在原始程式碼散佈中的 LICENSE 檔案或 https://www.openssl.org/source/license.html 取得副本。