Skip to main content

Crate r2d2_cryptoki

Crate r2d2_cryptoki 

Source
Expand description

§r2d2 adaptor for cryptoki

Crates.io Documentation

Session pool manager for cryptoki.

Cryptoki has a single login state for all sessions. Only when all sessions are closed, a login is needed again. This library requires a ConnectionCustomizer on the pool to ensure login is only done when needed. The SessionAuth can be converted into the appropriate ConnectionCustomizer.

§Example

use r2d2_cryptoki::{*, cryptoki::{context::*, types::AuthPin}};

let pkcs11 = Pkcs11::new("libsofthsm2.so").unwrap();
pkcs11.initialize(CInitializeArgs::new(CInitializeFlags::OS_LOCKING_OK)).unwrap();
let slots = pkcs11.get_slots_with_token().unwrap();
let slot = slots.first().unwrap();
let session_auth = SessionAuth::RwUser(AuthPin::new("fedcba".into()));
let manager = SessionManager::new(pkcs11, *slot, &session_auth);

let pool_builder = Pool::builder().connection_customizer(session_auth.into_customizer());
let pool = pool_builder.build(manager).unwrap();

let session = pool.get().unwrap();
println!("{:?}", session.get_session_info().unwrap());

Re-exports§

pub use cryptoki;
pub use r2d2;

Structs§

SessionManager
Manager holding all information necessary for opening new connections

Enums§

SessionAuth
Session types, holding the pin for the authenticated sessions

Type Aliases§

Pool
Alias for this crate’s instance of r2d2’s Pool
PooledSession
Alias for this crate’s instance of r2d2’s PooledSession