diff --git a/ssh-key/src/private/sk.rs b/ssh-key/src/private/sk.rs index 99d37d0..cc817c4 100644 --- a/ssh-key/src/private/sk.rs +++ b/ssh-key/src/private/sk.rs @@ -120,6 +120,30 @@ pub struct SkEd25519 { } impl SkEd25519 { + /// Construct new instance of SkEd25519. + #[cfg(feature = "alloc")] + pub fn new( + public: public::SkEd25519, + flags: u8, + key_handle: impl Into> + ) -> Result { + let key_handle = key_handle.into(); + + if key_handle.len() <= 255 { + Ok(SkEd25519 { + public, + flags, + key_handle: key_handle.to_vec(), + reserved: Vec::::new(), + }) + } + else { + Err(Error::TooLong { + bad_len: key_handle.len() + }) + } + } + /// Get the Ed25519 public key. pub fn public(&self) -> &public::SkEd25519 { &self.public