@@ -242,6 +242,8 @@ pub fn resolve_key_type(algo: &GfrKeyAlgo, can_encrypt: bool) -> Result<KeyType,
242242 GfrKeyAlgo :: DSA2048 => Ok ( KeyType :: Dsa ( DsaKeySize :: B2048 ) ) ,
243243 GfrKeyAlgo :: DSA3072 => Ok ( KeyType :: Dsa ( DsaKeySize :: B3072 ) ) ,
244244
245+ GfrKeyAlgo :: ED25519LEGACY => Ok ( KeyType :: Ed25519Legacy ) ,
246+
245247 GfrKeyAlgo :: KYBER768X25519 => Ok ( KeyType :: MlKem768X25519 ) ,
246248 GfrKeyAlgo :: KYBER1024X448 => Ok ( KeyType :: MlKem1024X448 ) ,
247249
@@ -291,12 +293,34 @@ pub fn determine_algo(public_params: &PublicParams) -> GfrKeyAlgo {
291293 ECCCurve :: Secp256k1 => GfrKeyAlgo :: SECP256K1 ,
292294 _ => GfrKeyAlgo :: Unknown ,
293295 } ,
296+ PublicParams :: EdDSALegacy ( _) => GfrKeyAlgo :: ED25519LEGACY ,
294297 PublicParams :: MlKem768X25519 ( _) => GfrKeyAlgo :: KYBER768X25519 ,
295298 PublicParams :: MlKem1024X448 ( _) => GfrKeyAlgo :: KYBER1024X448 ,
296299 _ => GfrKeyAlgo :: Unknown , // Fallback
297300 }
298301}
299302
303+ pub fn extract_key_length ( public_params : & PublicParams ) -> Option < u32 > {
304+ match public_params {
305+ PublicParams :: RSA ( p) => Some ( p. key . n ( ) . bits ( ) as u32 ) ,
306+ PublicParams :: DSA ( p) => Some ( p. key . components ( ) . p ( ) . bits ( ) as u32 ) ,
307+
308+ PublicParams :: Ed25519 ( _) => Some ( 255 ) ,
309+ PublicParams :: Ed448 ( _) => Some ( 448 ) ,
310+ PublicParams :: X448 ( _) => Some ( 448 ) ,
311+
312+ PublicParams :: ECDH ( p) => Some ( p. curve ( ) . nbits ( ) as u32 ) ,
313+ PublicParams :: ECDSA ( p) => Some ( p. curve ( ) . nbits ( ) as u32 ) ,
314+
315+ PublicParams :: EdDSALegacy ( _) => Some ( 255 ) ,
316+
317+ PublicParams :: MlKem768X25519 ( _) => Some ( 768 ) ,
318+ PublicParams :: MlKem1024X448 ( _) => Some ( 1024 ) ,
319+
320+ _ => None ,
321+ }
322+ }
323+
300324pub fn check_if_quantum_hybrid_algo ( algo : & GfrKeyAlgo ) -> bool {
301325 matches ! ( algo, GfrKeyAlgo :: KYBER768X25519 | GfrKeyAlgo :: KYBER1024X448 )
302326}
@@ -320,26 +344,6 @@ pub fn check_if_should_use_key_ver_v6(
320344 false
321345}
322346
323- pub fn extract_key_length ( public_params : & PublicParams ) -> Option < u32 > {
324- match public_params {
325- PublicParams :: RSA ( p) => Some ( p. key . n ( ) . bits ( ) as u32 ) ,
326- PublicParams :: DSA ( p) => Some ( p. key . components ( ) . p ( ) . bits ( ) as u32 ) ,
327-
328- PublicParams :: Ed25519 ( _) => Some ( 255 ) ,
329- PublicParams :: Ed448 ( _) => Some ( 448 ) ,
330- PublicParams :: X448 ( _) => Some ( 448 ) ,
331-
332- PublicParams :: ECDH ( p) => Some ( p. curve ( ) . nbits ( ) as u32 ) ,
333-
334- PublicParams :: ECDSA ( p) => Some ( p. curve ( ) . nbits ( ) as u32 ) ,
335-
336- PublicParams :: MlKem768X25519 ( _) => Some ( 768 ) ,
337- PublicParams :: MlKem1024X448 ( _) => Some ( 1024 ) ,
338-
339- _ => None ,
340- }
341- }
342-
343347pub fn is_self_signature_from_primary ( sig : & Signature , primary_fpr_bytes : & [ u8 ] ) -> bool {
344348 sig. issuer_fingerprint ( )
345349 . iter ( )
0 commit comments