sshkey 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -21,15 +21,15 @@ Both of these will return an SSHKey object with the following methods:
21
21
  # Returns an OpenSSL::PKey::RSA key object
22
22
  # See http://www.ruby-doc.org/stdlib/libdoc/openssl/rdoc/classes/OpenSSL/PKey/RSA.html
23
23
  k.key_object
24
- # => -----BEGIN RSA PRIVATE KEY-----\nMIIEowI
24
+ # => -----BEGIN RSA PRIVATE KEY-----\nMIIEowI...
25
25
 
26
26
  # Returns the RSA Private Key as a string
27
27
  k.rsa_private_key
28
- # => "-----BEGIN RSA PRIVATE KEY-----\nMIIEowI"
28
+ # => "-----BEGIN RSA PRIVATE KEY-----\nMIIEowI..."
29
29
 
30
30
  # Returns the RSA Public Key as a string
31
31
  k.rsa_public_key
32
- # => "-----BEGIN RSA PUBLIC KEY-----\nMIIBCg"
32
+ # => "-----BEGIN RSA PUBLIC KEY-----\nMIIBCg..."
33
33
 
34
34
  # Returns the SSH Public Key as a string
35
35
  k.ssh_public_key
@@ -39,6 +39,10 @@ Both of these will return an SSHKey object with the following methods:
39
39
  k.comment
40
40
  # => "foo@bar.com"
41
41
 
42
+ # Returns the fingerprint as a string
43
+ k.fingerprint
44
+ # => "2a:89:84:c9:29:05:d1:f8:49:79:1c:ba:73:99:eb:af"
45
+
42
46
  == Copyright
43
47
 
44
48
  Copyright (c) 2011 James Miller
@@ -1,3 +1,3 @@
1
1
  class SSHKey
2
- VERSION = "1.1.0"
2
+ VERSION = "1.1.1"
3
3
  end
data/lib/sshkey.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'openssl'
2
2
  require 'base64'
3
+ require 'digest/md5'
3
4
 
4
5
  class SSHKey
5
6
 
@@ -7,7 +8,7 @@ class SSHKey
7
8
  SSHKey.new(OpenSSL::PKey::RSA.generate(2048).to_pem, options)
8
9
  end
9
10
 
10
- attr_reader :key_object, :comment, :rsa_private_key, :rsa_public_key, :ssh_public_key
11
+ attr_reader :key_object, :comment, :rsa_private_key, :rsa_public_key, :ssh_public_key, :fingerprint
11
12
 
12
13
  def initialize(private_key, options = {})
13
14
  @key_object = OpenSSL::PKey::RSA.new(private_key)
@@ -15,6 +16,7 @@ class SSHKey
15
16
  @rsa_private_key = @key_object.to_pem
16
17
  @rsa_public_key = @key_object.public_key.to_pem
17
18
  @ssh_public_key = ["ssh-rsa", Base64.strict_encode64(ssh_public_key_conversion), @comment].join(" ").strip
19
+ @fingerprint = Digest::MD5.hexdigest(ssh_public_key_conversion).gsub(/(.{2})(?=.)/, '\1:\2')
18
20
  end
19
21
 
20
22
  private
data/test/sshkey_test.rb CHANGED
@@ -64,7 +64,8 @@ EOF
64
64
  SSH_PUBLIC_KEY1 = 'AAAAB3NzaC1yc2EAAAABIwAAAQEArfTA/lKVR84IMc9ZzXOCHr8DVtR8hzWuEVHF6KElavRHlk14g0SZu3m908Ejm/XF3EfNHjX9wN+62IMA0QBxkBMFCuLF+U/oeUs0NoDdAEKxjj4n6lq6Ss8aLct+anMy7D1jwvOLbcwV54w1d5JDdlZVdZ6AvHm9otwJq6rNpDgdmXY4HgC2nM9csFpuy0cDpL6fdJx9lcNL2RnkRC4+RMsIB+PxDw0j3vDi04dYLBXMGYjyeGH+mIFpL3PTPXGXwL2XDYXZ2H4SQX6bOoKmazTXq6QXuEB665njh1GxXldoIMcSshoJL0hrk3WrTOG22N2CQA+IfHgrXJ+A+QUzKQ=='
65
65
  SSH_PUBLIC_KEY2 = 'AAAAB3NzaC1yc2EAAAABIwAAAQEAxl6TpN7uFiY/JZ8qDnD7UrxDP+ABeh2PVg8Du1LEgXNk0+YWCeP5S6oHklqaWeDlbmAs1oHsBwCMAVpMa5tgONOLvz4JgwgkiqQEbKR8ofWJ+LADUElvqRVGmGiNEMLI6GJWeneL4sjmbb8d6U+M53c6iWG0si9XE5m7teBQSsCl0Tk3qMIkQGw5zpJeCXjZ8KpJhIJRYgexFkGgPlYRV+UYIhxpUW90t0Ra5i6JOFYwq98k5S/6SJIZQ/A9F4JNzwLw3eVxZj0yVHWxkGz1+TyELNY1kOyMxnZaqSfGzSQJTrnIXpdweVHuYh1LtOgedRQhCyiELeSMGwio1vRPKw=='
66
66
 
67
- FINGERPRINT = "2a:89:84:c9:29:05:d1:f8:49:79:1c:ba:73:99:eb:af"
67
+ KEY1_FINGERPRINT = "2a:89:84:c9:29:05:d1:f8:49:79:1c:ba:73:99:eb:af"
68
+ KEY2_FINGERPRINT = "3c:af:74:87:cc:cc:a1:12:05:1a:09:b7:7b:ce:ed:ce"
68
69
 
69
70
  def setup
70
71
  @key1 = SSHKey.new(SSH_PRIVATE_KEY1, :comment => "me@example.com")
@@ -115,6 +116,11 @@ EOF
115
116
  assert_equal 25041821909255634338594631709409930006900629565221199423527442992482865961613864019776541767273966885435978473182530882048894721263421597979360058644777295324028381353356143013803778109979347540540538361684778724178534886189535456555760676722894784592989232554962714835255398111716791175503010379276254975882143986862239829255392231575481418297073759441882528318940783011390002193682320028951031205422825662402426266933458263786546846123394508656926946338411182471843223455365249418245551220933173115037201835242811305615780499842939975996344432437312062643436832423359634116147870328774728910949553186982115987967787, @key2.key_object.n.to_i
116
117
  end
117
118
 
119
+ def test_fingerprint
120
+ assert_equal KEY1_FINGERPRINT, @key1.fingerprint
121
+ assert_equal KEY2_FINGERPRINT, @key2.fingerprint
122
+ end
123
+
118
124
  def test_to_byte_array
119
125
  ba1 = @key1.send(:to_byte_array, 35)
120
126
  ba2 = @key1.send(:to_byte_array, 65537)
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: sshkey
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.1.0
5
+ version: 1.1.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - James Miller