pub struct Client { /* private fields */ }
Expand description
A combination of persistent data and HTTP client used for communicating with the API.
Implementations§
Source§impl Client
impl Client
Sourcepub fn new(user_agent: String, api_base: Url) -> Result<Self, Box<dyn Error>>
pub fn new(user_agent: String, api_base: Url) -> Result<Self, Box<dyn Error>>
Create a new Client
configured with the given User-Agent and API base.
§Errors
This function will return an error if the reqwest Client could not be created.
Sourcepub async fn enroll(
&self,
code: &str,
) -> Result<(NebulaConfig, DHPrivateKeyPEM, Credentials, EnrollMeta), Box<dyn Error>>
pub async fn enroll( &self, code: &str, ) -> Result<(NebulaConfig, DHPrivateKeyPEM, Credentials, EnrollMeta), Box<dyn Error>>
Issues an enrollment request against the REST API using the given enrollment code, passing along a locally generated DH X25519 Nebula key to be signed by the CA, and an Ed25519 key for future API authentication. On success it returns the Nebula config generated by the server, a Nebula private key PEM, credentials to be used for future DN API requests, and an object containing organization information.
§Errors
This function will return an error in any of the following situations:
- the
server_url
is invalid - the HTTP request fails
- the HTTP response is missing X-Request-ID
- X-Request-ID isn’t valid UTF-8
- the server returns an error
- the server returns invalid JSON
- the
trusted_keys
field is invalid
Sourcepub async fn check_for_update(
&self,
creds: &Credentials,
) -> Result<bool, Box<dyn Error>>
pub async fn check_for_update( &self, creds: &Credentials, ) -> Result<bool, Box<dyn Error>>
Send a signed message to the DNClient
API to learn if there is a new configuration available.
§Errors
This function returns an error if the dnclient request fails, or the server returns invalid data.
Sourcepub async fn do_update(
&self,
creds: &Credentials,
) -> Result<(NebulaConfig, DHPrivateKeyPEM, Credentials), Box<dyn Error>>
pub async fn do_update( &self, creds: &Credentials, ) -> Result<(NebulaConfig, DHPrivateKeyPEM, Credentials), Box<dyn Error>>
Send a signed message to the DNClient
API to fetch the new configuration update. During this call a new
DH X25519 keypair is generated for the new Nebula certificate as well as a new Ed25519 keypair for DNClient
API
communication. On success it returns the new config, a Nebula private key PEM to be inserted into the config
and new DNClient
API credentials
§Errors
This function returns an error in any of the following scenarios:
- if the message could not be serialized
- if the request fails
- if the response could not be deserialized
- if the signature is invalid
- if the keys are invalid
Sourcepub async fn post_dnclient(
&self,
req_type: &str,
value: &[u8],
host_id: &str,
counter: u32,
ed_privkey: &SigningKey,
) -> Result<Vec<u8>, Box<dyn Error>>
pub async fn post_dnclient( &self, req_type: &str, value: &[u8], host_id: &str, counter: u32, ed_privkey: &SigningKey, ) -> Result<Vec<u8>, Box<dyn Error>>
Wraps and signs the given req_type
and value, and then makes the API call.
On success, returns the response body.
§Errors
This function will return an error if:
- serialization in any step fails
- if the
server_url
is invalid - if the request could not be sent