From 59cdfc3b7789cc1d9b2a06f27fd0146289b602e4 Mon Sep 17 00:00:00 2001 From: turuslan Date: Thu, 16 Apr 2026 08:24:42 +0500 Subject: [PATCH 1/2] get_public_key --- src/signature.rs | 9 +++++++++ src/signature/generalized_xmss.rs | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/src/signature.rs b/src/signature.rs index e51ec45..7799ec6 100644 --- a/src/signature.rs +++ b/src/signature.rs @@ -203,6 +203,15 @@ pub trait SignatureScheme { message: &[u8; MESSAGE_LENGTH], sig: &Self::Signature, ) -> bool; + + /// Get public key corresponding to given secret key. + /// + /// ### Parameters + /// * `sk`: A reference to the secret key. + /// + /// ### Returns + /// Public key corresponding to given secret key. + fn get_public_key(sk: &Self::SecretKey) -> Self::PublicKey; } pub mod generalized_xmss; diff --git a/src/signature/generalized_xmss.rs b/src/signature/generalized_xmss.rs index 69f1756..41c6789 100644 --- a/src/signature/generalized_xmss.rs +++ b/src/signature/generalized_xmss.rs @@ -1003,6 +1003,13 @@ where &sig.path, ) } + + fn get_public_key(sk: &Self::SecretKey) -> Self::PublicKey { + Self::PublicKey { + root: sk.top_tree.root(), + parameter: sk.parameter, + } + } } impl Encode for GeneralizedXMSSPublicKey { From c23d66f0242520cd637a4e2e6c1c214a4d82cb3b Mon Sep 17 00:00:00 2001 From: turuslan Date: Thu, 16 Apr 2026 08:26:09 +0500 Subject: [PATCH 2/2] simplify key_gen --- src/signature/generalized_xmss.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/signature/generalized_xmss.rs b/src/signature/generalized_xmss.rs index 41c6789..74ec20b 100644 --- a/src/signature/generalized_xmss.rs +++ b/src/signature/generalized_xmss.rs @@ -826,10 +826,8 @@ where ¶meter, roots_of_bottom_trees, ); - let root = top_tree.root(); // assemble public key and secret key - let pk = GeneralizedXMSSPublicKey { root, parameter }; let sk = GeneralizedXMSSSecretKey { prf_key, parameter, @@ -841,6 +839,7 @@ where right_bottom_tree, _encoding_type: PhantomData, }; + let pk = Self::get_public_key(&sk); (pk, sk) }