1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//! A library for working with application configuration files for [Nitrokey NetHSM] devices
//!
//! Provides configuration file management for custom applications designed around working with
//! [Nitrokey NetHSM] devices or containers.
//! Configuration settings allow for individualizing the configuration use and its use-cases
//! (interactive or non-interactive).
//!
//! A module for interactive prompts provides extra convenience around creating applications that
//! may request further data from their users interactively.
//!
//! # Examples
//!
//! ```
//! use nethsm::{ConnectionSecurity, UserRole};
//! use nethsm_config::{Config, ConfigCredentials, ConfigInteractivity, ConfigSettings};
//!
//! # fn main() -> testresult::TestResult {
//! // a configuration for a non-interactive application called "my_app"
//! let config_settings = ConfigSettings::new(
//! "my_app".to_string(),
//! ConfigInteractivity::NonInteractive,
//! None,
//! );
//!
//! // let's assume a custom configuration file path
//! let tmpfile = testdir::testdir!().join("my_app.conf");
//! let config = Config::new(config_settings, Some(&tmpfile))?;
//!
//! // add a first device to commnicate with
//! config.add_device(
//! "nethsm1".to_string(),
//! "https://example.org/api/v1".parse()?,
//! ConnectionSecurity::Unsafe,
//! )?;
//!
//! // add credentials to communicate with the the device
//! config.add_credentials(
//! "nethsm1".to_string(),
//! ConfigCredentials::new(
//! UserRole::Administrator,
//! "admin1".parse()?,
//! Some("my-passphrase".to_string()),
//! ),
//! )?;
//!
//! // write configuration to file
//! config.store(Some(&tmpfile))?;
//! # Ok(())
//! # }
//! ```
//! [Nitrokey NetHSM]: https://docs.nitrokey.com/nethsm/
pub use ;
pub use ;