travis 1.6.18.travis.611.5 → 1.6.18.travis.612.5
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.
- checksums.yaml +8 -8
- data/README.md +3 -0
- data/lib/travis/cli/sshkey.rb +17 -3
- data/lib/travis/tools/ssl_key.rb +13 -0
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
!binary "U0hBMQ==":
|
|
3
3
|
metadata.gz: !binary |-
|
|
4
|
-
|
|
4
|
+
ZjMzYTAyOTk0M2Y5M2MxNjg1Mzc1MTJjNTgwNzNjMDc5ODk1NDYyMQ==
|
|
5
5
|
data.tar.gz: !binary |-
|
|
6
|
-
|
|
6
|
+
Njk0YjYwMzBkNzRmNGMwOTEwZDEyOTk0NTA4NzE4NWE2NWJiNWE2MQ==
|
|
7
7
|
SHA512:
|
|
8
8
|
metadata.gz: !binary |-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
MWE1Y2EzMmQ1OGIzYmQzNmNlYTA5YTRhOTVhYzI0MGM2MGQ0Y2U2YzA2Zjk5
|
|
10
|
+
ZDAwZjM4NjYxODM3ZTc1NzAxMmRjNWQ3N2M4NzQ4ODY3NDJiNjZhOTI4YjYy
|
|
11
|
+
N2FmZDYyY2QyNjAzZTJmYTY2Y2U5OGRjOTk5MTQ5M2EyNWUwOTY=
|
|
12
12
|
data.tar.gz: !binary |-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
ZjAyY2RhZGFhMzg2ZTBiZjcxMzE3ZWYzMmRhYmE1MWRiYWMwOWYwNmUzYzcz
|
|
14
|
+
N2ExZTNlMjhlNjZmYTU4M2M0OGNmZGY0ZjM5YmIzOGFkNGNkYjcwZmYyZTc4
|
|
15
|
+
MjBkMjY4MzMzNzg3NTVmNzE5YjM4MmQyNjA2YTRlZDYzMTAwOTg=
|
data/README.md
CHANGED
|
@@ -1328,6 +1328,7 @@ Config: rvm: 1.9.3
|
|
|
1328
1328
|
-s, --stdin upload key read from stdin
|
|
1329
1329
|
-c, --check set exit code depending on key existing
|
|
1330
1330
|
-g, --generate generate SSH key and set up for given GitHub user
|
|
1331
|
+
-p, --passphrase PASSPHRASE pass phrase to decrypt with when using --upload
|
|
1331
1332
|
|
|
1332
1333
|
*This feature is for [Pro and Enterprise](#pro-and-enterprise) only.*
|
|
1333
1334
|
|
|
@@ -2063,6 +2064,8 @@ If you have the old `travis-cli` gem installed, you should `gem uninstall travis
|
|
|
2063
2064
|
* Add `--fingerprint` to `pubkey` command.
|
|
2064
2065
|
* Add `fingerprint` to `Repository#public_key`.
|
|
2065
2066
|
* Display better error messages for user errors (user data validation failing, etc).
|
|
2067
|
+
* Have `travis sshkey --upload` check that the content is a private key.
|
|
2068
|
+
* Make `travis sshkey --upload` prompt for and remove the pass phrase if the key is encrypted.
|
|
2066
2069
|
|
|
2067
2070
|
**1.6.17** (July 25, 2014)
|
|
2068
2071
|
|
data/lib/travis/cli/sshkey.rb
CHANGED
|
@@ -12,6 +12,7 @@ module Travis
|
|
|
12
12
|
on '-s', '--stdin', 'upload key read from stdin'
|
|
13
13
|
on '-c', '--check', 'set exit code depending on key existing'
|
|
14
14
|
on '-g', '--generate', 'generate SSH key and set up for given GitHub user'
|
|
15
|
+
on '-p', '--passphrase PASSPHRASE', 'pass phrase to decrypt with when using --upload'
|
|
15
16
|
|
|
16
17
|
def_delegators :repository, :ssh_key
|
|
17
18
|
|
|
@@ -33,14 +34,17 @@ module Travis
|
|
|
33
34
|
end
|
|
34
35
|
|
|
35
36
|
def update_key(value, file)
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
error "#{file} does not look like a private key" unless value.lines.first =~ /PRIVATE KEY/
|
|
38
|
+
value = remove_passphrase(value)
|
|
39
|
+
self.description ||= ask("Key description: ") { |q| q.default = "Custom Key" } if interactive?
|
|
40
|
+
say "Updating ssh key for #{color slug, :info} with key from #{color file, :info}"
|
|
41
|
+
empty_line
|
|
38
42
|
ssh_key.update(:value => value, :description => description || file)
|
|
39
43
|
end
|
|
40
44
|
|
|
41
45
|
def delete_key
|
|
42
46
|
return if interactive? and not danger_zone? "Remove SSH key for #{color slug, :info}?"
|
|
43
|
-
say "
|
|
47
|
+
say "Removing ssh key for #{color slug, :info}"
|
|
44
48
|
ssh_key.delete
|
|
45
49
|
rescue Travis::Client::NotFound
|
|
46
50
|
warn "no key found to remove"
|
|
@@ -70,6 +74,16 @@ module Travis
|
|
|
70
74
|
end
|
|
71
75
|
end
|
|
72
76
|
|
|
77
|
+
def remove_passphrase(value)
|
|
78
|
+
return unless Tools::SSLKey.has_passphrase? value
|
|
79
|
+
return Tools::SSLKey.remove_passphrase(value, passphrase) || error("wrong pass phrase") if passphrase
|
|
80
|
+
error "Key is encrypted, but missing --passphrase option" unless interactive?
|
|
81
|
+
say "The private key is protected by a pass phrase."
|
|
82
|
+
result = Tools::SSLKey.remove_passphrase(value, ask("Enter pass phrase: ") { |q| q.echo = "*" }) until result
|
|
83
|
+
empty_line
|
|
84
|
+
result
|
|
85
|
+
end
|
|
86
|
+
|
|
73
87
|
def check_access(gh)
|
|
74
88
|
gh["repos/#{slug}"]
|
|
75
89
|
rescue GH::Error
|
data/lib/travis/tools/ssl_key.rb
CHANGED
|
@@ -17,6 +17,19 @@ module Travis
|
|
|
17
17
|
@to_rsa = OpenSSL::PKey::RSA.new(public_key)
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
+
def has_passphrase?(key)
|
|
21
|
+
OpenSSL::PKey::RSA.new(key, key)
|
|
22
|
+
false
|
|
23
|
+
rescue OpenSSL::PKey::RSAError
|
|
24
|
+
true
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def remove_passphrase(key, passphrase)
|
|
28
|
+
OpenSSL::PKey::RSA.new(key, passphrase).to_s
|
|
29
|
+
rescue OpenSSL::PKey::RSAError
|
|
30
|
+
false
|
|
31
|
+
end
|
|
32
|
+
|
|
20
33
|
def rsa_ssh(key)
|
|
21
34
|
['ssh-rsa ', "\0\0\0\assh-rsa#{sized_bytes(key.e)}#{sized_bytes(key.n)}"].pack('a*m').gsub("\n", '')
|
|
22
35
|
end
|