Skip to content

Commit

Permalink
- Add tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
jordansissel committed Oct 11, 2010
1 parent 25c0f20 commit c1aca87
Show file tree
Hide file tree
Showing 5 changed files with 132 additions and 0 deletions.
27 changes: 27 additions & 0 deletions test/keys/tester_nopassphrase_rsa
@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEoQIBAAKCAQEA8tpxavVG0N2T7dPKjSUZH12zwfyQkeH7HD8i7rv7/tXt0C+i
k4Vo8FubxBy1+dd5+/M/AcChlAfPhRhkt+5Ge0XGhjJ/nsWJAahEYJH1N5E6JQnU
VHSxYdDux76bUSEodfuskc/opmUaJ0Qbpw40OYe8e7VquL9pwAMHK6vUmfPfG0Jb
6AhwfDQ5nj/sZa3zs8GAueI4LD694oanm308vnDsrJuhfER4Hyiv89cega0k+gFk
CR5/2cn33XFzl8x+70Cvd0jxKwVhTEKF3Dg5W/nz+ilfEUvfSF7Z5Vp9mxvtECe9
DPJiBAWtvZA4LcSct/KcQ/k1W6CZbYVnMe6llwIBIwKCAQB85V7mjMVVeUTDdDxI
lrx2h/YL/ju4vVySLxlHk+Cu8a2BAo4f+3fMEdsUZol5LPzn+XDcVHBawjA10gfp
kHwE4g5TpPEtFSHjmF2uAevTb0J5csT4PAN0Ik7qYga8AmyUcs3HVPtOQp+8bCt6
fFVfamDvKhmg13g23PxfmjLS1DBv4Ibgpw/4Z9baYRNDEwNnB1McxAfLhsPoUirB
ByyAV333ZEMgpwv8NylqP5TT1jt2J4H9E4g9t8+YDC0QZZvTpnJzHS5MNTcdNOZU
pt0KDQPCQyXaXUhY2H/zxYOAEbx8MS0OrgDdfnm/9FUTNaNpcbmdYJyqVpe/LrYl
pOh7AoGBAPulbx9JTJnXt5kxODr9WlndyC9WOu6p1kzA+bGzoX1dnu1phPRJrG9W
NWZYbL6p/ZBf2p+Jf0Q68Qr+cfpKn1/n9WRcgASWx4Awb5tgw7uptGSmKmKtPs+J
MBT8AyS6IenyibmlSXktbJY2AjYQ8n66yM0AppNU/We6Z0enDoRFAoGBAPcOEG8/
PhslCAzg2Shl54T/axNWYwF2qYJsCaLF3AVK0opT07jk4XF6+c5pRBPKAMumL0e+
MiR8LGdwPSGtSxqy3PrJLKDHK70Nsyqd9yU7LEDofGutOzv1+5M6AfWg14ZlBYEg
cwOZsWOuwSPMzWA+WuZYbBwQwe4xJtnP5pYrAoGBAO1ENZKG8HPLY/bWortGpaUw
McY7XCLapXuRYHRY6LgH0FwwSigoNN4A00M9bdhXIkZLv4B6U2w3ks/Z9m+lcbIy
eafE7bsvE99DnG3thVkq+orIjl0JvuDvEBPJCkczJ0pLFCQQ3t/3oOVmH1eMUlo7
FRkPPfiglydJWhBbrpn3AoGAP4dGDfpRzHc8lZjnYijVIjMM57cgxdyvPstS71dz
F03BHEFw9Qenr3dkzq1apgC+YECtEnK8b8gorOJY3MYpQWExglD82OLCGqvAW2py
wG5NNUMYrflYX+Aqv3VQ9gTJtNgl/KHxsHf6ahb+duuFRKJR43XSqCGQ9BtEgSbU
5MkCgYBKNuZaqkOMQ6lgdqOXRdKb54fQsgOAUUBi4dkscRjUtO9ukv4Cb1au27UC
lV3S5zXpBhxdgqzBzl/vMCF+rBbeamNxe9CdAd0eNzJtQvY2EjUUYsbkfSHy3QXU
0B2m7/UJ6RIhfmhOhnAG0POo7sy6oN1AmwwASAxFjZikkKq+vw==
-----END RSA PRIVATE KEY-----
1 change: 1 addition & 0 deletions test/keys/tester_nopassphrase_rsa.pub
@@ -0,0 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA8tpxavVG0N2T7dPKjSUZH12zwfyQkeH7HD8i7rv7/tXt0C+ik4Vo8FubxBy1+dd5+/M/AcChlAfPhRhkt+5Ge0XGhjJ/nsWJAahEYJH1N5E6JQnUVHSxYdDux76bUSEodfuskc/opmUaJ0Qbpw40OYe8e7VquL9pwAMHK6vUmfPfG0Jb6AhwfDQ5nj/sZa3zs8GAueI4LD694oanm308vnDsrJuhfER4Hyiv89cega0k+gFkCR5/2cn33XFzl8x+70Cvd0jxKwVhTEKF3Dg5W/nz+ilfEUvfSF7Z5Vp9mxvtECe9DPJiBAWtvZA4LcSct/KcQ/k1W6CZbYVnMe6llw== jls@snack.home
30 changes: 30 additions & 0 deletions test/keys/tester_withpassphrase_rsa
@@ -0,0 +1,30 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,89BA80483980E174

