diff --git a/lib/ssh/key/verifier.rb b/lib/ssh/key/verifier.rb index f2b52be..c953015 100644 --- a/lib/ssh/key/verifier.rb +++ b/lib/ssh/key/verifier.rb @@ -92,15 +92,23 @@ def verify(signatures, original) inputs = [signatures] end - if inputs[0].is_a? SSH::Key::Signature - @logger.debug("verify 'signatures' is an array of Signatures") - inputs = inputs.collect { |i| i.signature } - end - inputs.each do |signature| identities.each do |identity| - key = [signature, identity] - results[key] = identity.ssh_do_verify(signature, original) + if signature.is_a? SSH::Key::Signature + @logger.debug("verify 'signatures' is an array of Signatures") + key = [signature.signature, identity] + results[key] = identity.ssh_do_verify(signature.signature, original, signature.type.rstrip) + else + @logger.debug("verify 'signatures' is array of Strings") + key = [signature, identity] + if identity.ssh_do_verify(signature, original, {:host_key => 'rsa-sha2-256'}) + results[key] = true + elsif identity.ssh_do_verify(signature, original) + results[key] = true + else + results[key] = false + end + end @logger.info "Trying key #{identity.to_s.split("\n")[1]}... #{results[key]}" end end