contextvm_sdk/signer/
mod.rs1pub use nostr_sdk::prelude::{Keys, NostrSigner, PublicKey};
6
7pub fn from_sk(sk: &str) -> std::result::Result<Keys, nostr_sdk::key::Error> {
9 Keys::parse(sk)
10}
11
12pub fn generate() -> Keys {
14 Keys::generate()
15}
16
17#[cfg(test)]
18mod tests {
19 use super::*;
20
21 #[test]
22 fn test_generate_produces_valid_keys() {
23 let keys = generate();
24 let pubkey = keys.public_key();
25 assert_eq!(pubkey.to_hex().len(), 64);
27 }
28
29 #[test]
30 fn test_generate_produces_unique_keys() {
31 let k1 = generate();
32 let k2 = generate();
33 assert_ne!(k1.public_key(), k2.public_key());
34 }
35
36 #[test]
37 fn test_from_sk_hex() {
38 let keys = generate();
39 let sk_hex = keys.secret_key().to_secret_hex();
40 let restored = from_sk(&sk_hex).unwrap();
41 assert_eq!(restored.public_key(), keys.public_key());
42 }
43
44 #[test]
45 fn test_from_sk_nsec() {
46 let keys = generate();
47 use nostr_sdk::ToBech32;
48 let nsec = keys.secret_key().to_bech32().unwrap();
49 let restored = from_sk(&nsec).unwrap();
50 assert_eq!(restored.public_key(), keys.public_key());
51 }
52
53 #[test]
54 fn test_from_sk_invalid() {
55 assert!(from_sk("not_a_valid_key").is_err());
56 assert!(from_sk("").is_err());
57 }
58}