hFGVgynymna5kvscc7Xeks9MQ6rkHoJaZBW+y+R2YNxVh9nsmcSGqu1v1zOjsb7M
P8pUbPqPc44dVRbLTWjo2lecXl8Yf4krwOfZ3vfaqHJdDiyWMo0meB8r2LwK7GsG
qTogPRXYbElAYQcyCaPc0AuUgslxUkO1NHbq9KaQGiUsQSo2tD7BTJeZG+c1k0o1
eW9F0oBfnTBbMAryd66rx68QJa+X/PAhY+g7qA8VFDSz08c6v/oupyB4orePdOKC
ICWyQNs/YZpKiuOyTRIvPSBkuwJmIy0oflXoAWVXcI32l+3p90DOWqJaf4ibWHXR
a9VFdiz/kwpy/kg1kIo+5UdkSNd0IgzwUqjsIOiJXHgZKxNtH/toNQ1PhYjtnrsd
3NRdr74nqcRfHMJxDDlMDOgK8TiqjvoOJ3kNs+Bc9hD2W89v38ybqFoMhWr8j7HA
8ZKcpWD2dQjo3FMu2NiEBzoozYkXwvxJhUC3Z3uFmRJSVByC82TyNLfGXe93mEn3
UyJSpiwayi5Dy8TB2/KtFHOU6A6Q9ha6XwvJlgMynEG72m8UenINPYQqQGWxu2Ma
xxzxKWzD8FiJeSn9tRJEmvdXkI4kM4x0QcpQ7COYKD1E69W/uNi6cHTy/VA0fJd5
LIcGx6L4HZvPu8qMZj6BWgOL8XuYlLWaXTgDAgbolxObr5xl/FgOcx+oKtIKqFx7
geAtoFdEsVNLT5bohwgrJmTvWvi9AjAjHXRTDTHfTOsa6HePZUekrF/w2MmeKeg0
JESIoIMaPErnA45b0X/kmYl90xNsPT7RdV7KwrjTS19CiNYgZ6DPoA/gJSjpMFOo
SKC2K9TLurmJfh20+9FrUJvDlwiwHkcsDkMwXICifqwJdjcLey8Ux7zPmAo9UzhS
h2Rdhqw77XGeGYwQbg+rvHFJdrxoTpc5HYb+K7VaR7cHZZo1oc2VUjhWMNpbxAIy
mRthnAqJ2aVhePRmwTFE8Ej6+tfS8ovQWFa1wl3EUJYVoGClPqj23tlnTQlL/Iiq
ZRbT+9Cn0o4xqcrpTDCWSWTsDTzvnx7u6cDd4S5C1UQMXIFju6gLTsXyWysL3tpD
wi02A1a1WI+kkN3CCTvOSH2CmdDzyZgKXU6p/CJ3/yMTvWh6zub17AkOCvWkmUXa
l0DvtsgKpEKVmoB0CYGGozYDoW1ncicITThAy07zD0BnymN4/c1VeWiGazrrUZPs
wE0eXV+NSDP/iTf0Wn4mR80vt/E3X6D7SlruFAcc3NwN5V/m9ldnpK0yKZ0Wt97X
L0bwLo9oBAHJ0EbFMhURrQQxBpWT73QmTJiPeB6R+AoVy/o7yjaRnhgf0YRAL1os
Dvl4vh00yqrs+sIm9AtL1dHJR1YmAREnNXB3HY88qirrJqMooR1IiJtPLCCJ3Wlm
XinASr6mx/wlaGRcQJlPs5NbL+VRv6r/coWEDFELZU2Q+ZOEmzQ8aNtO1uOQ2ADN
xOBYyraN/9kQMr/FzvQ9eRy+NTftXpZVoV7Z0j3c7rqXTNejuG+h2LR6A//d13RC
QhoYsXXls1sDX+x6nTNcxlmPucrAnJ8rC/XY0UNa0NjrNFKq7tFxsg==
-----END RSA PRIVATE KEY-----
1 change: 1 addition & 0 deletions test/keys/tester_withpassphrase_rsa.pub
@@ -0,0 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAzMth8xzMRlKZXB7DwwYf/JqChrV7d/s1IEoxvUH6bWIgv42DHI0pzeJeLcEdlNLPwu8wLGnx82Wlp0fwM1D+pOdFEErbMx2FHXA0dq0U69smRC1lc7OL64RG/u84vyXoFyFMZo5uyI2YlWf7cEZZVjy9ePBCDXutCuTDUrkolncLYd9FxY/SayxIwZRUZbuIRNhnX2v32ijYj8sMJLWl0jksGtOeNC7uEegrow10CHPrh2z07DZb2kLq75evsSTnLbQEsKrkMCMZLSZVp0ZehJb0pn1DEdbAWx8cG9b1NAEl/aLM/h565ExnWuP0i2ExETHh4c6BXLfxF9ybedtPDQ== jls@snack.home
73 changes: 73 additions & 0 deletions test/test_agent.rb
@@ -0,0 +1,73 @@

