ssh-keys 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.sw?
2
+ .DS_Store
3
+ coverage
4
+ rdoc
5
+ pkg
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Alan Harper
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,20 @@
1
+ = ssh-keys
2
+
3
+ Process SSH Keys from Ruby
4
+
5
+ Pass the key string to Aussieggeek::SshKey#new, and it will return an object with its details, or raise Aussiegeek::SshKey::InvalidKey if its invalid.
6
+
7
+ == Note on Patches/Pull Requests
8
+
9
+ * Fork the project.
10
+ * Make your feature addition or bug fix.
11
+ * Add tests for it. This is important so I don't break it in a
12
+ future version unintentionally.
13
+ * Commit, do not mess with rakefile, version, or history.
14
+ (if you want to have your own version, that is fine but
15
+ bump version in a commit by itself I can ignore when I pull)
16
+ * Send me a pull request. Bonus points for topic branches.
17
+
18
+ == Copyright
19
+
20
+ Copyright (c) 2009 Alan Harper. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,49 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "ssh-keys"
8
+ gem.summary = %Q{Manage SSH Keys from Ruby}
9
+ gem.description = %Q{Read SSH Keys, check they are valid, read fingerprints}
10
+ gem.email = "alan@aussiegeek.net"
11
+ gem.homepage = "http://github.com/aussiegeek/ssh-keys"
12
+ gem.authors = ["Alan Harper"]
13
+ gem.add_development_dependency "rspec"
14
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
15
+ end
16
+ Jeweler::GemcutterTasks.new
17
+ rescue LoadError
18
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
19
+ end
20
+
21
+ require 'spec/rake/spectask'
22
+ Spec::Rake::SpecTask.new(:spec) do |spec|
23
+ spec.libs << 'lib' << 'spec'
24
+ spec.spec_files = FileList['spec/**/*_spec.rb', 'spec/fixtures/*']
25
+ end
26
+
27
+ Spec::Rake::SpecTask.new(:rcov) do |spec|
28
+ spec.libs << 'lib' << 'spec'
29
+ spec.pattern = 'spec/**/*_spec.rb'
30
+ spec.rcov = true
31
+ end
32
+
33
+ task :spec => :check_dependencies
34
+
35
+ task :default => :spec
36
+
37
+ require 'rake/rdoctask'
38
+ Rake::RDocTask.new do |rdoc|
39
+ if File.exist?('VERSION')
40
+ version = File.read('VERSION')
41
+ else
42
+ version = ""
43
+ end
44
+
45
+ rdoc.rdoc_dir = 'rdoc'
46
+ rdoc.title = "ssh-keys #{version}"
47
+ rdoc.rdoc_files.include('README*')
48
+ rdoc.rdoc_files.include('lib/**/*.rb')
49
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
data/lib/ssh-keys.rb ADDED
@@ -0,0 +1,31 @@
1
+ require 'tempfile'
2
+
3
+ module Aussiegeek
4
+ class SshKey
5
+ class InvalidKey < StandardError; end
6
+ attr_reader :key_type, :key_length, :fingerprint, :comment
7
+
8
+ def initialize(ssh_key)
9
+ if ssh_key.match /\n/
10
+ raise InvalidKey
11
+ end
12
+
13
+ if ssh_key.length < 64
14
+ raise InvalidKey
15
+ end
16
+
17
+ tmpfile = Tempfile.new('ruby_ssh-key' + Time.now.to_i.to_s)
18
+ tmpfile << ssh_key
19
+ tmpfile.close
20
+ output = `ssh-keygen -l -f #{tmpfile.path}`
21
+ status = $?.to_i
22
+ if status > 0
23
+ raise InvalidKey
24
+ end
25
+ @key_length, @fingerprint, @path, @key_type = output.split(' ')
26
+ @key_length = @key_length.to_i
27
+ @key_type = @key_type.match(/[a-zA-Z0-9]+/)[0].downcase
28
+ tmpfile.unlink
29
+ end
30
+ end
31
+ end
data/spec/fixtures/dsa ADDED
@@ -0,0 +1,12 @@
1
+ -----BEGIN DSA PRIVATE KEY-----
2
+ MIIBvAIBAAKBgQDWMR4XsgO1qoXpb3EDUlmdgE3CtIY334aWe8NmEUszT5Ys2627
3
+ liCoaCXurZMxyfEZLmzl9C0X1tSMseeZMKuSPbx5BwyUU6hFL6emc9gN9L3r1R4I
4
+ za8Br9xU39JhXnhqje0kM2w6D5l3MGSQy0mrIGEzBkeGynfy2jr8W3QDIQIVAPKf
5
+ QSekt5s4zEgMKbparnacKqQLAoGBAKEnjyuEVMNX9rm7Jg2fDAmHGfqY/26EDrUc
6
+ Vb4CFRLDKtiUe4x4a7ZSseQy2HCpUPlW8Jz81ToHNF1ay7Z1vNpX10OEMvU6daoA
7
+ CwSOs6n3t/KqB1+tnJ/GVe/+Zz00qYzPIje3G4mM9ChLzuVeAIKwm2bqAUOsdIla
8
+ 8o5eDn2XAoGAdnOkhHAcLw6iDuiorrU4pE83TC4cFIUS7+31vXIqMi87dXP2nAIR
9
+ jkPfTTn9+gwP6KG5N7Bf1N6byvGpRB7wnVcN1Bl//45vR00ekwfzyM5LzCph+mrv
10
+ q6XTL6L80quZUf1+QLsHFTN90CI1f8b0QjqOmulnnnw1t23yKw9rAa0CFQCcE4mY
11
+ DHg2riZ2rNrWIHdRnQ+ltw==
12
+ -----END DSA PRIVATE KEY-----
@@ -0,0 +1 @@
1
+ ssh-dss AAAAB3NzaC1kc3MAAACBANYxHheyA7WqhelvcQNSWZ2ATcK0hjffhpZ7w2YRSzNPlizbrbuWIKhoJe6tkzHJ8RkubOX0LRfW1Iyx55kwq5I9vHkHDJRTqEUvp6Zz2A30vevVHgjNrwGv3FTf0mFeeGqN7SQzbDoPmXcwZJDLSasgYTMGR4bKd/LaOvxbdAMhAAAAFQDyn0EnpLebOMxIDCm6Wq52nCqkCwAAAIEAoSePK4RUw1f2ubsmDZ8MCYcZ+pj/boQOtRxVvgIVEsMq2JR7jHhrtlKx5DLYcKlQ+VbwnPzVOgc0XVrLtnW82lfXQ4Qy9Tp1qgALBI6zqfe38qoHX62cn8ZV7/5nPTSpjM8iN7cbiYz0KEvO5V4AgrCbZuoBQ6x0iVryjl4OfZcAAACAdnOkhHAcLw6iDuiorrU4pE83TC4cFIUS7+31vXIqMi87dXP2nAIRjkPfTTn9+gwP6KG5N7Bf1N6byvGpRB7wnVcN1Bl//45vR00ekwfzyM5LzCph+mrvq6XTL6L80quZUf1+QLsHFTN90CI1f8b0QjqOmulnnnw1t23yKw9rAa0= alan@Nibbler.local
data/spec/fixtures/rsa ADDED
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEogIBAAKCAQEAu9l5Vlc0g8QefXEhOZ8F0ma3Ea0STP0gGkq8MPsjNhtksB58
3
+ YxyOfdQFF1jdSAb1F8OfzQOsnTxepN0LEBKhEbUPxD2FBcHUvKUcl0q75rSwdlbk
4
+ d+lx4FRARIf3siQwVatfHI6XWYSX3nM/hu2/LXq8oxRxYLdmHaq2khzBW9ZpF0i1
5
+ FcaC77rxSXbW6FjGyebtGnsKEn8uTFxXhlEQBFb+DKw31KzAOfPNXzMLuXA5kyMG
6
+ qIGq5vdp82js71enyvsHIYzuYddS84tRVXDgKR8nOXtCpzB9SmV+bjKj3H67cl3D
7
+ 5lEjWLpw+IpwCjqSCC26yBHJgXBXUPBnbnt+EQIBIwKCAQAwTd1fWEC0Kx3IfC0d
8
+ cgjPtAMwblUpvW6nrNFObHbExTcl+TXtmaD7yM4b8keHjMKuVt/y47ALLMfhQCdq
9
+ iHKPhlSC6z92gkyliYsCVQu++0NRoVCxHsWC09YC/mRDwCmvoRh1Drk0Rqq1i1l6
10
+ d6YwRCHgyr4Rjj7UbbnrDrVgwalWo4VSHRnGzOH4TUgChqwWJHApqh2GU2vAOZtA
11
+ Z8srkjW1JSNDlSbd93yifO7YlSV9BEYSymNeJuuJ3lD8vakNKhULhsi66OAWTojR
12
+ EFZiHHvrn3GvoRitF25vPNxcyMP8f79dlswiTmNcePqtOxjJfvGsTovXF7dsTUkx
13
+ VHC3AoGBAPjmkeMYwG2qKmhDCfpvP6uYos2M4CrgAI7+iYSAEeR+r83xLUKVZ2mS
14
+ 4AyzjMTpPrzGY31V8mXsBeONeq86W45APOwBbCtDCKHz0hhpaCpR2ByC2WzDrMi3
15
+ 7wHe1zopTfx40fL1UvzOba//dhlTvuVh70Ns9QaJJak3txGX5e0XAoGBAME1HnYv
16
+ eHgkAf3PB28Z8O++tmtdWqVEj4p+uekLx/j4p3uwYE+qOjFH34alh4mF7Xk7584l
17
+ 7ftwWitNxpD6jE87GnPzTX2dRRCo+ZaikEl2LZqUGVSqShu4cLKl4IKDQG948FqF
18
+ CQyvjbBYkzKGldp6NFm9B7+XYDoet3IWvvcXAoGAHHIfTSdmcu7gRm4PxNmDnpUZ
19
+ 65sSTgr4v+KTX5mbpRXK8vb927lNpapiv599zVx8MtTYK5TLPtklPpPTgb2Gzm29
20
+ 0dRG4F9us2xShnJyTfq5nNvBE76XZ2V6Zp0f6WPOZf8t7+GF07/SBXxIAuT/37Nr
21
+ zTEGD2Ahj66YlEvfw1MCgYEAhHwyJSfdlDXyvKs4TC8LnRUPX5B4q9c920+VbJpd
22
+ PQJG9brFsvhiau90tBm8Boe4yCkT+xKx0PyVmglyN4c7pAtFVtK4yyoDeSNpUVmH
23
+ gtSxjpFwdJIG7m/YP/y3NOxJcQJ47Z0NhQqqTQmJgbtfcT3awTEp4nZt3rX6Ili9
24
+ djsCgYEA5Z7TmSkeAKGn6fYQj0CXRvVYdE5JFNy5M7uOoajagMfNollI6I/jEXy0
25
+ wwV+BdWCu7mBv5K3c2HAUX/QPzC9/RF7RpQMlTx0gKGCYacPSpRkAUQ+wktaMULc
26
+ 5YjE8VFRA3INzn4nnPzF34rJugV+Lh5ETMvUo79XUUZp4yaBJbA=
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1 @@
1
+ ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAu9l5Vlc0g8QefXEhOZ8F0ma3Ea0STP0gGkq8MPsjNhtksB58YxyOfdQFF1jdSAb1F8OfzQOsnTxepN0LEBKhEbUPxD2FBcHUvKUcl0q75rSwdlbkd+lx4FRARIf3siQwVatfHI6XWYSX3nM/hu2/LXq8oxRxYLdmHaq2khzBW9ZpF0i1FcaC77rxSXbW6FjGyebtGnsKEn8uTFxXhlEQBFb+DKw31KzAOfPNXzMLuXA5kyMGqIGq5vdp82js71enyvsHIYzuYddS84tRVXDgKR8nOXtCpzB9SmV+bjKj3H67cl3D5lEjWLpw+IpwCjqSCC26yBHJgXBXUPBnbnt+EQ== alan@Nibbler.local
Binary file
@@ -0,0 +1 @@
1
+ 2048 35 28949829256666495327055203808783564703290559194908718746265980847605543577063188549312458206643537409762851897701354095163160190205466598052061208489685449682279573413558344269285882370698563577428032229724455885452739156766425911993017437918774525170718984198334443333014655220064685623480808624143666105447032634001976981200163463137398812221145813893410549390569709006669712458058567512601416859202411346657224522766330533328884824873381922224709799360523719086235718822197002436590478198672485152026564300632186154063468070725722437239114558123196813477774459564825237317125941572363142944588989514980408611614099 alan@Nibbler.local
@@ -0,0 +1,9 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ require 'ssh-keys'
4
+ require 'spec'
5
+ require 'spec/autorun'
6
+
7
+ Spec::Runner.configure do |config|
8
+
9
+ end
@@ -0,0 +1,78 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "SshKeys" do
4
+ context "check key validity" do
5
+ it "should fail when its just not a key" do
6
+ lambda {Aussiegeek::SshKey.new('not a key')}.should raise_error(Aussiegeek::SshKey::InvalidKey)
7
+ end
8
+ end
9
+
10
+ it "shouldn't allow a key with a newline in it" do
11
+ key="ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAu9l5Vlc0g8QefXEhOZ8F0ma3
12
+ Ea0STP0gGkq8MPsjNhtksB58YxyOfdQFF1jdSAb1F8OfzQOsnTxepN0LEBKhEbUPxD2FBcHUvKUcl0q75rSwdlbkd+lx4FRARIf3siQwVatfHI6XWYSX3nM/hu2/LXq8oxRxYLdmHaq2khzBW9ZpF0i1FcaC77rxSXbW6FjGyebtGnsKEn8uTFxXhlEQBFb+DKw31KzAOfPNXzMLuXA5kyMGqIGq5vdp82js71enyvsHIYzuYddS84tRVXDgKR8nOXtCpzB9SmV+bjKj3H67cl3D5lEjWLpw+IpwCjqSCC26yBHJgXBXUPBnbnt+EQ== alan@Nibbler.local"
13
+ lambda {Aussiegeek::SshKey.new(key)}.should raise_error(Aussiegeek::SshKey::InvalidKey)
14
+ end
15
+
16
+ it "shouldn't allow a key less than 64 characters" do
17
+ lambda {Aussiegeek::SshKey.new('short')}.should raise_error(Aussiegeek::SshKey::InvalidKey)
18
+ end
19
+
20
+ it "shoudn't allow a key that has extra fluff" do
21
+ lambda {Aussiegeek::SshKey.new('extrafluffssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAu9l5Vlc0g8QefXEhOZ8F0ma3Ea0STP0gGkq8MPsjNhtksB58YxyOfdQFF1jdSAb1F8OfzQOsnTxepN0LEBKhEbUPxD2FBcHUvKUcl0q75rSwdlbkd+lx4FRARIf3siQwVatfHI6XWYSX3nM/hu2/LXq8oxRxYLdmHaq2khzBW9ZpF0i1FcaC77rxSXbW6FjGyebtGnsKEn8uTFxXhlEQBFb+DKw31KzAOfPNXzMLuXA5kyMGqIGq5vdp82js71enyvsHIYzuYddS84tRVXDgKR8nOXtCpzB9SmV+bjKj3H67cl3D5lEjWLpw+IpwCjqSCC26yBHJgXBXUPBnbnt+EQ== alan@Nibbler.local')}.should raise_error(Aussiegeek::SshKey::InvalidKey)
22
+
23
+ end
24
+
25
+ context "get key info (rsa)" do
26
+ before do
27
+ @ssh_key = Aussiegeek::SshKey.new('ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAu9l5Vlc0g8QefXEhOZ8F0ma3Ea0STP0gGkq8MPsjNhtksB58YxyOfdQFF1jdSAb1F8OfzQOsnTxepN0LEBKhEbUPxD2FBcHUvKUcl0q75rSwdlbkd+lx4FRARIf3siQwVatfHI6XWYSX3nM/hu2/LXq8oxRxYLdmHaq2khzBW9ZpF0i1FcaC77rxSXbW6FjGyebtGnsKEn8uTFxXhlEQBFb+DKw31KzAOfPNXzMLuXA5kyMGqIGq5vdp82js71enyvsHIYzuYddS84tRVXDgKR8nOXtCpzB9SmV+bjKj3H67cl3D5lEjWLpw+IpwCjqSCC26yBHJgXBXUPBnbnt+EQ== alan@Nibbler.local')
28
+ end
29
+
30
+ it "should return key type" do
31
+ @ssh_key.key_type.should == 'rsa'
32
+ end
33
+
34
+ it "should return key length" do
35
+ @ssh_key.key_length.should == 2048
36
+ end
37
+
38
+ it "should return key fingerprint" do
39
+ @ssh_key.fingerprint.should == '6a:2f:6c:4e:ba:3f:3f:2c:e5:5b:29:5a:e3:69:be:93'
40
+ end
41
+ end
42
+
43
+ context "get key info (rsa1)" do
44
+ before do
45
+ @ssh_key = Aussiegeek::SshKey.new('2048 35 28949829256666495327055203808783564703290559194908718746265980847605543577063188549312458206643537409762851897701354095163160190205466598052061208489685449682279573413558344269285882370698563577428032229724455885452739156766425911993017437918774525170718984198334443333014655220064685623480808624143666105447032634001976981200163463137398812221145813893410549390569709006669712458058567512601416859202411346657224522766330533328884824873381922224709799360523719086235718822197002436590478198672485152026564300632186154063468070725722437239114558123196813477774459564825237317125941572363142944588989514980408611614099 alan@Nibbler.local')
46
+ end
47
+
48
+ it "should return key type" do
49
+ @ssh_key.key_type.should == 'rsa1'
50
+ end
51
+
52
+ it "should return key length" do
53
+ @ssh_key.key_length.should == 2048
54
+ end
55
+
56
+ it "should return key fingerprint" do
57
+ @ssh_key.fingerprint.should == 'e1:3c:4b:90:08:3e:c3:e5:77:4f:77:c9:c2:0f:b1:90'
58
+ end
59
+ end
60
+
61
+ context "get key info (dsa)" do
62
+ before do
63
+ @ssh_key = Aussiegeek::SshKey.new('ssh-dss AAAAB3NzaC1kc3MAAACBANYxHheyA7WqhelvcQNSWZ2ATcK0hjffhpZ7w2YRSzNPlizbrbuWIKhoJe6tkzHJ8RkubOX0LRfW1Iyx55kwq5I9vHkHDJRTqEUvp6Zz2A30vevVHgjNrwGv3FTf0mFeeGqN7SQzbDoPmXcwZJDLSasgYTMGR4bKd/LaOvxbdAMhAAAAFQDyn0EnpLebOMxIDCm6Wq52nCqkCwAAAIEAoSePK4RUw1f2ubsmDZ8MCYcZ+pj/boQOtRxVvgIVEsMq2JR7jHhrtlKx5DLYcKlQ+VbwnPzVOgc0XVrLtnW82lfXQ4Qy9Tp1qgALBI6zqfe38qoHX62cn8ZV7/5nPTSpjM8iN7cbiYz0KEvO5V4AgrCbZuoBQ6x0iVryjl4OfZcAAACAdnOkhHAcLw6iDuiorrU4pE83TC4cFIUS7+31vXIqMi87dXP2nAIRjkPfTTn9+gwP6KG5N7Bf1N6byvGpRB7wnVcN1Bl//45vR00ekwfzyM5LzCph+mrvq6XTL6L80quZUf1+QLsHFTN90CI1f8b0QjqOmulnnnw1t23yKw9rAa0= alan@Nibbler.local')
64
+ end
65
+
66
+ it "should return key type" do
67
+ @ssh_key.key_type.should == 'dsa'
68
+ end
69
+
70
+ it "should return key length" do
71
+ @ssh_key.key_length.should == 1024
72
+ end
73
+
74
+ it "should return key fingerprint" do
75
+ @ssh_key.fingerprint.should == 'ab:7c:75:e6:85:f2:3b:4f:1f:c8:90:86:01:73:47:05'
76
+ end
77
+ end
78
+ end
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ssh-keys
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Alan Harper
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-10-18 00:00:00 +10:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rspec
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ description: Read SSH Keys, check they are valid, read fingerprints
26
+ email: alan@aussiegeek.net
27
+ executables: []
28
+
29
+ extensions: []
30
+
31
+ extra_rdoc_files:
32
+ - LICENSE
33
+ - README.rdoc
34
+ files:
35
+ - .document
36
+ - .gitignore
37
+ - LICENSE
38
+ - README.rdoc
39
+ - Rakefile
40
+ - VERSION
41
+ - lib/ssh-keys.rb
42
+ - spec/fixtures/dsa
43
+ - spec/fixtures/dsa.pub
44
+ - spec/fixtures/rsa
45
+ - spec/fixtures/rsa.pub
46
+ - spec/fixtures/rsa1
47
+ - spec/fixtures/rsa1.pub
48
+ - spec/spec_helper.rb
49
+ - spec/ssh-keys_spec.rb
50
+ has_rdoc: true
51
+ homepage: http://github.com/aussiegeek/ssh-keys
52
+ licenses: []
53
+
54
+ post_install_message:
55
+ rdoc_options:
56
+ - --charset=UTF-8
57
+ require_paths:
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: "0"
70
+ version:
71
+ requirements: []
72
+
73
+ rubyforge_project:
74
+ rubygems_version: 1.3.5
75
+ signing_key:
76
+ specification_version: 3
77
+ summary: Manage SSH Keys from Ruby
78
+ test_files:
79
+ - spec/spec_helper.rb
80
+ - spec/ssh-keys_spec.rb