From 5677357fd53c5274db2586ee5d12049f18414631 Mon Sep 17 00:00:00 2001 From: Madhava Jay Date: Thu, 4 Dec 2025 06:30:37 +1000 Subject: [PATCH] Make recovery easier via api --- protocol/src/identity.rs | 15 +++++++++++++++ protocol/src/lib.rs | 4 +++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/protocol/src/identity.rs b/protocol/src/identity.rs index 129aa08..f424ba8 100644 --- a/protocol/src/identity.rs +++ b/protocol/src/identity.rs @@ -17,6 +17,21 @@ pub struct IdentityMaterial { pub fn generate_identity_material(identity: &str) -> Result { let recovery_key = SyftRecoveryKey::generate(); + build_identity_material(identity, &recovery_key) +} + +/// Build deterministic identity material from an existing recovery key (e.g., restored via mnemonic). +pub fn identity_material_from_recovery_key( + identity: &str, + recovery_key: &SyftRecoveryKey, +) -> Result { + build_identity_material(identity, recovery_key) +} + +fn build_identity_material( + identity: &str, + recovery_key: &SyftRecoveryKey, +) -> Result { let recovery_key_hex = recovery_key.to_hex_string(); let recovery_key_mnemonic = recovery_key.to_mnemonic(); diff --git a/protocol/src/lib.rs b/protocol/src/lib.rs index fdecb3f..dccf3dc 100644 --- a/protocol/src/lib.rs +++ b/protocol/src/lib.rs @@ -10,7 +10,9 @@ pub mod storage; pub use encryption::{EncryptionRecipient, FILE_CIPHER_SUITE, decrypt_message, encrypt_message}; pub use error::{KeyError, RecoveryError, Result, SerializationError}; -pub use identity::{IdentityMaterial, generate_identity_material}; +pub use identity::{ + IdentityMaterial, generate_identity_material, identity_material_from_recovery_key, +}; pub use keys::{ SyftPrivateKeys, SyftPublicKeyBundle, SyftRecoveryKey, compute_identity_fingerprint, compute_key_fingerprint,