hot fixes to utc-6
This commit is contained in:
@@ -10,6 +10,7 @@ use std::path::{Path, PathBuf};
|
||||
use tokio::fs;
|
||||
|
||||
use crate::identity::did_key_from_pubkey_hex;
|
||||
use nostr_sdk::ToBech32;
|
||||
|
||||
const IDENTITIES_DIR: &str = "identities";
|
||||
const DEFAULT_MARKER: &str = ".default";
|
||||
@@ -40,7 +41,10 @@ pub struct IdentityRecord {
|
||||
pub pubkey_hex: String,
|
||||
pub did: String,
|
||||
pub created_at: String,
|
||||
/// Nostr secp256k1 public key in hex format
|
||||
pub nostr_pubkey: Option<String>,
|
||||
/// Nostr public key in bech32 npub format (NIP-19)
|
||||
pub nostr_npub: Option<String>,
|
||||
}
|
||||
|
||||
/// On-disk format for identity storage (includes secret key bytes).
|
||||
@@ -149,6 +153,7 @@ impl IdentityManager {
|
||||
did,
|
||||
created_at,
|
||||
nostr_pubkey: None,
|
||||
nostr_npub: None,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -248,6 +253,7 @@ impl IdentityManager {
|
||||
let keys = nostr_sdk::Keys::generate();
|
||||
let secret_hex = keys.secret_key().display_secret().to_string();
|
||||
let pubkey_hex = keys.public_key().to_hex();
|
||||
let npub = keys.public_key().to_bech32().unwrap_or_default();
|
||||
|
||||
file.nostr_secret_hex = Some(secret_hex);
|
||||
file.nostr_pubkey_hex = Some(pubkey_hex.clone());
|
||||
@@ -255,7 +261,7 @@ impl IdentityManager {
|
||||
let json = serde_json::to_string_pretty(&file).context("Failed to serialize identity")?;
|
||||
fs::write(&file_path, json.as_bytes()).await.context("Failed to write identity file")?;
|
||||
|
||||
tracing::info!("Created Nostr key for identity {}", id);
|
||||
tracing::info!("Created Nostr key for identity {} (npub: {})", id, &npub[..20.min(npub.len())]);
|
||||
Ok(pubkey_hex)
|
||||
}
|
||||
|
||||
@@ -317,6 +323,14 @@ impl IdentityManager {
|
||||
.context("Failed to read identity file")?;
|
||||
let file: IdentityFile = serde_json::from_slice(&data)
|
||||
.context("Failed to parse identity file")?;
|
||||
|
||||
// Derive npub (bech32) from hex pubkey if available
|
||||
let nostr_npub = file.nostr_pubkey_hex.as_ref().and_then(|hex| {
|
||||
nostr_sdk::PublicKey::from_hex(hex)
|
||||
.ok()
|
||||
.and_then(|pk| pk.to_bech32().ok())
|
||||
});
|
||||
|
||||
Ok(IdentityRecord {
|
||||
id: file.id,
|
||||
name: file.name,
|
||||
@@ -325,6 +339,7 @@ impl IdentityManager {
|
||||
did: file.did,
|
||||
created_at: file.created_at,
|
||||
nostr_pubkey: file.nostr_pubkey_hex,
|
||||
nostr_npub,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user