pub trait Backend: Send + Sync {
Show 15 methods
// Required methods
fn name(&self) -> &str;
fn provider(&self) -> &str;
fn fingerprint(&self) -> String;
// Provided methods
fn as_keystore_mut(&mut self) -> Option<&mut dyn KeyStoreBackend> { ... }
fn as_sign_mut(&mut self) -> Option<&mut dyn SignBackend> { ... }
fn as_verify_mut(&mut self) -> Option<&mut dyn VerifyBackend> { ... }
fn as_attest_mut(&mut self) -> Option<&mut dyn AttestationBackend> { ... }
fn as_piv_mut(&mut self) -> Option<&mut dyn PivBackend> { ... }
fn as_yubikey_mut(&mut self) -> Option<&mut dyn YubikeyBackend> { ... }
fn as_transport_mut(&mut self) -> Option<&mut dyn KeyTransportBackend> { ... }
fn as_certstore_mut(&mut self) -> Option<&mut dyn CertStoreBackend> { ... }
fn as_random_mut(&mut self) -> Option<&mut dyn RandomBackend> { ... }
fn as_pkcs11_mut(&mut self) -> Option<&mut dyn Pkcs11Backend> { ... }
fn as_pkcs11_admin_mut(&mut self) -> Option<&mut dyn Pkcs11AdminBackend> { ... }
fn as_tpm_mut(&mut self) -> Option<&mut dyn TpmBackend> { ... }
}Expand description
Core trait that all backends must implement.
Provides identity and fingerprinting for audit trails.
§Capability downcasting
Rust does not allow downcasting from dyn Backend to dyn KeyStoreBackend
(or any other subtrait) without explicit support. The as_*_mut methods
implement this pattern manually: a backend returns Some(self) for each
capability it supports, and None for those it does not.
Use the backend_capabilities! macro to generate these methods without
boilerplate.
Required Methods§
Sourcefn fingerprint(&self) -> String
fn fingerprint(&self) -> String
Fingerprint for audit evidence.
Format examples:
- Software:
"software-backend=mybackend" YubiKey:"yubikey-serial=12345678+firmware=5.7.1"- PKCS#11:
"pkcs11-module=/usr/lib/softhsm2.so+slot=0"
Provided Methods§
Sourcefn as_keystore_mut(&mut self) -> Option<&mut dyn KeyStoreBackend>
fn as_keystore_mut(&mut self) -> Option<&mut dyn KeyStoreBackend>
Not supported by this backend, always returns None.
Sourcefn as_sign_mut(&mut self) -> Option<&mut dyn SignBackend>
fn as_sign_mut(&mut self) -> Option<&mut dyn SignBackend>
Not supported by this backend, always returns None.
Sourcefn as_verify_mut(&mut self) -> Option<&mut dyn VerifyBackend>
fn as_verify_mut(&mut self) -> Option<&mut dyn VerifyBackend>
Not supported by this backend, always returns None.
Sourcefn as_attest_mut(&mut self) -> Option<&mut dyn AttestationBackend>
fn as_attest_mut(&mut self) -> Option<&mut dyn AttestationBackend>
Not supported by this backend, always returns None.
Sourcefn as_piv_mut(&mut self) -> Option<&mut dyn PivBackend>
fn as_piv_mut(&mut self) -> Option<&mut dyn PivBackend>
Not supported by this backend, always returns None.
Sourcefn as_yubikey_mut(&mut self) -> Option<&mut dyn YubikeyBackend>
fn as_yubikey_mut(&mut self) -> Option<&mut dyn YubikeyBackend>
Not supported by this backend, always returns None.
Sourcefn as_transport_mut(&mut self) -> Option<&mut dyn KeyTransportBackend>
fn as_transport_mut(&mut self) -> Option<&mut dyn KeyTransportBackend>
Not supported by this backend, always returns None.
Sourcefn as_certstore_mut(&mut self) -> Option<&mut dyn CertStoreBackend>
fn as_certstore_mut(&mut self) -> Option<&mut dyn CertStoreBackend>
Not supported by this backend, always returns None.
Sourcefn as_random_mut(&mut self) -> Option<&mut dyn RandomBackend>
fn as_random_mut(&mut self) -> Option<&mut dyn RandomBackend>
Not supported by this backend, always returns None.
Sourcefn as_pkcs11_mut(&mut self) -> Option<&mut dyn Pkcs11Backend>
fn as_pkcs11_mut(&mut self) -> Option<&mut dyn Pkcs11Backend>
Not supported by this backend, always returns None.
Sourcefn as_pkcs11_admin_mut(&mut self) -> Option<&mut dyn Pkcs11AdminBackend>
fn as_pkcs11_admin_mut(&mut self) -> Option<&mut dyn Pkcs11AdminBackend>
Not supported by this backend, always returns None.
Sourcefn as_tpm_mut(&mut self) -> Option<&mut dyn TpmBackend>
fn as_tpm_mut(&mut self) -> Option<&mut dyn TpmBackend>
Not supported by this backend, always returns None.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".