Expand description

A Keystore is a secure repository of private keys. MetaLairClient is a reference to a Keystore. MetaLairClient allows async generation of keypairs, and usage of those keypairs, reference by the public AgentPubKey.


use holo_hash::AgentPubKey;
use holochain_keystore::*;
use holochain_serialized_bytes::prelude::*;

#[tokio::main(flavor = "multi_thread")]
async fn main() {
    tokio::task::spawn(async move {
        let keystore = test_keystore::spawn_test_keystore().await.unwrap();
        let agent_pubkey = AgentPubKey::new_random(&keystore).await.unwrap();

        #[derive(Debug, serde::Serialize, serde::Deserialize, SerializedBytes)]
        struct MyData(Vec<u8>);

        let my_data_1 = MyData(b"signature test data 1".to_vec());

        let signature = agent_pubkey.sign(&keystore, &my_data_1).await.unwrap();

        assert!(agent_pubkey.verify_signature(&signature, &my_data_1).await.unwrap());


pub use keystore_actor::KeystoreSender;
pub use keystore_actor::KeystoreSenderExt;


Defines a crude mock Keystore which always returns the same Error for every call. This is about as close as we can get to a true mock which would allow tweaking individual handlers, hence why this is a “crude” mock.

This module contains all the types needed to implement a keystore actor. We will re-export the main KeystoreSender usable by clients at the lib.

Keystore backed by legacy_lair_client.

DANGER! This is a mock keystore for testing, DO NOT USE THIS IN PRODUCTION!


Keystore Error Type.

Abstraction around runtime switching/upgrade of lair keystore / client. Can delete this when we finally delete deprecated legacy lair option.


Extend holo_hash::AgentPubKey with additional signature functionality from Keystore.

Type Definitions

Lair result type.