Support reading DSA public keys

This commit is contained in:
2019-04-04 20:49:02 -07:00
parent 22b4fcbd94
commit 6613f85ff3
3 changed files with 65 additions and 4 deletions

View File

@@ -6,10 +6,14 @@ use ssh::frame::*;
use ssh::SSHKey;
impl SSHKey for DSAKeyPair<L1024N160> {
fn valid_keytype(s: &str) -> bool {
(s == "ssh-dss") || (s == "dss")
}
fn parse_ssh_public_info<I: Read>(inp: &mut I) -> Result<Self::Public,SSHKeyParseError>
{
let pubkey_type = parse_openssh_string(inp)?;
if pubkey_type != "ssh-dss" {
if !Self::valid_keytype(&pubkey_type) {
return Err(SSHKeyParseError::UnknownKeyType(pubkey_type));
}
let pubp = parse_openssh_number(inp)?;
@@ -29,7 +33,7 @@ impl SSHKey for DSAKeyPair<L1024N160> {
return Err(SSHKeyParseError::PrivateKeyCorruption);
}
let privkey_type = parse_openssh_string(inp)?;
if privkey_type != "ssh-dss" {
if !Self::valid_keytype(&privkey_type) {
return Err(SSHKeyParseError::InconsistentKeyTypes("ssh-dss".to_string(), privkey_type));
}
let privp = parse_openssh_number(inp)?;