协议
引导
在 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
返回 PEM 格式的出厂配置的 Weave 证书。
请求
<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 签名。此协议会返回一个与 Signer 协议兼容的密钥对(例如 P256)。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
payload |
Provisioner_GenerateKeyPair_Result
|
签署者
在 fuchsia.weave/auth.fidl 中定义
此协议用于使用出厂配置的 Weave 密钥或生成的私钥对操作进行签名。
SignHash
使用出厂配置的密钥为提供的 hash
签名。成功后,将在 signature
中返回结果。签名必须是 Weave 支持的类型,并且必须采用 ASN.1 DER 序列的标准形式。此操作必须支持 SHA1 和 SHA256 哈希值。
请求
名称 | 类型 |
---|---|
hash |
vector<uint8>[32]
|
响应
名称 | 类型 |
---|---|
payload |
Signer_SignHash_Result
|
SignHashWithPrivateKey
使用提供的 wrapped_private_key
对提供的 hash
进行签名。成功后,结果将在 signature
中返回。签名必须是 Weave 支持的类型,并且必须采用 ASN.1 DER 序列的标准形式。此操作必须支持 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
返回可在配对过程中使用的二维码。
请求
<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 中定义
监控特定端点 ID 的 Weave Service Directory 条目中的更改。端点 ID 在 中指定,此协议从 fuchsia.weave/Stack.GetServiceDirectoryWatcher 检索。
WatchServiceDirectory
返回受监控端点 ID 的 HostPort 矢量。
首次调用会返回 HostPort 或 地址块的当前列表,直到可以通过服务获取此列表。后续调用将阻塞,直到进行新的 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 中定义
用于配对的二维码数据。
字段 | 类型 | 说明 | 默认 |
---|---|---|---|
data |
string[256]
|
字符串格式的二维码数据(在二维码中提供此字符串应足以进行配对)。 |
无默认取景方式 |
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>
枚举
ErrorCode 严格
类型:uint32
在 fuchsia.weave/common.fidl 中定义
名称 | 值 | 说明 |
---|---|---|
FILE_NOT_FOUND |
1 |
存储空间中找不到密钥/配对代码。 |
CRYPTO_ERROR |
2 |
加密操作期间发生错误。 |
INVALID_ARGUMENT |
3 |
提供的参数无效。 |
INVALID_STATE |
4 |
Weave 处于无效状态,无法支持此操作。 |
UNSPECIFIED_ERROR |
2147483647 |
发生未知或非具体错误。 |
表
PairingState
在 fuchsia.weave/weavestack.fidl 中定义
配对/配置的当前状态。当设备完全取消配置或恢复出厂设置时,所有状态都将为 false
。在显式 ResetConfig 调用或恢复出厂设置之外,配置状态仅会在配置 Weave 配置文件时从 false
转换为 true
。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
is_weave_fully_provisioned |
bool
|
Weave 是否已完全配置?这意味着所有预配均已按预期完成配置。 |
2 |
is_wlan_provisioned |
bool
|
是否配置了 Wi-Fi?默认值为 false。 |
3 |
is_thread_provisioned |
bool
|
是否已配置线程?默认值为 false。 |
4 |
is_fabric_provisioned |
bool
|
是否已配置结构?默认值为 false。 |
5 |
is_service_provisioned |
bool
|
是否已配置该服务?默认值为 false。 |
联合
Bootstrap_ImportWeaveConfig_Result 严格
在 fuchsia.weave/bootstrap.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Bootstrap_ImportWeaveConfig_Response
|
|
2 |
err |
zx/Status
|
FactoryDataManager_GetPairingCode_Result 严格
在 fuchsia.weave/auth.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
FactoryDataManager_GetPairingCode_Response
|
|
2 |
err |
ErrorCode
|
FactoryDataManager_GetWeaveCertificate_Result strict 资源
在 fuchsia.weave/auth.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
FactoryDataManager_GetWeaveCertificate_Response
|
|
2 |
err |
ErrorCode
|
主机严格
在 fuchsia.weave/weavestack.fidl 中定义
以主机名或 IP 地址表示主机。
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
hostname |
fuchsia.net/Hostname
|
|
2 |
ip_address |
fuchsia.net/IpAddress
|
Provisioninger_GenerateKeyPair_Result 严格
在 fuchsia.weave/auth.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Provisioner_GenerateKeyPair_Response
|
|
2 |
err |
ErrorCode
|
Signer_SignHashWithPrivateKey_Result 严格
在 fuchsia.weave/auth.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Signer_SignHashWithPrivateKey_Response
|
|
2 |
err |
ErrorCode
|
Signer_SignHash_Result 严格
在 fuchsia.weave/auth.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Signer_SignHash_Response
|
|
2 |
err |
ErrorCode
|
Stack_GetQrCode_Result 严格
在 fuchsia.weave/weavestack.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Stack_GetQrCode_Response
|
|
2 |
err |
ErrorCode
|
Stack_ResetConfig_Result 严格
在 fuchsia.weave/weavestack.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Stack_ResetConfig_Response
|
|
2 |
err |
ErrorCode
|
BITS
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 中返回的 HostPort 数上限,因为 Weave 会通过 uint8 为 HostPortList 编制索引。 |
MAX_PUBLIC_KEY_SIZE |
65
|
uint32 |
生成密钥对时生成的公钥的大小上限。 |
MAX_QR_CODE_SIZE |
256
|
uint32 |
以字符串格式编码的二维码可能支持的最大大小。 |
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 中查找端点时识别需要关注的服务端点。 |