tpfs_krypt 7.1.8

An interface for accessing secrets
Documentation
use crate::unit_tests::prelude::*;
use crate::{
    core::KeyPair,
    crypto::translator::KeyPairInstance,
    persistence::{deserialize_keypair, serialize_keypair},
};
use proptest::prelude::*;
use secrecy::ExposeSecret;
use std::string::ToString;
const SERIALIZATION_CASES: u32 = 20;

proptest! {
    #![proptest_config(ProptestConfig::with_cases(SERIALIZATION_CASES))]
    #[test]
    fn has_associated_data_in_serialization(key_type in keytype_strategy()) {
        let generated = KeyPairInstance::generate(key_type).unwrap();

        let serialized = serialize_keypair(&generated).unwrap();
        let contents = serialized.expose_secret();

        prop_assert!(contents.contains(&key_type.to_string()));
        prop_assert!(contents.contains(&generated.identifier().value));
        prop_assert!(contents.contains(generated.to_secret().unwrap().expose_secret()));
    }
}

proptest! {
    #![proptest_config(ProptestConfig::with_cases(SERIALIZATION_CASES))]
    #[test]
    fn has_same_data_when_deserialized(key_type in keytype_strategy()) {
        let generated = KeyPairInstance::generate(key_type).unwrap();

        let serialized = serialize_keypair(&generated).unwrap();
        let deserialized = deserialize_keypair(serialized).unwrap();

        prop_assert_eq!(generated.get_key_type(), deserialized.get_key_type());
        prop_assert_eq!(&generated.identifier().value, &deserialized.identifier().value);

        let generated_secret_string = generated.to_secret().unwrap();
        let deserialized_secret_string = deserialized.to_secret().unwrap();
        prop_assert_eq!(&generated_secret_string.expose_secret(), &deserialized_secret_string.expose_secret());
    }
}