A library for cryptographic operations backed by a HSM or TPM
  • Rust 98.8%
  • Makefile 1.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-23 09:15:07 +10:00
.github tidy up (#53) 2025-09-30 22:02:27 +10:00
src 20260822 update glue to 2.0 (#59) 2026-08-23 09:15:07 +10:00
.gitignore Initial 2023-10-05 12:22:28 +10:00
Cargo.toml 20260822 update glue to 2.0 (#59) 2026-08-23 09:15:07 +10:00
CODE_OF_CONDUCT.md setting msrv to 1.79, bumping version (#37) 2024-11-09 09:02:40 +10:00
CODEOWNERS derpendabot and all the usual trappings (#5) 2023-10-07 10:24:54 +10:00
CONTRIBUTORS.md derpendabot and all the usual trappings (#5) 2023-10-07 10:24:54 +10:00
LICENSE.md derpendabot and all the usual trappings (#5) 2023-10-07 10:24:54 +10:00
Makefile derpendabot and all the usual trappings (#5) 2023-10-07 10:24:54 +10:00
README.md release 0.3.4 (#50) 2025-06-28 10:48:52 +10:00
SECURITY.md Update security policy. (#51) 2025-07-08 20:01:27 +10:00

Kanidm HSM Crypto

This library allows the use of HSM's, TPM's or SoftHSM's in cryptographic applications. The goal is to simplify interactions with these devices so that applications can utilise these.

Upgrading 0.2 to 0.3

Existing soft tpm keys will continue to work during this upgrade. Most types have changed name and path to better reflect their capabilities within a TPM.

  • Tpm functionality has been broken down to specific traits allowing you to mix and match what you need.
  • Keys are separated by their cryptographic type, rather than purpose.
  • PIN's may now only be set on StorageKeys.
  • OpenSSL is no longer required as a library.
  • ES256 and RS256 can now be used with X509 Certificate requests and operations.
  • ES256 and RS256 keys no longer host/store their X509 Certificates.

Some structs have changed paths. This is not an complete list, but should give an idea about the changes.

  • kanidm_hsm_crypto::Loadable X Key -> kanidm_hsm_crypto::structures::Loadable X Key
  • kanidm_hsm_crypto::X Key -> kanidm_hsm_crypto::structures::X Key
  • kanidm_hsm_crypto::soft::SoftTpm -> kanidm_hsm_crypto::provider::SoftTpm
  • kanidm_hsm_crypto::BoxedDynTpm -> kanidm_hsm_crypto::provider::BoxedDynTpm
  • kanidm_hsm_crypto::IdentityKey -> kanidm_hsm_crypto::structures::RS256Key OR kanidm_hsm_crypto::structures::ES256Key

There are a number of aliases available to help you rename some types.