artisan_keystore 2.1.1

A keystore server designed for AH
Documentation
use ais_keystore_lib::{
    generate_key, get_key,
    grpc::keystore::key_store_client::KeyStoreClient,
    migrate_key,
    shared::consts::{ADDR, PORT},
    store_key,
};
use tonic::transport::Channel;

#[tokio::main]
async fn main() {
    let addr = format!("http://{}:{}", ADDR, PORT);
    let mut client: KeyStoreClient<Channel> = KeyStoreClient::connect(addr).await.unwrap();

    // Ask the server to generate a new random key
    let key = generate_key(&mut client, None).await.unwrap();
    println!("Generated key: {}", hex::encode(&key));

    // Store the generated key
    store_key(&mut client, "example".to_string(), key.clone(), Some(120))
        .await
        .unwrap();
    println!("Key stored under ID 'example'");

    // Retrieve it back
    let fetched = get_key(&mut client, "example".to_string(), None)
        .await
        .unwrap();
    println!("Retrieved key: {}", hex::encode(&fetched));

    // Migrate the key (creates a new version)
    migrate_key(&mut client, "example".to_string())
        .await
        .unwrap();
    println!("Key migrated");
}