diff --git a/src/sshutil.rs b/src/sshutil.rs index 149adb0..5e6d7bc 100644 --- a/src/sshutil.rs +++ b/src/sshutil.rs @@ -7,14 +7,13 @@ pub fn with_sign(mut vec: Vec) -> Vec { pub fn generate_ssh_string(e: &[u8], n: &[u8], comment: &str) -> String { let mut ssh_key = vec![]; - let ssh_rsa_bytes = "ssh-rsa".as_bytes(); - ssh_key.extend_from_slice(&(ssh_rsa_bytes.len() as u32).to_be_bytes()[..]); - ssh_key.extend_from_slice(ssh_rsa_bytes); - let e = with_sign(e.to_vec()); - ssh_key.extend_from_slice(&(e.len() as u32).to_be_bytes()[..]); - ssh_key.extend_from_slice(&e); - let n = with_sign(n.to_vec()); - ssh_key.extend_from_slice(&(n.len() as u32).to_be_bytes()[..]); - ssh_key.extend_from_slice(&n); + append_slice_with_len(&mut ssh_key, "ssh-rsa".as_bytes()); + append_slice_with_len(&mut ssh_key, &with_sign(e.to_vec())); + append_slice_with_len(&mut ssh_key, &with_sign(n.to_vec())); format!("ssh-rsa {} {}", base64::encode(&ssh_key), comment) +} + +pub fn append_slice_with_len(v: &mut Vec, s: &[u8]) { + v.extend_from_slice(&(s.len() as u32).to_be_bytes()[..]); + v.extend_from_slice(s); } \ No newline at end of file