require "test/unit"

$:.unshift "#{File.dirname(__FILE__)}/../lib"
require "ssh/key/signer"
require "ssh/key/verifier"

class TestAgent < Test::Unit::TestCase
def setup
# Ensure we don't accidentally use the caller's ssh agent
ENV.delete("SSH_AUTH_SOCK")
ENV.delete("SSH_AGENT_PID")

# Run our own ssh-agent; it will output values and then fork/detach
values = %x{ssh-agent}.split("\n").grep(/^SSH[^=]+=/)
values.collect { |line| line.split("=", 2) }.each do |key, value|
value.gsub!(/; export.*/, "")
ENV[key] = value
#puts "ENV[#{key}] = #{value}"
end
end # def setup

def teardown
# Should we use ssh-agent -k, instead?
Process.kill("KILL", ENV["SSH_AGENT_PID"].to_i) rescue nil
end # def teardown

def test_no_keys
signer = SSH::Key::Signer.new
idcount = signer.signing_identities.length
assert_equal(0, idcount,
"A new signer with an empty ssh-agent should have no " \
"identities, found #{idcount}")
end

def test_with_rsa_key
system("ssh-add keys/tester_nopassphrase_rsa > /dev/null 2>&1")

signer = SSH::Key::Signer.new
idcount = signer.signing_identities.length
assert_equal(1, idcount, "Expected 1 identity, found #{idcount}.")
end

def test_sign_and_verify_with_rsa_key
system("ssh-add keys/tester_nopassphrase_rsa > /dev/null 2>&1")
signer = SSH::Key::Signer.new
verifier = SSH::Key::Verifier.new

inputs = [ "hello", "foo bar 1 2 3 4", Marshal.dump({:test => :fizz}),
"", "1", " " ]
inputs.each do |data|
signatures = signer.sign(data)
assert(verifier.verify?(signatures, data),
"Signature verify failed against data '#{data.inspect}'")
end
end

def test_sign_and_verify_with_rsa_key_fails_on_bad_data
system("ssh-add keys/tester_nopassphrase_rsa > /dev/null 2>&1")
signer = SSH::Key::Signer.new
verifier = SSH::Key::Verifier.new

inputs = [ "hello", "foo bar 1 2 3 4", Marshal.dump({:test => :fizz}),
"", "1", " " ]
inputs.each do |data|
signatures = signer.sign(data)
assert(!verifier.verify?(signatures, data + "bad"),
"Signature verify expected to fail when verifying against altered data")
end
end
end # class TestAgent


0 comments on commit c1aca87

Please sign in to comment.