blob: 574e66b33c94d3081c99ef821d0645efe61bdf15 [file] [log] [blame] [view]
<link rel="stylesheet" href="../style.css" />
[TOC]
# fuchsia.weave
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 7</span></div>
## **PROTOCOLS**
## Bootstrap {#Bootstrap}
*Defined in [fuchsia.weave/bootstrap.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/bootstrap.fidl;l=13)*
<p>Protocol to allow components to provide initial configuration data derived from
an existing Weave implementation to ensure continuity of the Weave fabric and
other Weave settings or configuration data.</p>
### ImportWeaveConfig {#Bootstrap.ImportWeaveConfig}
<p>Import a JSON-formatted Weave config providing data in the format
expected to satisfy the Weave DeviceLayer
<a href="https://github.com/openweave/openweave-core/blob/master/src/adaptations/device-layer/include/Weave/DeviceLayer/ConfigurationManager.h">ConfigurationManager</a>.</p>
<p>Configuration is guaranteed to have been persisted upon successful
completion of this call.</p>
#### Request {#Bootstrap.ImportWeaveConfig_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>config_json</code></td>
<td>
<code><a class='link' href='../fuchsia.mem/'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/#Buffer'>Buffer</a></code>
</td>
</tr>
</table>
#### Response {#Bootstrap.ImportWeaveConfig_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Bootstrap_ImportWeaveConfig_Result'>Bootstrap_ImportWeaveConfig_Result</a></code>
</td>
</tr>
</table>
## FactoryDataManager {#FactoryDataManager}
*Defined in [fuchsia.weave/auth.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/auth.fidl;l=74)*
<p>This protocol is used to retrieve factory data that may be encrypted at
rest.</p>
### GetPairingCode {#FactoryDataManager.GetPairingCode}
<p>Return the device <code>pairing_code</code> on success.</p>
#### Request {#FactoryDataManager.GetPairingCode_Request}
&lt;EMPTY&gt;
#### Response {#FactoryDataManager.GetPairingCode_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#FactoryDataManager_GetPairingCode_Result'>FactoryDataManager_GetPairingCode_Result</a></code>
</td>
</tr>
</table>
### GetWeaveCertificate {#FactoryDataManager.GetWeaveCertificate}
<p>Returns the factory provisioned Weave certificate in PEM format.</p>
#### Request {#FactoryDataManager.GetWeaveCertificate_Request}
&lt;EMPTY&gt;
#### Response {#FactoryDataManager.GetWeaveCertificate_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#FactoryDataManager_GetWeaveCertificate_Result'>FactoryDataManager_GetWeaveCertificate_Result</a></code>
</td>
</tr>
</table>
## PairingStateWatcher {#PairingStateWatcher}
*Defined in [fuchsia.weave/weavestack.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/weavestack.fidl;l=91)*
<p>Watches for changes in pairing state in Weave. Retrieved from
<a class='link' href='../fuchsia.weave/'>fuchsia.weave</a>/<a class='link' href='../fuchsia.weave/#Stack.GetPairingStateWatcher'>Stack.GetPairingStateWatcher</a>.</p>
### WatchPairingState {#PairingStateWatcher.WatchPairingState}
<p>Returns the state of pairing.</p>
<p>First call returns the current pairing state or blocks until the pairing
state is available. Subsequent calls will block until the pairing state
changes.</p>
<p>Calling WatchPairingState when a previous call is still pending will cause
the channel to be closed with <code>ZX_ERR_BAD_STATE</code>.</p>
#### Request {#PairingStateWatcher.WatchPairingState_Request}
&lt;EMPTY&gt;
#### Response {#PairingStateWatcher.WatchPairingState_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>state</code></td>
<td>
<code><a class='link' href='#PairingState'>PairingState</a></code>
</td>
</tr>
</table>
## Provisioner {#Provisioner}
*Defined in [fuchsia.weave/auth.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/auth.fidl;l=28)*
<p>This protocol is used for just-in-time provisioning operations.</p>
### GenerateKeyPair {#Provisioner.GenerateKeyPair}
<p>Generate key for just-in-time provisioning operations, used when
working with Weave operational certificates. On success, a wrapped
private key and public key pair is returned in <code>result</code>. The
<code>wrapped_private_key</code> can be passed to <a class='link' href='#Signer.SignHashWithPrivateKey'>Signer.SignHashWithPrivateKey</a>
to sign Weave messages.</p>
<p>Currently, Weave only supports ECDSA signatures. This protocol returns
a key-pair compatible with the Signer protocol (e.g. P256).</p>
#### Request {#Provisioner.GenerateKeyPair_Request}
&lt;EMPTY&gt;
#### Response {#Provisioner.GenerateKeyPair_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Provisioner_GenerateKeyPair_Result'>Provisioner_GenerateKeyPair_Result</a></code>
</td>
</tr>
</table>
## Signer {#Signer}
*Defined in [fuchsia.weave/auth.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/auth.fidl;l=46)*
<p>This protocol is used for signing operations with the factory-provisioned
Weave key or generated private keys.</p>
### SignHash {#Signer.SignHash}
<p>Sign the provided <code>hash</code> with the factory provisioned key. On success
the result is returned in <code>signature</code>. The signature must be of a type
that is supported by Weave, and must take the standard form of an ASN.1
DER SEQUENCE. This operation must support SHA1 and SHA256 hash values.</p>
#### Request {#Signer.SignHash_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>hash</code></td>
<td>
<code>vector&lt;uint8&gt;[32]</code>
</td>
</tr>
</table>
#### Response {#Signer.SignHash_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Signer_SignHash_Result'>Signer_SignHash_Result</a></code>
</td>
</tr>
</table>
### SignHashWithPrivateKey {#Signer.SignHashWithPrivateKey}
<p>Sign the provided <code>hash</code> with the provided <code>wrapped_private_key</code>. On
success, the result is returned in <code>signature</code>. The signature must be
of a type that is supported by Weave, and must take the standard form
of an ASN.1 DER SEQUENCE. This operation must support SHA1 and SHA256
hash values.</p>
#### Request {#Signer.SignHashWithPrivateKey_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>hash</code></td>
<td>
<code>vector&lt;uint8&gt;[32]</code>
</td>
</tr>
<tr>
<td><code>wrapped_private_key</code></td>
<td>
<code><a class='link' href='#PrivateKey'>PrivateKey</a></code>
</td>
</tr>
</table>
#### Response {#Signer.SignHashWithPrivateKey_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Signer_SignHashWithPrivateKey_Result'>Signer_SignHashWithPrivateKey_Result</a></code>
</td>
</tr>
</table>
## Stack {#Stack}
*Defined in [fuchsia.weave/weavestack.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/weavestack.fidl;l=123)*
<p>Calls and services available from WeaveStack. These calls are designed to
wrap the Weave adaptation and provide information or capabilities to Weave
applications or components that are interested in information that Weave
exposes.</p>
### GetPairingStateWatcher {#Stack.GetPairingStateWatcher}
<p>Returns a PairingStateWatcher to watch for changes in pairing state.</p>
#### Request {#Stack.GetPairingStateWatcher_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>watcher</code></td>
<td>
<code>server_end&lt;<a class='link' href='#PairingStateWatcher'>PairingStateWatcher</a>&gt;</code>
</td>
</tr>
</table>
### GetQrCode {#Stack.GetQrCode}
<p>Returns a QR code that can be used in the pairing process.</p>
#### Request {#Stack.GetQrCode_Request}
&lt;EMPTY&gt;
#### Response {#Stack.GetQrCode_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Stack_GetQrCode_Result'>Stack_GetQrCode_Result</a></code>
</td>
</tr>
</table>
### GetSvcDirectoryWatcher {#Stack.GetSvcDirectoryWatcher}
<p>Returns a SvcDirectoryWatcher to watch changes in the Weave service
directory for a particular endpoint.</p>
#### Request {#Stack.GetSvcDirectoryWatcher_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>endpoint_id</code></td>
<td>
<code><a class='link' href='#ServiceEndpointId'>ServiceEndpointId</a></code>
</td>
</tr>
<tr>
<td><code>watcher</code></td>
<td>
<code>server_end&lt;<a class='link' href='#SvcDirectoryWatcher'>SvcDirectoryWatcher</a>&gt;</code>
</td>
</tr>
</table>
### ResetConfig {#Stack.ResetConfig}
<p>Reset the Weave configuration.</p>
#### Request {#Stack.ResetConfig_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>flags</code></td>
<td>
<code><a class='link' href='#ResetConfigFlags'>ResetConfigFlags</a></code>
</td>
</tr>
</table>
#### Response {#Stack.ResetConfig_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Stack_ResetConfig_Result'>Stack_ResetConfig_Result</a></code>
</td>
</tr>
</table>
## StackProvider {#StackProvider}
*Defined in [fuchsia.weave/weavestack.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/weavestack.fidl;l=146)*
<p>Services Provided to WeaveStack by other components.</p>
### SetWlanNetworkConfigProvider {#StackProvider.SetWlanNetworkConfigProvider}
<p>Registers a WLAN network configuration provider with WeaveStack.
Only one provider can be set at a time.</p>
<p>Attempts to set a new provider while there is an active provider
will close the channel to active provider and will be replaced
by the new provider.</p>
<p>TODO(fxbug.dev/62322): This interface may be deprecated when current
WLAN network configuration can be shared amongst multiple components.</p>
#### Request {#StackProvider.SetWlanNetworkConfigProvider_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>provider</code></td>
<td>
<code><a class='link' href='#WlanNetworkConfigProvider'>WlanNetworkConfigProvider</a></code>
</td>
</tr>
</table>
## SvcDirectoryWatcher {#SvcDirectoryWatcher}
*Defined in [fuchsia.weave/weavestack.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/weavestack.fidl;l=74)*
<p>Watches for changes in Weave Service Directory entries for a particular endpoint
ID. The endpoint ID is specified in, and this protocol retrieved from
<a class='link' href='../fuchsia.weave/'>fuchsia.weave</a>/<a class='link' href='../fuchsia.weave/#Stack.GetServiceDirectoryWatcher'>Stack.GetServiceDirectoryWatcher</a>.</p>
### WatchServiceDirectory {#SvcDirectoryWatcher.WatchServiceDirectory}
<p>Returns a vector of HostPorts for the watched endpoint ID.</p>
<p>First call returns the current list of HostPorts or blocks until the list
is available from the service. Subsequent calls will block until a new
ServiceDirectory lookup is made and will return the list associated with
the watched endpoint ID, which may or may not be the same as prior values.</p>
<p>Calling WatchServiceDirectory when a previous call is still pending will
cause the channel to be closed with <code>ZX_ERR_BAD_STATE</code>.</p>
#### Request {#SvcDirectoryWatcher.WatchServiceDirectory_Request}
&lt;EMPTY&gt;
#### Response {#SvcDirectoryWatcher.WatchServiceDirectory_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>host_port_list</code></td>
<td>
<code>vector&lt;<a class='link' href='#HostPort'>HostPort</a>&gt;[256]</code>
</td>
</tr>
</table>
## WlanNetworkConfigProvider {#WlanNetworkConfigProvider}
*Defined in [fuchsia.weave/weavestack.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/weavestack.fidl;l=107)*
<p>Component acting as WLAN network configuration provider for WeaveStack need to
implement this.</p>
### WatchConnectedNetwork {#WlanNetworkConfigProvider.WatchConnectedNetwork}
<p>Returns current network configuration when new information is available.</p>
<p>First call returns the current network configuration if available,
otherwise return empty config. WeaveStack consumes network config
and sends another request.</p>
#### Request {#WlanNetworkConfigProvider.WatchConnectedNetwork_Request}
&lt;EMPTY&gt;
#### Response {#WlanNetworkConfigProvider.WatchConnectedNetwork_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>network_config</code></td>
<td>
<code><a class='link' href='../fuchsia.wlan.policy/'>fuchsia.wlan.policy</a>/<a class='link' href='../fuchsia.wlan.policy/#NetworkConfig'>NetworkConfig</a></code>
</td>
</tr>
</table>
## **STRUCTS**
### Bootstrap_ImportWeaveConfig_Response {#Bootstrap_ImportWeaveConfig_Response data-text="Bootstrap_ImportWeaveConfig_Response"}
*Defined in [fuchsia.weave/bootstrap.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/bootstrap.fidl;l=22)*
&lt;EMPTY&gt;
### FactoryDataManager_GetPairingCode_Response {#FactoryDataManager_GetPairingCode_Response data-text="FactoryDataManager_GetPairingCode_Response"}
*Defined in [fuchsia.weave/auth.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/auth.fidl;l=76)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="FactoryDataManager_GetPairingCode_Response.pairing_code">
<td><code>pairing_code</code></td>
<td>
<code>vector&lt;uint8&gt;[16]</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### FactoryDataManager_GetWeaveCertificate_Response [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#FactoryDataManager_GetWeaveCertificate_Response data-text="FactoryDataManager_GetWeaveCertificate_Response"}
*Defined in [fuchsia.weave/auth.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/auth.fidl;l=81)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="FactoryDataManager_GetWeaveCertificate_Response.certificate">
<td><code>certificate</code></td>
<td>
<code><a class='link' href='../fuchsia.mem/'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/#Buffer'>Buffer</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### HostPort {#HostPort data-text="HostPort"}
*Defined in [fuchsia.weave/weavestack.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/weavestack.fidl;l=66)*
<p>A tuple of host and port to represent a connectable endpoint.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="HostPort.host">
<td><code>host</code></td>
<td>
<code><a class='link' href='#Host'>Host</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="HostPort.port">
<td><code>port</code></td>
<td>
<code>uint16</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### Provisioner_GenerateKeyPair_Response {#Provisioner_GenerateKeyPair_Response data-text="Provisioner_GenerateKeyPair_Response"}
*Defined in [fuchsia.weave/auth.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/auth.fidl;l=37)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Provisioner_GenerateKeyPair_Response.wrapped_private_key">
<td><code>wrapped_private_key</code></td>
<td>
<code><a class='link' href='#PrivateKey'>PrivateKey</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Provisioner_GenerateKeyPair_Response.public_key">
<td><code>public_key</code></td>
<td>
<code>vector&lt;uint8&gt;[65]</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### QrCode {#QrCode data-text="QrCode"}
*Defined in [fuchsia.weave/weavestack.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/weavestack.fidl;l=53)*
<p>QR Code data for pairing.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="QrCode.data">
<td><code>data</code></td>
<td>
<code>string[256]</code>
</td>
<td><p>QR code data in string format, supplying this string in a QR
code should be sufficient for pairing.</p>
</td>
<td>No default</td>
</tr>
</table>
### Signer_SignHashWithPrivateKey_Response {#Signer_SignHashWithPrivateKey_Response data-text="Signer_SignHashWithPrivateKey_Response"}
*Defined in [fuchsia.weave/auth.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/auth.fidl;l=66)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Signer_SignHashWithPrivateKey_Response.signature">
<td><code>signature</code></td>
<td>
<code>vector&lt;uint8&gt;[139]</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### Signer_SignHash_Response {#Signer_SignHash_Response data-text="Signer_SignHash_Response"}
*Defined in [fuchsia.weave/auth.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/auth.fidl;l=53)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Signer_SignHash_Response.signature">
<td><code>signature</code></td>
<td>
<code>vector&lt;uint8&gt;[139]</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### Stack_GetQrCode_Response {#Stack_GetQrCode_Response data-text="Stack_GetQrCode_Response"}
*Defined in [fuchsia.weave/weavestack.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/weavestack.fidl;l=135)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Stack_GetQrCode_Response.qr_code">
<td><code>qr_code</code></td>
<td>
<code><a class='link' href='#QrCode'>QrCode</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### Stack_ResetConfig_Response {#Stack_ResetConfig_Response data-text="Stack_ResetConfig_Response"}
*Defined in [fuchsia.weave/weavestack.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/weavestack.fidl;l=141)*
&lt;EMPTY&gt;
## **ENUMS**
### ErrorCode [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ErrorCode data-text="ErrorCode"}
Type: <code>uint32</code>
*Defined in [fuchsia.weave/common.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/common.fidl;l=6)*
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="ErrorCode.FILE_NOT_FOUND">
<td><h3 id="ErrorCode.FILE_NOT_FOUND" class="add-link hide-from-toc">FILE_NOT_FOUND</h3></td>
<td><code>1</code></td>
<td><p>Key/pairing code not found in storage.</p>
</td>
</tr>
<tr id="ErrorCode.CRYPTO_ERROR">
<td><h3 id="ErrorCode.CRYPTO_ERROR" class="add-link hide-from-toc">CRYPTO_ERROR</h3></td>
<td><code>2</code></td>
<td><p>Error occurred during cryptographic operations.</p>
</td>
</tr>
<tr id="ErrorCode.INVALID_ARGUMENT">
<td><h3 id="ErrorCode.INVALID_ARGUMENT" class="add-link hide-from-toc">INVALID_ARGUMENT</h3></td>
<td><code>3</code></td>
<td><p>An invalid argument was supplied.</p>
</td>
</tr>
<tr id="ErrorCode.INVALID_STATE">
<td><h3 id="ErrorCode.INVALID_STATE" class="add-link hide-from-toc">INVALID_STATE</h3></td>
<td><code>4</code></td>
<td><p>Weave is in an invalid state to support the operation.</p>
</td>
</tr>
<tr id="ErrorCode.UNSPECIFIED_ERROR">
<td><h3 id="ErrorCode.UNSPECIFIED_ERROR" class="add-link hide-from-toc">UNSPECIFIED_ERROR</h3></td>
<td><code>2147483647</code></td>
<td><p>An unknown or non-specific error occurred.</p>
</td>
</tr>
</table>
## **TABLES**
### PairingState {#PairingState data-text="PairingState"}
*Defined in [fuchsia.weave/weavestack.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/weavestack.fidl;l=23)*
<p>Current state of pairing/provisioning. At the point of a completely unprovisioned
or factory reset device, all states will be <code>false</code>. Outside of an explicit
ResetConfig call or factory reset, the provisioning states will only transition
from <code>false</code> to <code>true</code> as Weave profiles are provisioned.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="PairingState.is_weave_fully_provisioned">
<td><h3 id="PairingState.is_weave_fully_provisioned" class="add-link hide-from-toc">1</h3></td>
<td><code>is_weave_fully_provisioned</code></td>
<td>
<code>bool</code>
</td>
<td><p>Has Weave been fully provisioned? This implies that all provisioning
has been completed as expected as specified in the configuration.</p>
</td>
</tr>
<tr id="PairingState.is_wlan_provisioned">
<td><h3 id="PairingState.is_wlan_provisioned" class="add-link hide-from-toc">2</h3></td>
<td><code>is_wlan_provisioned</code></td>
<td>
<code>bool</code>
</td>
<td><p>Has WiFi been provisioned? Defaults to false.</p>
</td>
</tr>
<tr id="PairingState.is_thread_provisioned">
<td><h3 id="PairingState.is_thread_provisioned" class="add-link hide-from-toc">3</h3></td>
<td><code>is_thread_provisioned</code></td>
<td>
<code>bool</code>
</td>
<td><p>Has Thread been provisioned? Defaults to false.</p>
</td>
</tr>
<tr id="PairingState.is_fabric_provisioned">
<td><h3 id="PairingState.is_fabric_provisioned" class="add-link hide-from-toc">4</h3></td>
<td><code>is_fabric_provisioned</code></td>
<td>
<code>bool</code>
</td>
<td><p>Has the fabric been provisioned? Defaults to false.</p>
</td>
</tr>
<tr id="PairingState.is_service_provisioned">
<td><h3 id="PairingState.is_service_provisioned" class="add-link hide-from-toc">5</h3></td>
<td><code>is_service_provisioned</code></td>
<td>
<code>bool</code>
</td>
<td><p>Has the service been provisioned? Defaults to false.</p>
</td>
</tr>
</table>
## **UNIONS**
### Bootstrap_ImportWeaveConfig_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Bootstrap_ImportWeaveConfig_Result data-text="Bootstrap_ImportWeaveConfig_Result"}
*Defined in [fuchsia.weave/bootstrap.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/bootstrap.fidl;l=22)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Bootstrap_ImportWeaveConfig_Result.response">
<td><h3 id="Bootstrap_ImportWeaveConfig_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#Bootstrap_ImportWeaveConfig_Response'>Bootstrap_ImportWeaveConfig_Response</a></code>
</td>
<td></td>
</tr>
<tr id="Bootstrap_ImportWeaveConfig_Result.err">
<td><h3 id="Bootstrap_ImportWeaveConfig_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code>
</td>
<td></td>
</tr>
</table>
### FactoryDataManager_GetPairingCode_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#FactoryDataManager_GetPairingCode_Result data-text="FactoryDataManager_GetPairingCode_Result"}
*Defined in [fuchsia.weave/auth.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/auth.fidl;l=76)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="FactoryDataManager_GetPairingCode_Result.response">
<td><h3 id="FactoryDataManager_GetPairingCode_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#FactoryDataManager_GetPairingCode_Response'>FactoryDataManager_GetPairingCode_Response</a></code>
</td>
<td></td>
</tr>
<tr id="FactoryDataManager_GetPairingCode_Result.err">
<td><h3 id="FactoryDataManager_GetPairingCode_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='#ErrorCode'>ErrorCode</a></code>
</td>
<td></td>
</tr>
</table>
### FactoryDataManager_GetWeaveCertificate_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#FactoryDataManager_GetWeaveCertificate_Result data-text="FactoryDataManager_GetWeaveCertificate_Result"}
*Defined in [fuchsia.weave/auth.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/auth.fidl;l=81)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="FactoryDataManager_GetWeaveCertificate_Result.response">
<td><h3 id="FactoryDataManager_GetWeaveCertificate_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#FactoryDataManager_GetWeaveCertificate_Response'>FactoryDataManager_GetWeaveCertificate_Response</a></code>
</td>
<td></td>
</tr>
<tr id="FactoryDataManager_GetWeaveCertificate_Result.err">
<td><h3 id="FactoryDataManager_GetWeaveCertificate_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='#ErrorCode'>ErrorCode</a></code>
</td>
<td></td>
</tr>
</table>
### Host [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Host data-text="Host"}
*Defined in [fuchsia.weave/weavestack.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/weavestack.fidl;l=60)*
<p>Representation of a host either in the form of a hostname or IP address.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Host.hostname">
<td><h3 id="Host.hostname" class="add-link hide-from-toc">1</h3></td>
<td><code>hostname</code></td>
<td>
<code><a class='link' href='../fuchsia.net/'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/#Hostname'>Hostname</a></code>
</td>
<td></td>
</tr>
<tr id="Host.ip_address">
<td><h3 id="Host.ip_address" class="add-link hide-from-toc">2</h3></td>
<td><code>ip_address</code></td>
<td>
<code><a class='link' href='../fuchsia.net/'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/#IpAddress'>IpAddress</a></code>
</td>
<td></td>
</tr>
</table>
### Provisioner_GenerateKeyPair_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Provisioner_GenerateKeyPair_Result data-text="Provisioner_GenerateKeyPair_Result"}
*Defined in [fuchsia.weave/auth.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/auth.fidl;l=37)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Provisioner_GenerateKeyPair_Result.response">
<td><h3 id="Provisioner_GenerateKeyPair_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#Provisioner_GenerateKeyPair_Response'>Provisioner_GenerateKeyPair_Response</a></code>
</td>
<td></td>
</tr>
<tr id="Provisioner_GenerateKeyPair_Result.err">
<td><h3 id="Provisioner_GenerateKeyPair_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='#ErrorCode'>ErrorCode</a></code>
</td>
<td></td>
</tr>
</table>
### Signer_SignHashWithPrivateKey_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Signer_SignHashWithPrivateKey_Result data-text="Signer_SignHashWithPrivateKey_Result"}
*Defined in [fuchsia.weave/auth.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/auth.fidl;l=66)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Signer_SignHashWithPrivateKey_Result.response">
<td><h3 id="Signer_SignHashWithPrivateKey_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#Signer_SignHashWithPrivateKey_Response'>Signer_SignHashWithPrivateKey_Response</a></code>
</td>
<td></td>
</tr>
<tr id="Signer_SignHashWithPrivateKey_Result.err">
<td><h3 id="Signer_SignHashWithPrivateKey_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='#ErrorCode'>ErrorCode</a></code>
</td>
<td></td>
</tr>
</table>
### Signer_SignHash_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Signer_SignHash_Result data-text="Signer_SignHash_Result"}
*Defined in [fuchsia.weave/auth.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/auth.fidl;l=53)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Signer_SignHash_Result.response">
<td><h3 id="Signer_SignHash_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#Signer_SignHash_Response'>Signer_SignHash_Response</a></code>
</td>
<td></td>
</tr>
<tr id="Signer_SignHash_Result.err">
<td><h3 id="Signer_SignHash_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='#ErrorCode'>ErrorCode</a></code>
</td>
<td></td>
</tr>
</table>
### Stack_GetQrCode_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Stack_GetQrCode_Result data-text="Stack_GetQrCode_Result"}
*Defined in [fuchsia.weave/weavestack.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/weavestack.fidl;l=135)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Stack_GetQrCode_Result.response">
<td><h3 id="Stack_GetQrCode_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#Stack_GetQrCode_Response'>Stack_GetQrCode_Response</a></code>
</td>
<td></td>
</tr>
<tr id="Stack_GetQrCode_Result.err">
<td><h3 id="Stack_GetQrCode_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='#ErrorCode'>ErrorCode</a></code>
</td>
<td></td>
</tr>
</table>
### Stack_ResetConfig_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Stack_ResetConfig_Result data-text="Stack_ResetConfig_Result"}
*Defined in [fuchsia.weave/weavestack.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/weavestack.fidl;l=141)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Stack_ResetConfig_Result.response">
<td><h3 id="Stack_ResetConfig_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#Stack_ResetConfig_Response'>Stack_ResetConfig_Response</a></code>
</td>
<td></td>
</tr>
<tr id="Stack_ResetConfig_Result.err">
<td><h3 id="Stack_ResetConfig_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='#ErrorCode'>ErrorCode</a></code>
</td>
<td></td>
</tr>
</table>
## **BITS**
### ResetConfigFlags [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ResetConfigFlags}
Type: <code>uint16</code>
*Defined in [fuchsia.weave/weavestack.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/weavestack.fidl;l=38)*
<p>ResetConfig flags.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="ResetConfigFlags.NETWORK_CONFIG">
<td><h3 id="ResetConfigFlags.NETWORK_CONFIG" class="add-link hide-from-toc">NETWORK_CONFIG</h3></td>
<td>1</td>
<td><p>Reset network configuration information.</p>
</td>
</tr>
<tr id="ResetConfigFlags.FABRIC_CONFIG">
<td><h3 id="ResetConfigFlags.FABRIC_CONFIG" class="add-link hide-from-toc">FABRIC_CONFIG</h3></td>
<td>2</td>
<td><p>Reset fabric configuration information.</p>
</td>
</tr>
<tr id="ResetConfigFlags.SERVICE_CONFIG">
<td><h3 id="ResetConfigFlags.SERVICE_CONFIG" class="add-link hide-from-toc">SERVICE_CONFIG</h3></td>
<td>4</td>
<td><p>Reset service configuration information.</p>
</td>
</tr>
<tr id="ResetConfigFlags.OPERATIONAL_CREDENTIALS">
<td><h3 id="ResetConfigFlags.OPERATIONAL_CREDENTIALS" class="add-link hide-from-toc">OPERATIONAL_CREDENTIALS</h3></td>
<td>8</td>
<td><p>Reset device operational credentials.</p>
</td>
</tr>
</table>
## **CONSTANTS**
<table>
<tr><th>Name</th><th>Value</th><th>Type</th><th>Description</th></tr>
<tr id="MAX_HOST_PORTS">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/weavestack.fidl;l=11">MAX_HOST_PORTS</a></td>
<td>
<code>256</code>
</td>
<td><code>uint32</code></td>
<td><p>The maximum number of HostPorts that Weave can return in a HostPortList, as
weave indexes HostPortLists by a uint8.</p>
</td>
</tr>
<tr id="MAX_PUBLIC_KEY_SIZE">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/auth.fidl;l=18">MAX_PUBLIC_KEY_SIZE</a></td>
<td>
<code>65</code>
</td>
<td><code>uint32</code></td>
<td><p>The maximum size for a public key produced when generating a key pair.</p>
</td>
</tr>
<tr id="MAX_QR_CODE_SIZE">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/weavestack.fidl;l=13">MAX_QR_CODE_SIZE</a></td>
<td>
<code>256</code>
</td>
<td><code>uint32</code></td>
<td><p>The largest supported size of a QR code encoded in string format may be.</p>
</td>
</tr>
<tr id="MAX_SIGNATURE_SIZE">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/auth.fidl;l=15">MAX_SIGNATURE_SIZE</a></td>
<td>
<code>139</code>
</td>
<td><code>uint32</code></td>
<td><p>The maximum size of a signature supported by Weave.</p>
<p>Currently, Weave only supports ECDSA signatures using the P224 curve,
however, to allow this protocol to support future changes to supported
Weave signatures the maximum size of the returned signature is set to
139 bytes which is the largest amount of space needed to return an
encoded ECDSA P521 signature.</p>
</td>
</tr>
<tr id="RESET_CONFIG_ALL">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/weavestack.fidl;l=50">RESET_CONFIG_ALL</a></td>
<td>
<code>255</code>
</td>
<td><code>uint16</code></td>
<td><p>Reset all device configuration information.</p>
</td>
</tr>
</table>
## **ALIASES**
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="PrivateKey">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/auth.fidl;l=24">PrivateKey</a></td>
<td>
<code>vector</code>[<code><a class='link' href='../fidl/'>fidl</a>/<a class='link' href='../fidl/#MAX'>MAX</a></code>]</td>
<td><p>Bytes representing a wrapped private key. Since the size of the wrapping is
implementation-defined, the bytes are only bounded by MAX. The bytes should
be considered opaque, both in structure and in content, as the value is only
meaningful to operations such as <a class='link' href='#Provisioner.GenerateKeyPair'>Provisioner.GenerateKeyPair</a>.</p>
</td>
</tr>
<tr id="ServiceEndpointId">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.weave/weavestack.fidl;l=17">ServiceEndpointId</a></td>
<td>
<code>uint64</code></td>
<td><p>An endpoint ID used for identifying which service endpoints are of interest when
looking up endpoints in the Weave Service Directory.</p>
</td>
</tr>
</table>