1use blstrs::Scalar;
2use cryptoxide::ed25519;
3use pallas_crypto::key::ed25519::SecretKey;
4use pallas_primitives::Hash;
5use pallas_wallet::PrivateKey;
6
7pub fn scalar_to_secret_key(scalar: Scalar) -> SecretKey {
8 let scalar_bytes: [u8; 32] = scalar.to_bytes_be();
9 let (_, public) = ed25519::keypair(&scalar_bytes);
10 SecretKey::from(public)
11}
12
13pub fn secret_key_to_private_key(scalar: Scalar) -> PrivateKey {
14 let secret_key: SecretKey = scalar_to_secret_key(scalar);
15 PrivateKey::from(secret_key)
16}
17
18pub fn secret_key_to_public_key(scalar: Scalar) -> String {
19 let one_time_private_key: PrivateKey = secret_key_to_private_key(scalar);
20 let public_key_hash: Hash<28> =
21 pallas_crypto::hash::Hasher::<224>::hash(one_time_private_key.public_key().as_ref());
22 hex::encode(public_key_hash)
23}