Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
[0.3.0] - 2026-09-29
Added
- Implement
signstar-download-key-certificates - [breaking] Rename
SystemUserMappingvariant for WireGuard config downloads - [breaking] Remove
wrapping_key_idfromYubiHsm2UserMapping::Backup - Sort
SystemUserMappingand implementOrdandPartialOrd - Add
NetHsmUserMapping::CertificateRetrieval - Add
YubiHsm2UserMapping::CertificateRetrieval - [breaking] Introduce a crate-level error type for signstar-common
- (deps) [breaking] Update crate nethsm-sdk-rs to 4.0.0
- (deps) Update rustcrypto crates
- Implement creating
NetHsmAdminCredentialsfromConfig - Implement creating
YubiHsm2AdminCredentialsfromConfig - Emit a warning on missing (but configured) system users
- Derive,
EqandPartialEqforConfigandSystemConfig - Re-export
signstar_yubihsm2::Connectioninyubihsm2module - Add labels to generated YubiHSM objects
- Add permissions missing in the administrative key
- [breaking] Export types from
signstar-yubihsm2via theyubihsm2module - Export types from the
yubihsm2crate via theyubihsm2module - Export types from the
nethsmcrate via thenethsmmodule - [breaking] Support sets of filters with
Config::user_backend_connections - [breaking] Extend
CryptographicKeyContext::OpenPgpwithnotations - Add module implementing
StateDifffor YubiHSM2 - Add
YubiHsm2Backendto configure YubiHSM2s based on configs - Implement
DisplayforStateDiffReport - [breaking] Add
YubiHsm2AdminCredentials::default_administrator - Add
YubiHsm2AdminCredentials::administrators - Add
AuthTypetoYubiHsm2ConfigUserData - Add
YubiHsm2UserMapping::authentication_key_info - Add
YubiHsm2Config::WRAP_KEY_ID - [breaking] Change
YubiHsm2UserMapping::domainsto always returnDomains - Return
Result<Option<usize>, Error>for certificate size estimation - Add size validation of
YubiHsm2UserMappinginstances in aYubiHsm2Config - Always require
expectattributes instead ofallows - Add
YubiHsm2ConfigStateasYubiHsm2Configstate representation - Derive
OrdandPartialOrdforStateOrigin - Derive
EqandPartialEqforStateOrigin - [breaking] Move
backup_passphrasemethod toAdminCredentialstrait - [breaking] Move
iterationmethod toAdminCredentialstrait - Rely on stricter
PassphrasePolicyforYubiHsm2AdminCredentials - Rely on stricter
PassphrasePolicyinNetHsmAdminCredentials - Add
NetHsmDiffforNetHsmConfigStateandNetHsmBackendState - Implement
StateOriginInfoforNetHsmConfigState - Allow returning validated admin users from
NetHsmAdminCredentials - Implement
StateOriginInfoforNetHsmBackendState - Implement
DisplayforNetHsmConfigUserKeyData - Implement
DisplayforNetHsmConfigUserData - Derive
EqandPartialEqforNetHsmBackendState - Implement state comparison for system user data
- Add new state comparison mechanism based on common traits
- Add
NetHsmConfigStateasNetHsmConfigrepresentation - Add
SystemUserConfigStatetracking system user data inConfig - Add
SystemUserHostStatetracking system users on the host - Implement
MappingAuthorizedKeyEntryforUserBackendConnection - Allow writing authorized key file with
MappingAuthorizedKeyEntry - Implement
ConfigSystemUserDataforConfig - Implement creating
SystemUserDatafromYubiHsm2UserMapping - Implement creating
SystemUserDatafromNetHsmUserMapping - Implement creating
SystemUserDatafromSystemUserMapping - Add
SystemUserId::rootto return the root user - Add
ConfigSystemUserDatatrait returningSystemUserData - Add
SystemUserDatato track the different kinds of system users - Add
PartialEqbetweenKeyStateandNetHsmConfigUserKeyData - Add
PartialEqbetweenUserStateandNetHsmConfigUserData - Derive
Hash,Ord,PartialOrdforKeyState - Derive
Hash,Ord,PartialOrdforUserState - Derive
Hash,Ord,PartialOrdforKeyCertificateState - Add
YubiHsm2UserMapping::capability - Add
YubiHsm2Config::CAP_SIGNINGtracking signing capabilities - Add
YubiHsm2Config::CAP_HERMETIC_AUDIT_LOG - Add
YubiHsm2Config::CAP_BACKUPtracking backup capabilities - Add
YubiHsm2Config::CAP_AUDIT_LOGtracking audit log capabilities - Add
YubiHsm2UserMapping::CAP_ADMINto track admin capabilities - Add
YubiHsm2Config::AUDIT_COMMANDSto track commands to audit - Move Signstar config fixtures to central workspace location
- Remove
SignstarConfigin favor ofConfig - Port from
SignstarConfgtoConfigin NetHSM backend handling - Support creating
SignstarConfigNetHsmStatefromNetHsmConfig - Derive
PartialEqandEqforSignstarConfigNetHsmState - Port to new
Configformat - (cargo) Add
_yubihsm2-mockhsmfeature - Add
SystemUserId::from_current_unix_user - Switch from
YubiHsmConnectiontosignstar_yubihsm2::Connection - (cargo) Remove
serdefrom default features - [breaking] Drop MD5 from supported algorithms and dependencies
- (cargo) Rename
test-helpersfeature to_test-helpers - Add new YAML based config file format
- Derive
EqandPartialEqforNetHsmConfig - Derive
EqandPartialEqforYubiHsm2Config - Add
SystemUserMappingandSystemConfig - Add
YubiHsm2UserMappingandYubiHsm2Config - Add
NetHsmUserMappingandNetHsmConfig - Add traits used for retrieving data from generic user mappings
- Use
Idinsignstar-yubihsm2::Credentials - Add
TryFrom<nix::unistd::User>forSystemUserId - Implement
AsRef<Entry>forAuthorizedKeyEntry - Implement
OrdandPartialOrdforAuthorizedKeyEntry - Use
yubihsm::device::SerialNumberinYubiHsmConnection - Derive
OrdandPartialOrdforyubihsmconnection - Derive
OrdandPartialOrdforNetHsmMetricsUsers - Derive
OrdandPartialOrdforSystemUserId - Add metrics related variants for
UserMapping - Add
UserMapping::SystemYubiHsm2Backup - Add administrative credentials handling for YubiHSM2 backends
- Add
UserMapping::YubiHsmOnlyAdmin - Generically load creds with
ExtendedUserMapping::load_credentials - Add
UserMapping::backend_users - [breaking] Generically return non-administrative creds when writing them
- Add
UserMapping::backend_users_with_new_passphrase - Add
AsRef<UserId>forSystemWideUserId - Add
UserMappingFilterandBackendUserKind - [breaking] Use
UserWithPassphraseinstead ofFullCredentials - Add
UserMapping::SystemYubiHsmOperatorSigningfor YubiHSM2 - Add
BackendConnection::YubiHsm2for YubiHSM2 backend connections - Add the
yubihsm2module to handle YubiHSM2 backends - [breaking] Use
signstar_crypto::key::SigningKeySetupinUserMapping - [breaking] Rely on
signstar_cryptofor common cryptographic key types - Add
AdminCredentialstrait for generic admin creds handling - [breaking] Rename
AdminCredentialstoNetHsmAdminCredentials - [breaking] Support using different HSM backends in
SignstarConfig
Fixed
- Filter more robustly in
Config::user_backend_connections - Reset the backend, if default credentials are still usable
- [breaking] Diversify the logger setup for journald and terminal
- Fix capabilities required for signing data
- Remove filtering of internal YubiHSM2 objects
- Add missing
ExportWrappedpermission to the administrative set - (deps) Update Rust crate serde-saphyr to v1
- [breaking] Correctly generate certificates with multiple User IDs
- Remove useless borrows in formatting
- Allow only max one tag for user and key data in the NetHSM backend
- (deps) Update Rust crate garde to 0.23.0
- Only add NetHSM admins when both setup in config and admin creds
- (cargo) Move
num-enumto workspace dependencies - (deps) Update Rust crate toml to v1
- (deps) Update Rust crate nix to 0.31.0
- [breaking] Track the wrapping key id in
UserMapping::SystemYubiHsm2Backup - Rewrite panicking branches to avoid clippy warnings
- Replace returning errors to direct
panics to avoid clippy lints
Other
- Rely on coverage collection functionality in change-user-run
- Add
ConfigFileVariant::contains_backend, checking for backend - Remove warning for
_yubihsm2-mockhsmfeature debug requirement - Add man page for the Signstar configuration file
- (fixtures) Consolidate the naming of system users in configs
- Use
SystemPrepareConfigto prepare config/usermapping tests - Use
SystemPrepareConfigto prepare YubiHSM2 admin creds tests - Ignore (potentially variable) OpenPGPv4 certificate sizes
- Enforce binary ID for
_containerized-integration-testtests - [breaking] Move state handling for
YubiHsm2Configtostatemodule - Remove unnecessary feature gate from
yubihsm2::configmodule - [breaking] Replace signstar-yubihsm2’s
Idwithyubihsm::object::Id - [breaking] Use
signstar-yubihsm2types for theYubiHsm2UserMapping - [breaking] Expose unlock
Passphraseinstead of raw string reference - [breaking] Expose backup
Passphraseinstead of raw string reference - [breaking] Rename
NetHsmAdminCredentials::get_namespace_administrators - [breaking] Rename
NetHsmAdminCredentials::get_default_administrator - [breaking] Rename
NetHsmAdminCredentials::get_administrators - [breaking] Rename
NetHsmAdminCredentials::get_unlock_passphrase - [breaking] Rename
NetHsmAdminCredentials::get_backup_passphrase - [breaking] Rename
NetHsmAdminCredentials::get_iteration - [breaking] Move
IterationMismatchfromnethsmto crateError - (cargo) Move
instato workspace dependencies - (cargo) Move
gardeto workspace dependencies - (cargo) Move
tomlto workspace dependencies - (cargo) Move
pretty_assertionsto workspace dependencies - [breaking] Expose all signstar_crypto errors over top-level Error type
- [breaking] Return optional
DomainsfromYubiHsm2UserMapping::domains - [breaking] Remove
StateHandlingbased state comparison - Streamline the use of “NetHSM” in the
configmodule - [breaking] Track
NetHsmConfig, notConfiginNetHsmBackend - Move
NetHsmBackendstate representation tobackendmodule - Consolidate
config::filetest modules targeting no backend - [breaking] Rename
NetHsmStatetoNetHsmBackendState - Rename
NetHsmConfigStatetoNetHsmConfigStateLegacy - Add writing of authorized keys files to
SystemUserConfig::apply - [breaking] Remove unused
StateComparisonFailure - [breaking] Require
Anyfor theStateHandlingtrait - [breaking] Rename state structs for
NetHsmConfigdata - [breaking] Rely on
change-user-runto detect command availability - [breaking] Remove
ErrorExitCode - [breaking] Render the
errormodule private - [breaking] Use
AdminCredentialsviaadmin_credentialsmodule - [breaking] Only expose
KeyCertificateStatethroughconfigmodule - [breaking] Use
config::Erroronly viaconfigmodule - [breaking] Use
AuthorizedKeyEntry/SystemUserIdviaconfigmodule - [breaking] Only re-export used members of the
nethsm::statemodule - [breaking] Don’t re-export
nethsm::Erroron the crate-level - [breaking] Use
NetHsmBackendthrough thenethsmmodule - [breaking] Remove re-export of
nethsm::NetHsmMetricsUsers - [breaking] Remove re-export of
nethsm::FilterUserKeys - [breaking] Use
NetHsmAdminCredentialsfrom thenethsmmodule - [breaking] Rename
SignstarConfigNetHsmStatetoNetHsmConfigState - [breaking] Render
UserStatesandKeyStatesprivate structs - [breaking] Merge
config::state::nethsmwithnethsm::state - [breaking] Add all available config fixtures to
ConfigFileVariant - Use
pretty_assertionsfor improved output usingassert_eq - Add helpers to
testmodule for preparing systems with aConfig - Update fixtures to use localhost and cover all mapping variants
- Add fixtures for YubiHSM2 mockhsm
- Test roundtripping Signstar configs using YubiHSM2 mockhsm
- Ignore mockhsm fixtures when only testing with
yubihsm2feature - (README) Describe all current features in feature section
- (cargo) Remove
_integration-testfeature - Don’t require the
nethsmfeature for integration tests - Add integration tests for non-admin secrets creation/loading
- Use
Passphrasefromsignstar-cryptonotnethsm - Check creation and loading of backend user secrets
- Check use of Unix users in usermapping implementations
- Expose common functionality for containerized integration tests
- [breaking] Only expose selected items of the
nethsm::configmodule - (deps) Update Rust crate pgp to 0.19
- Make
AuthorizedKeyEntrya newtype forEntrynotString - (cargo) Move crate
tempfileto workspace dependencies - (cargo) Move
nixcrate to workspace dependencies - Lock the backend when comparing config and NetHSM state
- [breaking] More generically represent config and backend state
- [breaking] Change name to
UserMapping::YubiHsm2OnlyAdmin - [breaking] Change name to
UserMapping::SystemYubiHsm2OperatorSigning - Simplify
UserMappingmatches using.. - Split tests for
UserMappingmethods into modules per backend - Separate
nethsm::admin_credentialsintegration tests - Explain capabilities on
UserMapping::SystemYubiHsmOperatorSigning - [breaking] Remove
SystemWideUserIdand use thenethsmcrate instead - Consolidate the documentation on HSM backends
- Add info logging to
ExtendedUserMappingcredentials methods - [breaking] Use
String, notUserIdinCredentialsLoadingError - [breaking] Return
KeyIdfromUserMapping::get_nethsm_user_key_and_tag - [breaking] Use
signstar_crypto::passphrase::Passphrase - Rename
UserMapping::get_key_ids - Rename
UserMapping::get_tags - Rename
UserMapping::get_namespaces - Rename
UserMapping::has_system_and_nethsm_user - Move
NetHsmMetricsUsers,FilterUserKeystocrate::nethsm - Move
NetHsmAdminCredentialstosignstar_config::nethsm
[0.2.0] - 2025-08-19
Added
- Use
change-user-runcrate instead ofsignstar_config::test - Add
SignstarConfigfor the configuration on Signstar hosts
Fixed
- (deps) Update Rust crate toml to 0.9.0
Other
- Collect coverage produced by tests run (partially) as other user
- Remove the use of
confy - Initialize logger using
signstar_common::logging::setup_logging
[0.1.0] - 2025-07-10
Added
- Add
nethsmmodule to interact with NetHSM backends. - (test-helpers) Add helpers for NetHSM backend testing
- [breaking] Fold
signstar-testintosignstar-configas a separatetestmodule - Introduce
signstar-testfor common test utilities - Expose all binaries, not only examples in integration tests
- Add
AdminCredentials::get_default_administrator - Ensure data for
AdminCredentialsis valid - Replace the use of
CredentialswithFullCredentials - Replace
Userwithnethsm::FullCredentials - Use
nethsm_config::Passphrasefor all administrative passphrases - Add
signstar-configcrate to handle Signstar host configs
Fixed
- (deps) Update Rust crate which to v8
- (deps) update rust crate nix to 0.30.0
- Box the
confy::ConfyErrorso that the error size does not explode - Only fail to load as non-root in
AdminCredentials::load
Other
- (fixtures) Add more administrator users and diversify key contexts
- Move constants for configuration file contents to test modules
- Reformat all TOML files with
taplo - Sort derives using
cargo sort-derives - Fix clippy lints regarding variables in
format!