Fuchsia.weave

新增日期:7

通訊協定

啟動

定義於 fuchsia.weave/bootstrap.fidl

這個通訊協定可讓元件提供從現有 Weave 實作衍生的初始設定資料,以確保 Weave 織布和其他 Weave 設定或設定資料持續運作。

ImportWeaveConfig

匯入 JSON 格式的 Weave 設定,提供預期能滿足 Weave DeviceLayer ConfigurationManager 格式的資料。

此呼叫成功完成後,設定保證會留存。

要求

名稱類型
config_json fuchsia.mem/Buffer

回應

名稱類型
payload Bootstrap_ImportWeaveConfig_Result

FactoryDataManager

定義於 fuchsia.weave/auth.fidl

這個通訊協定可用於擷取可能經過靜態加密的工廠資料。

GetPairingCode

成功時寄還裝置 pairing_code

要求

<EMPTY>

回應

名稱類型
payload FactoryDataManager_GetPairingCode_Result

GetWeaveCertificate

傳回工廠佈建的 Weave 憑證,格式為 PEM。

要求

<EMPTY>

回應

名稱類型
payload FactoryDataManager_GetWeaveCertificate_Result

PairingStateWatcher

定義於 fuchsia.weave/weavestack.fidl

監控 Weave 中配對狀態的變化。從 fuchsia.weave/Stack.GetPairingStateWatcher 擷取。

WatchPairingState

傳回配對狀態。

第一個呼叫會傳回目前的配對狀態或封鎖,直到配對狀態可用為止。後續呼叫會遭到封鎖,直到配對狀態變更為止。

如果先前的通話仍在等待中,呼叫 WatchPairingState,系統將透過 ZX_ERR_BAD_STATE 關閉管道。

要求

<EMPTY>

回應

名稱類型
state PairingState

佈建工具

定義於 fuchsia.weave/auth.fidl

這個通訊協定用於一次性佈建作業。

GenerateKeyPair

針對及時佈建作業產生金鑰,用於處理 Weave 作業憑證。成功後,系統會在 result 中傳回已包裝的私密金鑰和公開金鑰組合。wrapped_private_key 可以傳遞至 Signer.SignHashWithPrivateKey 以簽署 Weave 訊息。

Weave 目前僅支援 ECDSA 簽名。這個通訊協定會傳回與簽署者通訊協定 (例如 P256) 相容的金鑰組。

要求

<EMPTY>

回應

名稱類型
payload Provisioner_GenerateKeyPair_Result

簽署人

定義於 fuchsia.weave/auth.fidl

此通訊協定可用於以工廠佈建的 Weave 金鑰或產生的私密金鑰簽署作業。

SignHash

使用原廠佈建金鑰簽署提供的 hash。成功時,系統會在 signature 中傳回結果。簽章必須是 Weave 支援的類型,且必須採用 ASN.1 DER SEQUENCE 的標準格式。這項作業必須支援 SHA1 和 SHA256 雜湊值。

要求

名稱類型
hash vector<uint8>[32]

回應

名稱類型
payload Signer_SignHash_Result

SignHashWithPrivateKey

使用提供的 wrapped_private_key 簽署提供的 hash。成功後,系統會在 signature 中傳回結果。簽章必須是 Weave 支援的類型,且必須採用 ASN.1 DER SEQUENCE 的標準格式。這項作業必須支援 SHA1 和 SHA256 雜湊值。

要求

名稱類型
hash vector<uint8>[32]
wrapped_private_key PrivateKey

回應

名稱類型
payload Signer_SignHashWithPrivateKey_Result

堆疊

定義於 fuchsia.weave/weavestack.fidl

WeaveStack 提供的呼叫和服務。這些呼叫的設計目的在於納入 Weave 進行調整,並為 Weave 應用程式或元件提供 Weave 公開資訊的相關資訊或功能。

GetPairingStateWatcher

傳回 PairingStateWatcher,監控配對狀態的變更。

要求

名稱類型
watcher server_end<PairingStateWatcher>

GetQrCode

傳回可在配對程序中使用的 QR code。

要求

<EMPTY>

回應

名稱類型
payload Stack_GetQrCode_Result

GetSvcDirectoryWatcher

傳回 SvcDirectoryWatcher 以觀察特定端點在 Weave 服務目錄中的變更。

要求

名稱類型
endpoint_id ServiceEndpointId
watcher server_end<SvcDirectoryWatcher>

