mirror of
https://github.com/aljazceru/react-native-pubky.git
synced 2025-12-18 15:14:20 +01:00
feat: generate secret key
Adds generate_secret_key & get_public_key_from_secret_key functions. Adds generate_secret_key & get_public_key_from_secret_key functions examples to README.md. Fix list error on Android. Bump package version to 0.7.0.
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
use pkarr::Keypair;
|
||||
|
||||
/**
|
||||
* Get a keypair from a secret key
|
||||
*/
|
||||
pub fn get_keypair_from_secret_key(secret_key: &str) -> Result<Keypair, String> {
|
||||
let bytes = match hex::decode(&secret_key) {
|
||||
Ok(bytes) => bytes,
|
||||
@@ -14,4 +17,18 @@ pub fn get_keypair_from_secret_key(secret_key: &str) -> Result<Keypair, String>
|
||||
};
|
||||
|
||||
Ok(Keypair::from_secret_key(&secret_key_bytes))
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the secret key from a keypair
|
||||
*/
|
||||
pub fn get_secret_key_from_keypair(keypair: &Keypair) -> String {
|
||||
hex::encode(keypair.secret_key())
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a new keypair
|
||||
*/
|
||||
pub fn generate_keypair() -> Keypair {
|
||||
Keypair::random()
|
||||
}
|
||||
@@ -46,6 +46,45 @@ static TOKIO_RUNTIME: Lazy<Arc<Runtime>> = Lazy::new(|| {
|
||||
)
|
||||
});
|
||||
|
||||
#[uniffi::export]
|
||||
pub fn generate_secret_key() -> Vec<String> {
|
||||
let keypair = generate_keypair();
|
||||
let secret_key = get_secret_key_from_keypair(&keypair);
|
||||
let public_key = keypair.public_key();
|
||||
let uri = public_key.to_uri_string();
|
||||
let json_obj = json!({
|
||||
"secret_key": secret_key,
|
||||
"public_key": public_key.to_string(),
|
||||
"uri": uri,
|
||||
});
|
||||
|
||||
let json_str = match serde_json::to_string(&json_obj) {
|
||||
Ok(json) => json,
|
||||
Err(e) => return create_response_vector(true, format!("Failed to serialize JSON: {}", e)),
|
||||
};
|
||||
create_response_vector(false, json_str)
|
||||
}
|
||||
|
||||
#[uniffi::export]
|
||||
pub fn get_public_key_from_secret_key(secret_key: String) -> Vec<String> {
|
||||
let keypair = match get_keypair_from_secret_key(&secret_key) {
|
||||
Ok(keypair) => keypair,
|
||||
Err(error) => return create_response_vector(true, error),
|
||||
};
|
||||
let public_key = keypair.public_key();
|
||||
let uri = public_key.to_uri_string();
|
||||
let json_obj = json!({
|
||||
"public_key": public_key.to_string(),
|
||||
"uri": uri,
|
||||
});
|
||||
|
||||
let json_str = match serde_json::to_string(&json_obj) {
|
||||
Ok(json) => json,
|
||||
Err(e) => return create_response_vector(true, format!("Failed to serialize JSON: {}", e)),
|
||||
};
|
||||
create_response_vector(false, json_str)
|
||||
}
|
||||
|
||||
#[uniffi::export]
|
||||
pub fn publish_https(record_name: String, target: String, secret_key: String) -> Vec<String> {
|
||||
let client = PKARR_CLIENT.clone();
|
||||
|
||||
Reference in New Issue
Block a user