Skip to main content

Config

Struct Config 

Source
pub struct Config {
    system: SystemConfig,
    nethsm: Option<NetHsmConfig>,
    yubihsm2: Option<YubiHsm2Config>,
}
Expand description

The configuration of a Signstar system.

Tracks system-wide configuration items, as well as configurations for specific backends.

Fields§

§system: SystemConfig

System configuration object.

§nethsm: Option<NetHsmConfig>

Optional configuration object for NetHSM backends.

§Note

Only supported when using the nethsm feature.

§yubihsm2: Option<YubiHsm2Config>

Optional configuration object for YubiHSM2 backends.

§Note

Only supported when using the yubihsm2 feature.

Implementations§

Source§

impl Config

Source

pub fn user_backend_connection( &self, user: &SystemUserId, ) -> Option<UserBackendConnection>

Returns the optional UserBackendConnection matching a SystemUserId.

Source

pub fn user_backend_connections( &self, filters: &[UserBackendConnectionFilter], ) -> Vec<UserBackendConnection>

Returns a list of UserBackendConnection objects matching a set of filters.

If no filters are provided, returns all available UserBackendConnection objects of all backends.

Beyond filtering for specific backend types, it is possible to only return administrative or non-administrative objects.

Source§

impl Config

Source

pub const DEFAULT_CONFIG_DIR: &str = "/usr/share/signstar/"

The default config directory below “/usr/”.

Source

pub const RUN_OVERRIDE_CONFIG_DIR: &str = "/run/signstar/"

The override config directory below “/run/”.

Source

pub const ETC_OVERRIDE_CONFIG_DIR: &str = "/etc/signstar/"

The override config directory below “/etc/”.

Source

pub const CONFIG_NAME: &str = "config"

The configuration file name (without file type suffix).

Source

pub fn default_system_path() -> PathBuf

Returns the default location of the Signstar configuration file on a system.

Source

pub fn first_existing_system_path() -> Result<PathBuf, Error>

Returns the first found path of a Signstar configuratino on the system.

§Errors

Returns an error if no configuration file is found.

Source

pub fn list_config_dirs() -> Vec<PathBuf>

Returns the list of supported directory paths in which configuration files may reside.

The returned list of paths is sorted in increasing precedence.

Source

pub fn list_config_file_paths() -> Vec<PathBuf>

Returns the list of supported configuration file paths.

The returned list of paths is sorted in increasing precedence.

Source

fn from_yaml_str(s: &str) -> Result<Self, Error>

Creates a new Config from a string slice containing YAML data.

§Errors

Returns an error if deserialization or validation fails.

Source

fn from_yaml_file(path: impl AsRef<Path>) -> Result<Self, Error>

Creates a new Config from a file containing YAML data.

§Errors

Returns an error if

  • the file does not exist
  • deserialization or validation fails.
Source

pub fn from_file_path(path: impl AsRef<Path>) -> Result<Self, Error>

Creates a new Config from a file path.

§Errors

Returns an error if

  • path has no file extension
  • path does not use one of the supported file extensions
  • creating a Config from the data fails
  • validating a Config created from the data fails
Source

pub fn from_system_path() -> Result<Self, Error>

Creates a new Config from the first found Signstar configuration file path on the system.

§Note

Uses Config::first_existing_system_path to determine the first existing Signstar configuration file path.

§Errors

Returns an error if Config creation from the found path fails.

Source

pub fn to_yaml_string(&self) -> Result<String, Error>

Serializes self as a YAML string.

§Errors

Returns an error if serialization fails.

Source

pub fn system(&self) -> &SystemConfig

Returns a reference to the SystemConfig.

Source

pub fn nethsm(&self) -> Option<&NetHsmConfig>

Returns a reference to the NetHsmConfig.

Source

pub fn yubihsm2(&self) -> Option<&YubiHsm2Config>

Returns a reference to the YubiHsm2Config.

Trait Implementations§

Source§

impl Clone for Config

Source§

fn clone(&self) -> Config

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl ConfigAuthorizedKeyEntries for Config

Source§

impl<'a> ConfigSystemUserData<'a> for Config

Source§

fn system_user_data(&'a self) -> HashSet<SystemUserData<'a>>

Returns the list of all SystemUserData.
Source§

impl ConfigSystemUserIds for Config

Source§

fn system_user_ids(&self) -> HashSet<&SystemUserId>

Returns the list of all SystemUserIds.
Source§

impl Debug for Config

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Config

Source§

fn default() -> Config

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for Config

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for Config

Source§

impl<'a> From<&'a Config> for SystemUserConfigState<'a>

Source§

fn from(value: &'a Config) -> Self

Converts to this type from the input type.
Source§

impl FromStr for Config

Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Creates a new Config from a string slice containing valid YAML.

§Errors

Returns an error if no Config can be created from s.

Source§

type Err = Error

The associated error which can be returned from parsing.
Source§

impl PartialEq for Config

Source§

fn eq(&self, other: &Config) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for Config

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Config

Source§

impl TryFrom<&Config> for NetHsmAdminCredentials

Source§

fn try_from(config: &Config) -> Result<Self, Self::Error>

Creates a new NetHsmAdminCredentials from a Config.

§Note

This generates a new backup passphrase and administrative passphrases, adhering to the hardcoded passphrase policies (e.g. minimum length).

§Errors

Returns an error, if

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

impl TryFrom<&Config> for YubiHsm2AdminCredentials

Source§

fn try_from(config: &Config) -> Result<Self, Self::Error>

Creates a new YubiHsm2AdminCredentials from a Config.

§Note

This generates a new backup passphrase and administrative passphrases, adhering to the hardcoded passphrase policies (e.g. minimum length).

§Errors

Returns an error, if

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

impl Validate for Config

Source§

type Context = ()

A user-provided context. Read more
Source§

fn validate_into( &self, __garde_user_ctx: &Self::Context, __garde_path: &mut dyn FnMut() -> Path, __garde_report: &mut Report, )

Validates Self, aggregating all validation errors into Report.
§

fn validate(&self) -> Result<(), Report>
where Self::Context: Default,

Validates Self, returning an Err with an aggregate of all errors if the validation failed. Read more
§

fn validate_with(&self, ctx: &Self::Context) -> Result<(), Report>

Validates Self, returning an Err with an aggregate of all errors if the validation failed. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T, O> Matches<O> for T
where T: PartialEq<O>,

§

fn validate_matches(&self, other: &O) -> bool

§

impl<T> Pipe for T
where T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V