ResetConfig

重設 Weave 設定。

要求

名稱類型
flags ResetConfigFlags

回應

名稱類型
payload Stack_ResetConfig_Result

StackProvider

定義於 fuchsia.weave/weavestack.fidl

由其他元件提供給 WeaveStack 的服務。

SetWlanNetworkConfigProvider

向 WeaveStack 註冊 WLAN 網路設定供應商。 一次只能設定一個供應商。

有使用中的提供者時嘗試設定新提供者時,將管道關閉至使用中的提供者,並由新的提供者取代。

TODO(https://fxbug.dev/42140705):如果多個元件可共用目前的 WLAN 網路設定,這個介面可能會遭到淘汰。

要求

名稱類型
provider WlanNetworkConfigProvider

SvcDirectoryWatcher

定義於 fuchsia.weave/weavestack.fidl

監控 Weave Service Directory 項目中特定端點 ID 的變更。已在指定端點 ID,並從 fuchsia.weave/Stack.GetServiceDirectoryWatcher 擷取這個通訊協定。

WatchServiceDirectory

傳回已觀察端點 ID 的 HostPorts 向量。

第一個呼叫會傳回目前的 HostPorts 或封鎖清單,直到服務提供該清單為止。後續呼叫將遭到封鎖,直到執行新的 ServiceDirectory 查詢並傳回與已觀察端點 ID 相關聯的清單,且清單不一定與先前的值相同。

如果先前的呼叫仍在等待中,呼叫 WatchServiceDirectory,會導致管道透過 ZX_ERR_BAD_STATE 關閉。

要求

<EMPTY>

回應

名稱類型
host_port_list vector<HostPort>[256]

WlanNetworkConfigProvider

定義於 fuchsia.weave/weavestack.fidl

做為 WeaveStack 做為 WLAN 網路設定供應商的元件必須實作此操作。

WatchConnectedNetwork

有新資訊時傳回目前的網路設定。

如果可用,第一次呼叫會傳回目前的網路設定,否則傳回空白設定。WeaveStack 會耗用網路設定 並傳送另一個要求

要求

<EMPTY>

回應

名稱類型
network_config fuchsia.wlan.policy/NetworkConfig

結構化

Bootstrap_ImportWeaveConfig_Response

定義於 fuchsia.weave/bootstrap.fidl

<EMPTY>

FactoryDataManager_GetPairingCode_Response

定義於 fuchsia.weave/auth.fidl

欄位類型說明預設
pairing_code vector<uint8>[16] 無預設

FactoryDataManager_GetWeaveCertificate_Response 資源

定義於 fuchsia.weave/auth.fidl

欄位類型說明預設
certificate fuchsia.mem/Buffer 無預設

HostPort

定義於 fuchsia.weave/weavestack.fidl

代表可連線端點的主機和通訊埠組合。

欄位類型說明預設
host Host 無預設
port uint16 無預設

Provisioner_GenerateKeyPair_Response

定義於 fuchsia.weave/auth.fidl

欄位類型說明預設
wrapped_private_key PrivateKey 無預設
public_key vector<uint8>[65] 無預設

QrCode

定義於 fuchsia.weave/weavestack.fidl

用於配對的 QR code 資料。

欄位類型說明預設
data string[256]

以字串格式的 QR code 資料,在 QR code 中提供這個字串應足以進行配對。

無預設

Signer_SignHashWithPrivateKey_Response

定義於 fuchsia.weave/auth.fidl

欄位類型說明預設
signature vector<uint8>[139] 無預設

Signer_SignHash_Response

定義於 fuchsia.weave/auth.fidl

欄位類型說明預設
signature vector<uint8>[139] 無預設

Stack_GetQrCode_Response

定義於 fuchsia.weave/weavestack.fidl

欄位類型說明預設
qr_code QrCode 無預設

Stack_ResetConfig_Response

定義於 fuchsia.weave/weavestack.fidl

<EMPTY>

ENUMS

ErrorCode strict

類型:uint32

定義於 fuchsia.weave/common.fidl

名稱說明
1

在儲存空間中找不到金鑰/配對代碼。

2

加密編譯作業時發生錯誤。

3

提供的引數無效。

4

Weave 處於無效狀態,無法支援這項作業。

2147483647

發生不明或非特定錯誤。

資料表

PairingState

定義於 fuchsia.weave/weavestack.fidl

配對/佈建目前的狀態。在完全未佈建的裝置或恢復原廠設定時,所有狀態都會是 false。在明確的 ResetConfig 呼叫或恢復原廠設定的情況下,佈建狀態只會從 false 轉換至 true,因為 Weave 設定檔已佈建。

序數欄位類型說明
is_weave_fully_provisioned bool

Wea 是否已完整佈建?這表示所有佈建作業均如設定中所述完成。

is_wlan_provisioned bool

是否已佈建 Wi-Fi?預設值為 false。

is_thread_provisioned bool

Thread 是否已佈建完成?預設值為 false。

is_fabric_provisioned bool

織布產品是否已佈建完成?預設值為 false。

is_service_provisioned bool

服務是否已佈建完成?預設值為 false。

聯合國

Bootstrap_ImportWeaveConfig_Result 嚴格

定義於 fuchsia.weave/bootstrap.fidl

序數Variant類型說明
response Bootstrap_ImportWeaveConfig_Response
err zx/Status

FactoryDataManager_GetPairingCode_Result 嚴格

定義於 fuchsia.weave/auth.fidl

序數Variant類型說明
response FactoryDataManager_GetPairingCode_Response
err ErrorCode

FactoryDataManager_GetWeaveCertificate_Result 嚴格 資源

定義於 fuchsia.weave/auth.fidl

序數Variant類型說明
response FactoryDataManager_GetWeaveCertificate_Response
err ErrorCode

代管嚴格主機

定義於 fuchsia.weave/weavestack.fidl

主機名稱或 IP 位址形式的主機表示法。

序數Variant類型說明
hostname fuchsia.net/Hostname
ip_address fuchsia.net/IpAddress

Provisioner_GenerateKeyPair_Result 嚴格

定義於 fuchsia.weave/auth.fidl

序數Variant類型說明
response Provisioner_GenerateKeyPair_Response
err ErrorCode

Signer_SignHashWithPrivateKey_Result 嚴格

定義於 fuchsia.weave/auth.fidl

序數Variant類型說明
response Signer_SignHashWithPrivateKey_Response
err ErrorCode

Signer_SignHash_Result 嚴格

定義於 fuchsia.weave/auth.fidl

序數Variant類型說明
response Signer_SignHash_Response
err ErrorCode

Stack_GetQrCode_Result 嚴格

定義於 fuchsia.weave/weavestack.fidl

序數Variant類型說明
response Stack_GetQrCode_Response
err ErrorCode

Stack_ResetConfig_Result 嚴格

定義於 fuchsia.weave/weavestack.fidl

序數Variant類型說明
response Stack_ResetConfig_Response
err ErrorCode

帳單

ResetConfigFlags 嚴格

類型:uint16

定義於 fuchsia.weave/weavestack.fidl

ResetConfig 標記。

名稱說明
1

重設網路設定資訊。

2

重設架構設定資訊。

4

重設服務設定資訊。

8

重設裝置運作憑證。

業者

名稱類型說明
MAX_HOST_PORTS 256 uint32

Weave 在 HostPortList 中可傳回的 HostPorts 數量上限,如 uint8 為 HostPortLists 建立索引。

MAX_PUBLIC_KEY_SIZE 65 uint32

產生金鑰組時產生的公開金鑰大小上限。

MAX_QR_CODE_SIZE 256 uint32

採用字串格式編碼的 QR code 支援的尺寸最大可能為。

MAX_SIGNATURE_SIZE 139 uint32

Weave 支援的簽名大小上限。

不過,Weave 目前只支援使用 P224 曲線的 ECDSA 簽章,以便此通訊協定支援日後針對支援 Weave 簽名的未來變更,傳回的簽名大小上限設定為 139 個位元組,因為這是傳回已編碼 ECDSA P521 簽名所需的最大空間。

RESET_CONFIG_ALL 255 uint16

重設所有裝置設定資訊。

別名

名稱說明
PrivateKey vector[fidl/MAX]

代表已包裝私密金鑰的位元組。由於包裝的大小是由實作所定義,因此位元組只會受到 MAX 限制。在結構和內容中,位元組都應視為不透明,因為這個值只是對 Provisioner.GenerateKeyPair 等作業意義。

ServiceEndpointId uint64

這個端點 ID 在查詢 Weave Service Directory 中的端點時,用於識別所需的服務端點。