uni_vault 0.0.3

uni_vault is a high-level Rust crate that provides secure vault functionality through advanced encryption methods. It leverages Trezor Ethereum signatures as a seed to generate SSH private keys and corresponding Rage key pairs, enabling asymmetric encryption and decryption operations. Built atop the signature_to_keys crate, uni_vault abstracts complex cryptographic processes into an accessible API, ensuring secure storage and management of sensitive data.
Documentation
#[cfg(test)]
mod tests {
    use crate::{
        uni_vault::{
            UniVault,
            UniVaultBuilder,
        },
        encryptor::{
            asymmetric::rage_trezor::{
                RageTrezorEncryptorBuilder,
                RageTrezorEncryptor,
            },
            Encryptor,
            HasUserIdentifier,
            SecretType,
        },
        re_export::std_anyhow::*,
        common::traits::JsonSerializable,
        common::test_helpers::{
            TREZOR_ENCRYPT_COMMENT,
            print_json_with_line
        },
    };

    #[test]
    #[ignore]
    fn test_uni_vault_by_rage_trezor()
    {
        let passowrd_for_test = 12345678.to_string();
        let password_as_bytes = passowrd_for_test.as_bytes();
        let mut recipients_with_my_backup_key = HashSet::new();
        recipients_with_my_backup_key.insert("ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILD0y5DXSqOmx/Tf0pKP23+JrCVSUrezlPDf/vcFFt3s".to_string());

        let rage_trezor_encryptor: RageTrezorEncryptor = RageTrezorEncryptorBuilder::default()
            .platform_id("uni.vault.onion")
            .username("test_account")
            .should_create_new_recipient(true)
            .recipients(recipients_with_my_backup_key)
            .secret_type(SecretType::Password)
            .bip32_path("m/44h/60h/11h/0/12")
            .comment(TREZOR_ENCRYPT_COMMENT)
            .build()
            .unwrap();


        let mut uni_vault: UniVault<RageTrezorEncryptor> = UniVaultBuilder::default()
            .encryptor(rage_trezor_encryptor)
            .data_type(SecretType::Password)
            .data(password_as_bytes)
            .build().unwrap();
        print_json_with_line!(&uni_vault);

        uni_vault.encrypt().unwrap();
        print_json_with_line!(&uni_vault);

        uni_vault.decrypt().unwrap();
        print_json_with_line!(&uni_vault);

        assert_eq!(password_as_bytes, uni_vault.data);
    }
}