iwd/doc/device-provisioning-api.txt

218 lines
6.8 KiB
Plaintext

Device Provisioning hierarchy
=============================
Service net.connman.iwd
Interface net.connman.iwd.DeviceProvisioning [Experimental]
Object path /net/connman/iwd/{phy0,phy1,...}/{1,2,...}
Methods string StartEnrollee()
Start a DPP enrollee. Currently only station devices are
supported.
Returns the enrollees URI
Possible errors: net.connman.iwd.InvalidArguments
net.connman.iwd.AlreadyExists
net.connman.iwd.NotAvailable
void Stop()
Stop an enrollee or configurator that is running.
Possible errors: net.connman.iwd.NotFound
string StartConfigurator()
Start a DPP configurator. Currently only connected
station devices are supported, and will only configure
the enrollee to the currently connected network.
Returns the configurator URI
Possible errors: net.connman.iwd.NotAvailable
net.connman.iwd.NotConnected
net.connman.iwd.NotConfigured
net.connman.iwd.NotSupported
net.connman.iwd.Busy
string ConfigureEnrollee(string uri)
Start a DPP configurator with an enrollees URI.
Only connected station devices are supported and will
only configure the enrollee to the currently connected
network.
This API is to handle the use case where the enrollee
has shared its URI to IWD (unlike StartConfigurator)
The URI for IWD is also returned which could be used
in the same way as it is with StartConfigurator().
Possible errors: net.connman.iwd.NotAvailable
net.connman.iwd.NotConnected
net.connman.iwd.NotConfigured
net.connman.iwd.NotSupported
net.connman.iwd.Busy
Properties boolean Started [readonly]
True if DPP is currently active.
string Role [readonly, optional]
Indicates the DPP role. Possible values are "enrollee"
or "configurator". This property is only available when
Started is true.
string URI [readonly, optional]
Indicates the DPP URI. This property is only available
when Started is true.
Interface net.connman.iwd.SharedCodeDeviceProvisioning [Experimental]
Object path /net/connman/iwd/{phy0,phy1,...}/{1,2,...}
void ConfigureEnrollee(a{sv})
Starts a DPP configurator using a shared code (and
optionally identifier) set in the dictionary argument.
Valid dictionary keys are:
string Code
The shared code to use. The code used by both
parties (configurator and enrollee) must match.
string Identifier
An optional identifier. The identifier used by
both parties must match. Per the DPP spec the
identifier "shall be a UTF-8 string not greater
than eighty (80) octets"
As with the DeviceProvisioning interface, configurators
must be connected to the network they wish to configure
in order to start.
Once started a configurator (acting as a responder) will
listen on the currently connected channel for an
enrollee's initial exchange request which will kick off
the shared code bootstrapping protocol (PKEX). Once
completed DPP will start automatically. Only one
enrollee can be configured per call to
ConfigureEnrollee, i.e. once PKEX/DPP has finished
(including failure) the configurator will stop.
The SharedCode methods have an eventual timeout and will
stop automatically after 2 minutes.
Possible errors: net.connman.iwd.Busy
net.connman.iwd.NotConnected
net.connman.InvalidArguments
net.connman.NotSupported
void StartEnrollee(a{sv})
Starts a DPP enrollee using a shared code (and
optionally identifier) set in the dictionary argument
(described above in ConfigureEnrollee).
As with the device provisioning interface, enrollees
must be disconnected in order to start.
Once started an enrollee (acting as an initiator) will
iterate channels sending out broadcast exchange requests
waiting for a response from a configurator. A response
will kick off the shared code bootstrapping protocol
(PKEX), followed by DPP if successful. Once the
protocols have completed, or failed, the enrollee will
stop. If failed, StartEnrollee will need to be called
again to retry.
Possible errors: net.connman.iwd.Busy
net.connman.iwd.InvalidArguments
void StartConfigurator(object agent_path)
Start a shared code configurator using an agent
(distingushed by 'agent_path') to obtain the shared
code. This method is meant for an automated use case
where a configurator is capable of configuring multiple
enrollees, and distinguishing between them by their
identifier.
If the agent service disappears during the shared code
exchange it will be stopped, and the protocol will fail.
This method behaves nearly the same as ConfigureEnrollee
except upon receiving an enrollees first exchange
request the registered agent will be asked for the
shared code using the RequestSharedCode method.
Though the agent can provide shared codes for multiple
enrollees, this method will only configure a single
enrollee at a time. Once completed it will need to be
called again to configure additional enrollees.
Possible errors: net.connman.iwd.Busy
net.connman.iwd.NotConnected
net.connman.iwd.NoAgent
net.connman.iwd.NotSupported
Stop()
Stop a currently running configurator/enrollee. Note
that this will also interrupt DPP if the protocol has
advanced that far. Since DPP is initiated implicitly
from the shared code APIs it will also be canceled.
Calling Stop() if DPP was started via the
DeviceProvisioning interface will not stop it.
Possible errors: net.connman.iwd.NotFound
Properties boolean Started [readonly]
True if shared code device provisioning is currently
active. (configurator or enrollee is started)
string Role [readonly, optional]
Indicates the DPP role. Possible values are "enrollee"
or "configurator". This property is only available when
Started is true.
SharedCodeAgent hierarchy
=========================
Service unique name
Interface net.connman.iwd.SharedCodeAgent [Experimental]
Object path freely definable
Methods void Release() [noreply]
This method gets called when the service daemon
unregisters the agent.
string RequestSharedCode(string identifier)
This method gets called when a shared code is requested
for a particular enrollee, distingushed by the
identifier. The shared code agent should lookup the
identifier and return the shared code, or return an
error if not found.
Possible Errors: [service].Error.Canceled
[service].Error.NotFound
void Cancel(string reason) [noreply]
This method gets called to indicate that the agent
request failed before a reply was returned. The
argument will indicate why the request is being
cancelled and may be "user-canceled", "timed-out" or
"shutdown".
Examples Requesting a shared code for an enrollee identified by "foo"
RequestSharedCode("foo") ==> "super_secret_code"