tor-keymgr: Test x25519 key parsing.

This commit is contained in:
Gabriela Moldovan 2023-08-15 02:11:16 +01:00
parent 17d965e894
commit fade75ae16
No known key found for this signature in database
GPG Key ID: 3946E0ADE72BAC99
3 changed files with 44 additions and 0 deletions

View File

@ -241,6 +241,9 @@ mod tests {
const OPENSSH_ED25519: &[u8] = include_bytes!("../../testdata/ed25519_openssh.private");
const OPENSSH_ED25519_BAD: &[u8] = include_bytes!("../../testdata/ed25519_openssh_bad.private");
const OPENSSH_DSA: &[u8] = include_bytes!("../../testdata/dsa_openssh.private");
const OPENSSH_X25519: &[u8] = include_bytes!("../../testdata/x25519_openssh.private");
const OPENSSH_X25519_UNKNOWN_ALGORITHM: &[u8] =
include_bytes!("../../testdata/x25519_openssh_unknown_algorithm.private");
#[test]
fn wrong_key_type() {
@ -284,4 +287,31 @@ mod tests {
assert!(erased_key.downcast::<ed25519::Keypair>().is_ok());
}
#[test]
fn x25519_key() {
let key_type = KeyType::X25519StaticSecret;
let key = UnparsedOpenSshKey::new(OPENSSH_X25519.into(), PathBuf::from("/dummy/path"));
let erased_key = key_type.parse_ssh_format_erased(key).unwrap();
assert!(erased_key.downcast::<curve25519::StaticSecret>().is_ok());
}
#[test]
fn invalid_x25519_key() {
let key_type = KeyType::X25519StaticSecret;
let key = UnparsedOpenSshKey::new(
OPENSSH_X25519_UNKNOWN_ALGORITHM.into(),
PathBuf::from("/dummy/path"),
);
let err = key_type
.parse_ssh_format_erased(key)
.map(|_| "<type erased key>")
.unwrap_err();
assert_eq!(
err.to_string(),
"Unexpected OpenSSH key type: wanted X25519, found pangolin@torproject.org"
);
}
}

View File

@ -0,0 +1,7 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAPQAAABV4MjU1MT
lAdG9ycHJvamVjdC5vcmcAAAAgD3MDTeSLGUGD1Re2s6aF6g73KSyiteXjV1SL+pu6ASUA
AAB4wA/uXMAP7lwAAAAVeDI1NTE5QHRvcnByb2plY3Qub3JnAAAAIA9zA03kixlBg9UXtr
OmheoO9yksorXl41dUi/qbugElAAAAIDCADBQ5fbboMIMbmOgHMfHZEaIcdm0TF2Kt8bHc
pz5zAAAACHRlc3Qta2V5AQID
-----END OPENSSH PRIVATE KEY-----

View File

@ -0,0 +1,7 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAPwAAABdwYW5nb2
xpbkB0b3Jwcm9qZWN0Lm9yZwAAACBFTBevfAXZy6Ut6i9PSHeXHUpaJ6+NKabGzeoT6rFV
DgAAAHjiJEYk4iRGJAAAABdwYW5nb2xpbkB0b3Jwcm9qZWN0Lm9yZwAAACBFTBevfAXZy6
Ut6i9PSHeXHUpaJ6+NKabGzeoT6rFVDgAAACBo1W5vk9S8KAG7icAnKfq0NasfGTLO2+MJ
ifSnMVvXSgAAAAh0ZXN0LWtleQE=
-----END OPENSSH PRIVATE KEY-----