通訊協定
啟動
定義於 fuchsia.weave/bootstrap.fidl
這個通訊協定可讓元件提供從現有 Weave 實作衍生的初始設定資料,以確保 Weave 織布和其他 Weave 設定或設定資料持續運作。
ImportWeaveConfig
匯入 JSON 格式的 Weave 設定,提供預期能滿足 Weave DeviceLayer ConfigurationManager 格式的資料。
此呼叫成功完成後,設定保證會留存。
要求
名稱 | 類型 |
---|---|
config_json |
fuchsia.mem/Buffer
|
回應
名稱 | 類型 |
---|---|
payload |
Bootstrap_ImportWeaveConfig_Result
|
FactoryDataManager
這個通訊協定可用於擷取可能經過靜態加密的工廠資料。
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
|
佈建工具
這個通訊協定用於一次性佈建作業。
GenerateKeyPair
針對及時佈建作業產生金鑰,用於處理 Weave 作業憑證。成功後,系統會在 result
中傳回已包裝的私密金鑰和公開金鑰組合。wrapped_private_key
可以傳遞至 Signer.SignHashWithPrivateKey 以簽署 Weave 訊息。
Weave 目前僅支援 ECDSA 簽名。這個通訊協定會傳回與簽署者通訊協定 (例如 P256) 相容的金鑰組。
要求
<EMPTY>
回應
名稱 | 類型 |
---|---|
payload |
Provisioner_GenerateKeyPair_Result
|
簽署人
此通訊協定可用於以工廠佈建的 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
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
pairing_code |
vector<uint8>[16]
|
無預設 |
FactoryDataManager_GetWeaveCertificate_Response 資源
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
certificate |
fuchsia.mem/Buffer
|
無預設 |
HostPort
定義於 fuchsia.weave/weavestack.fidl
代表可連線端點的主機和通訊埠組合。
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
host |
Host
|
無預設 | |
port |
uint16
|
無預設 |
Provisioner_GenerateKeyPair_Response
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
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
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
signature |
vector<uint8>[139]
|
無預設 |
Signer_SignHash_Response
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
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
名稱 | 值 | 說明 |
---|---|---|
FILE_NOT_FOUND |
1 |
在儲存空間中找不到金鑰/配對代碼。 |
CRYPTO_ERROR |
2 |
加密編譯作業時發生錯誤。 |
INVALID_ARGUMENT |
3 |
提供的引數無效。 |
INVALID_STATE |
4 |
Weave 處於無效狀態,無法支援這項作業。 |
UNSPECIFIED_ERROR |
2147483647 |
發生不明或非特定錯誤。 |
資料表
PairingState
定義於 fuchsia.weave/weavestack.fidl
配對/佈建目前的狀態。在完全未佈建的裝置或恢復原廠設定時,所有狀態都會是 false
。在明確的 ResetConfig 呼叫或恢復原廠設定的情況下,佈建狀態只會從 false
轉換至 true
,因為 Weave 設定檔已佈建。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
is_weave_fully_provisioned |
bool
|
Wea 是否已完整佈建?這表示所有佈建作業均如設定中所述完成。 |
2 |
is_wlan_provisioned |
bool
|
是否已佈建 Wi-Fi?預設值為 false。 |
3 |
is_thread_provisioned |
bool
|
Thread 是否已佈建完成?預設值為 false。 |
4 |
is_fabric_provisioned |
bool
|
織布產品是否已佈建完成?預設值為 false。 |
5 |
is_service_provisioned |
bool
|
服務是否已佈建完成?預設值為 false。 |
聯合國
Bootstrap_ImportWeaveConfig_Result 嚴格
定義於 fuchsia.weave/bootstrap.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Bootstrap_ImportWeaveConfig_Response
|
|
2 |
err |
zx/Status
|
FactoryDataManager_GetPairingCode_Result 嚴格
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
FactoryDataManager_GetPairingCode_Response
|
|
2 |
err |
ErrorCode
|
FactoryDataManager_GetWeaveCertificate_Result 嚴格 資源
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
FactoryDataManager_GetWeaveCertificate_Response
|
|
2 |
err |
ErrorCode
|
代管嚴格主機
定義於 fuchsia.weave/weavestack.fidl
主機名稱或 IP 位址形式的主機表示法。
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
hostname |
fuchsia.net/Hostname
|
|
2 |
ip_address |
fuchsia.net/IpAddress
|
Provisioner_GenerateKeyPair_Result 嚴格
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Provisioner_GenerateKeyPair_Response
|
|
2 |
err |
ErrorCode
|
Signer_SignHashWithPrivateKey_Result 嚴格
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Signer_SignHashWithPrivateKey_Response
|
|
2 |
err |
ErrorCode
|
Signer_SignHash_Result 嚴格
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Signer_SignHash_Response
|
|
2 |
err |
ErrorCode
|
Stack_GetQrCode_Result 嚴格
定義於 fuchsia.weave/weavestack.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Stack_GetQrCode_Response
|
|
2 |
err |
ErrorCode
|
Stack_ResetConfig_Result 嚴格
定義於 fuchsia.weave/weavestack.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Stack_ResetConfig_Response
|
|
2 |
err |
ErrorCode
|
帳單
ResetConfigFlags 嚴格
類型:uint16
定義於 fuchsia.weave/weavestack.fidl
ResetConfig 標記。
名稱 | 值 | 說明 |
---|---|---|
NETWORK_CONFIG |
1 | 重設網路設定資訊。 |
FABRIC_CONFIG |
2 | 重設架構設定資訊。 |
SERVICE_CONFIG |
4 | 重設服務設定資訊。 |
OPERATIONAL_CREDENTIALS |
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 中的端點時,用於識別所需的服務端點。 |