mod core;
pub use core::{
AdditionalObjectStoresParams, CachedObject, Database, MainDbKind, MainDbParams, UnwrappedCache,
};
mod error;
pub use error::DbError;
mod stores;
#[cfg(feature = "non-fips")]
pub use stores::redis_master_key_from_password;
#[cfg(test)]
mod tests;
pub mod reexport {
#[cfg(feature = "non-fips")]
pub use cosmian_findex;
pub use cosmian_kmip;
pub use cosmian_kms_crypto;
pub use cosmian_kms_interfaces;
#[cfg(feature = "non-fips")]
pub use redis;
}
use cosmian_kmip::kmip_2_1::kmip_objects::Object;
pub(crate) fn migrate_block_cipher_mode_if_needed(mut object: Object) -> Object {
use cosmian_kmip::{
kmip_0::kmip_types::BlockCipherMode,
kmip_2_1::kmip_objects::{
Object, PGPKey, PrivateKey, PublicKey, SecretData, SplitKey, SymmetricKey,
},
};
let key_block = match &mut object {
Object::SymmetricKey(SymmetricKey { key_block })
| Object::PrivateKey(PrivateKey { key_block })
| Object::PublicKey(PublicKey { key_block })
| Object::SecretData(SecretData { key_block, .. })
| Object::SplitKey(SplitKey { key_block, .. })
| Object::PGPKey(PGPKey { key_block, .. }) => key_block,
Object::Certificate(_) | Object::CertificateRequest(_) | Object::OpaqueObject(_) => {
return object;
}
};
if let Some(key_wrapping_data) = &mut key_block.key_wrapping_data {
if let Some(encryption_key_info) = &mut key_wrapping_data.encryption_key_information {
if let Some(crypto_params) = &mut encryption_key_info.cryptographic_parameters {
if crypto_params.block_cipher_mode == Some(BlockCipherMode::LegacyNISTKeyWrap) {
crypto_params.block_cipher_mode = Some(BlockCipherMode::AESKeyWrapPadding);
}
}
}
if let Some(mac_sign_key_info) = &mut key_wrapping_data.mac_signature_key_information {
if let Some(crypto_params) = &mut mac_sign_key_info.cryptographic_parameters {
if crypto_params.block_cipher_mode == Some(BlockCipherMode::LegacyNISTKeyWrap) {
crypto_params.block_cipher_mode = Some(BlockCipherMode::AESKeyWrapPadding);
}
}
}
}
object
}