Skip to content

Commit 26012b0

Browse files
authored
add from_secret_keys for Secret generation for ledger support (#76)
1 parent ddfbe11 commit 26012b0

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

src/participant.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use core::cell::OnceCell;
88
use core::cmp;
99
use core::hash::Hash;
1010
use core::hash::Hasher;
11+
use ed25519_dalek::SecretKey;
1112
use ed25519_dalek::Signer;
1213
use ed25519_dalek::SigningKey;
1314
use ed25519_dalek::Verifier;
@@ -80,6 +81,15 @@ impl Secret {
8081
}
8182
}
8283

84+
#[must_use]
85+
pub fn from_secret_keys(secret_key_1: &SecretKey, secret_key_2: &SecretKey) -> Self {
86+
Self {
87+
signing_key: SigningKey::from_bytes(secret_key_1),
88+
decryption_key: StaticSecret::from(*secret_key_2),
89+
identity: OnceCell::new(),
90+
}
91+
}
92+
8393
#[inline]
8494
#[must_use]
8595
pub fn signing_key(&self) -> &SigningKey {
@@ -320,8 +330,10 @@ mod tests {
320330
use super::Identity;
321331
use super::Secret;
322332
use ed25519_dalek::Signature;
333+
use ed25519_dalek::SigningKey;
323334
use hex_literal::hex;
324335
use rand::thread_rng;
336+
use x25519_dalek::StaticSecret;
325337

326338
#[test]
327339
fn secret_to_identity() {
@@ -330,6 +342,16 @@ mod tests {
330342
id.verify().expect("verification failed");
331343
}
332344

345+
#[test]
346+
fn from_secret_keys() {
347+
let mut rng = thread_rng();
348+
let secret_key_1 = SigningKey::generate(&mut rng);
349+
let secret_key_2 = StaticSecret::random_from_rng(&mut rng);
350+
let id = Secret::from_secret_keys(secret_key_1.as_bytes(), secret_key_2.as_bytes())
351+
.to_identity();
352+
id.verify().expect("verification failed");
353+
}
354+
333355
#[test]
334356
fn secret_deserialization() {
335357
let secret = Secret::random(thread_rng());

0 commit comments

Comments
 (0)