Hello community,
here is the log from the commit of package rubygem-net-ssh for openSUSE:Factory
checked in at 2019-03-27 16:17:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-net-ssh (Old)
and /work/SRC/openSUSE:Factory/.rubygem-net-ssh.new.25356 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-net-ssh"
Wed Mar 27 16:17:52 2019 rev:29 rq:685129 version:5.2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-net-ssh/rubygem-net-ssh.changes
2019-03-04 09:20:27.640600059 +0100
+++
/work/SRC/openSUSE:Factory/.rubygem-net-ssh.new.25356/rubygem-net-ssh.changes
2019-03-27 16:17:57.971572742 +0100
@@ -1,0 +2,22 @@
+Thu Mar 14 11:00:06 UTC 2019 - Stephan Kulow <[email protected]>
+
+- updated to version 5.2.0
+ see installed CHANGES.txt
+
+ === 5.2.0.rc3
+
+ * Fix check_host_ip read from config
+ * Support ssh-ed25519 in kown hosts
+
+ === 5.2.0.rc2
+
+ * Read check_host_ip from ssh config files
+
+ === 5.2.0.rc1
+
+ * Interpret * and ? in know_hosts file [Romain Tartière, #660]
+ * New :check_host_ip so ip checking can be disabled in known hosts [Romain
Tartière, #656]
+
+ === 5.1.0
+
+-------------------------------------------------------------------
Old:
----
net-ssh-5.1.0.gem
New:
----
net-ssh-5.2.0.gem
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rubygem-net-ssh.spec ++++++
--- /var/tmp/diff_new_pack.8oEMpa/_old 2019-03-27 16:17:59.247572476 +0100
+++ /var/tmp/diff_new_pack.8oEMpa/_new 2019-03-27 16:17:59.251572475 +0100
@@ -24,7 +24,7 @@
#
Name: rubygem-net-ssh
-Version: 5.1.0
+Version: 5.2.0
Release: 0
%define mod_name net-ssh
%define mod_full_name %{mod_name}-%{version}
++++++ net-ssh-5.1.0.gem -> net-ssh-5.2.0.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/.rubocop.yml new/.rubocop.yml
--- old/.rubocop.yml 2018-12-28 11:35:33.000000000 +0100
+++ new/.rubocop.yml 2019-03-11 10:54:01.000000000 +0100
@@ -3,3 +3,6 @@
AllCops:
Exclude:
- 'tryout/**/*'
+
+Style/DoubleNegation:
+ Enabled: false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/CHANGES.txt new/CHANGES.txt
--- old/CHANGES.txt 2018-12-28 11:35:33.000000000 +0100
+++ new/CHANGES.txt 2019-03-11 10:54:01.000000000 +0100
@@ -1,8 +1,24 @@
+=== 5.2.0.rc3
+
+ * Fix check_host_ip read from config
+ * Support ssh-ed25519 in kown hosts
+
+=== 5.2.0.rc2
+
+ * Read check_host_ip from ssh config files
+
+=== 5.2.0.rc1
+
+ * Interpret * and ? in know_hosts file [Romain Tartière, #660]
+ * New :check_host_ip so ip checking can be disabled in known hosts [Romain
Tartière, #656]
+
+=== 5.1.0
+
=== 5.1.0.rc1
* Support new OpenSSH private key format for rsa - bcrypt for rsa (ed25519
already supported) [#646]
* Support IdentityAgent is ssh config [Frank Groeneveld, #645]
- * Improve Match processin in ssh config [Aleksandrs Ļedovskis, #642]
+ * Improve Match processing in ssh config [Aleksandrs Ļedovskis, #642]
* Ignore signature verification when verify_host_key is never [Piotr
Kliczewski, #641]
* Alg preference was changed to prefer stronger encryptions [Tray, #637]
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
Binary files old/checksums.yaml.gz.sig and new/checksums.yaml.gz.sig differ
Binary files old/data.tar.gz.sig and new/data.tar.gz.sig differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/net/ssh/authentication/ed25519.rb
new/lib/net/ssh/authentication/ed25519.rb
--- old/lib/net/ssh/authentication/ed25519.rb 2018-12-28 11:35:33.000000000
+0100
+++ new/lib/net/ssh/authentication/ed25519.rb 2019-03-11 10:54:01.000000000
+0100
@@ -29,6 +29,17 @@
MEND = "-----END OPENSSH PRIVATE KEY-----\n"
MAGIC = "openssh-key-v1"
+ class DecryptError < ArgumentError
+ def initialize(message, encrypted_key: false)
+ super(message)
+ @encrypted_key = encrypted_key
+ end
+
+ def encrypted_key?
+ return @encrypted_key
+ end
+ end
+
def self.read(datafull, password)
raise ArgumentError.new("Expected #{MBEGIN} at start of private
key") unless datafull.start_with?(MBEGIN)
raise ArgumentError.new("Expected #{MEND} at end of private key")
unless datafull.end_with?(MEND)
@@ -74,7 +85,7 @@
check1 = decoded.read_long
check2 = decoded.read_long
- raise ArgumentError, "Decrypt failed on private key" if (check1 !=
check2)
+ raise DecryptError.new("Decrypt failed on private key",
encrypted_key: kdfname == 'bcrypt') if (check1 != check2)
type_name = decoded.read_string
case type_name
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/net/ssh/config.rb new/lib/net/ssh/config.rb
--- old/lib/net/ssh/config.rb 2018-12-28 11:35:33.000000000 +0100
+++ new/lib/net/ssh/config.rb 2019-03-11 10:54:01.000000000 +0100
@@ -24,6 +24,7 @@
# * IdentityFile => maps to the :keys option
# * IdentityAgent => :identity_agent
# * IdentitiesOnly => :keys_only
+ # * CheckHostIP => :check_host_ip
# * Macs => maps to the :hmac option
# * PasswordAuthentication => maps to the :auth_methods option password
# * Port => :port
@@ -202,7 +203,8 @@
fingerprinthash: :fingerprint_hash,
port: :port,
user: :user,
- userknownhostsfile: :user_known_hosts_file
+ userknownhostsfile: :user_known_hosts_file,
+ checkhostip: :check_host_ip
}
case key
when :ciphers
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/net/ssh/key_factory.rb
new/lib/net/ssh/key_factory.rb
--- old/lib/net/ssh/key_factory.rb 2018-12-28 11:35:33.000000000 +0100
+++ new/lib/net/ssh/key_factory.rb 2019-03-11 10:54:01.000000000 +0100
@@ -50,16 +50,17 @@
# encrypted (requiring a passphrase to use), the user will be
# prompted to enter their password unless passphrase works.
def load_data_private_key(data, passphrase=nil, ask_passphrase=true,
filename="", prompt=Prompt.default)
- key_read, error_classes = classify_key(data, filename)
+ key_type = classify_key(data, filename)
- encrypted_key = data.match(/ENCRYPTED/)
+ encrypted_key = nil
tries = 0
prompter = nil
result =
begin
- key_read[data, passphrase || 'invalid']
- rescue *error_classes
+ key_type.read(data, passphrase || 'invalid')
+ rescue *key_type.error_classes => e
+ encrypted_key = !!key_type.encrypted_key?(data, e) if
encrypted_key.nil?
if encrypted_key && ask_passphrase
tries += 1
if tries <= 3
@@ -106,20 +107,108 @@
private
+ # rubocop:disable Style/Documentation, Lint/DuplicateMethods
+ class KeyType
+ def self.read(key_data, passphrase)
+ raise Exception, "TODO subclasses should implement read"
+ end
+
+ def self.error_classes
+ raise Exception, "TODO subclasses should implement read"
+ end
+
+ def self.encrypted_key?(data, error)
+ raise Exception, "TODO subclasses should implement
is_encrypted_key"
+ end
+ end
+
+ class OpenSSHPrivateKeyType < KeyType
+ def self.read(key_data, passphrase)
+
Net::SSH::Authentication::ED25519::OpenSSHPrivateKeyLoader.read(key_data,
passphrase)
+ end
+
+ def self.error_classes
+
[Net::SSH::Authentication::ED25519::OpenSSHPrivateKeyLoader::DecryptError]
+ end
+
+ def self.encrypted_key?(key_data, decode_error)
+
decode_error.is_a?(Net::SSH::Authentication::ED25519::OpenSSHPrivateKeyLoader::DecryptError)
&& decode_error.encrypted_key?
+ end
+ end
+
+ class OpenSSLKeyTypeBase < KeyType
+ def self.open_ssl_class
+ raise Exception, "TODO: subclasses should implement"
+ end
+
+ def self.read(key_data, passphrase)
+ open_ssl_class.new(key_data, passphrase)
+ end
+
+ def self.encrypted_key?(key_data, error)
+ key_data.match(/ENCRYPTED/)
+ end
+ end
+
+ class OpenSSLPKeyType < OpenSSLKeyTypeBase
+ def self.read(key_data, passphrase)
+ open_ssl_class.read(key_data, passphrase)
+ end
+
+ def self.open_ssl_class
+ OpenSSL::PKey
+ end
+
+ def self.error_classes
+ [ArgumentError, OpenSSL::PKey::PKeyError]
+ end
+ end
+
+ class OpenSSLDSAKeyType < OpenSSLKeyTypeBase
+ def self.open_ssl_class
+ OpenSSL::PKey::DSA
+ end
+
+ def self.error_classes
+ [OpenSSL::PKey::DSAError]
+ end
+ end
+
+ class OpenSSLRSAKeyType < OpenSSLKeyTypeBase
+ def self.open_ssl_class
+ OpenSSL::PKey::RSA
+ end
+
+ def self.error_classes
+ [OpenSSL::PKey::RSAError]
+ end
+ end
+
+ class OpenSSLECKeyType < OpenSSLKeyTypeBase
+ def self.open_ssl_class
+ OpenSSL::PKey::EC
+ end
+
+ def self.error_classes
+ [OpenSSL::PKey::ECError]
+ end
+ end
+ # rubocop:enable Style/Documentation, Lint/DuplicateMethods
+
# Determine whether the file describes an RSA or DSA key, and return
how load it
# appropriately.
def classify_key(data, filename)
if data.match(/-----BEGIN OPENSSH PRIVATE KEY-----/)
Net::SSH::Authentication::ED25519Loader.raiseUnlessLoaded("OpenSSH
keys only supported if ED25519 is available")
- return ->(key_data, passphrase) {
Net::SSH::Authentication::ED25519::OpenSSHPrivateKeyLoader.read(key_data,
passphrase) }, [ArgumentError]
+ return OpenSSHPrivateKeyType
elsif OpenSSL::PKey.respond_to?(:read)
- return ->(key_data, passphrase) { OpenSSL::PKey.read(key_data,
passphrase) }, [ArgumentError, OpenSSL::PKey::PKeyError]
+ return OpenSSLPKeyType
elsif data.match(/-----BEGIN DSA PRIVATE KEY-----/)
- return ->(key_data, passphrase) { OpenSSL::PKey::DSA.new(key_data,
passphrase) }, [OpenSSL::PKey::DSAError]
+ return OpenSSLDSAKeyType
elsif data.match(/-----BEGIN RSA PRIVATE KEY-----/)
- return ->(key_data, passphrase) { OpenSSL::PKey::RSA.new(key_data,
passphrase) }, [OpenSSL::PKey::RSAError]
+ return OpenSSLRSAKeyType
elsif data.match(/-----BEGIN EC PRIVATE KEY-----/) &&
defined?(OpenSSL::PKey::EC)
- return ->(key_data, passphrase) { OpenSSL::PKey::EC.new(key_data,
passphrase) }, [OpenSSL::PKey::ECError]
+ return OpenSSLECKeyType
elsif data.match(/-----BEGIN (.+) PRIVATE KEY-----/)
raise OpenSSL::PKey::PKeyError, "not a supported key type '#{$1}'"
else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/net/ssh/known_hosts.rb
new/lib/net/ssh/known_hosts.rb
--- old/lib/net/ssh/known_hosts.rb 2018-12-28 11:35:33.000000000 +0100
+++ new/lib/net/ssh/known_hosts.rb 2019-03-11 10:54:01.000000000 +0100
@@ -2,6 +2,7 @@
require 'openssl'
require 'base64'
require 'net/ssh/buffer'
+require 'net/ssh/authentication/ed25519_loader'
module Net
module SSH
@@ -48,18 +49,19 @@
else
SUPPORTED_TYPE = %w[ssh-rsa ssh-dss]
end
+ SUPPORTED_TYPE.push('ssh-ed25519') if
Net::SSH::Authentication::ED25519Loader::LOADED
class <<self
# Searches all known host files (see KnownHosts.hostfiles) for all keys
# of the given host. Returns an enumerable of keys found.
def search_for(host, options={})
- HostKeys.new(search_in(hostfiles(options), host), host, self,
options)
+ HostKeys.new(search_in(hostfiles(options), host, options), host,
self, options)
end
# Search for all known keys for the given host, in every file given in
# the +files+ array. Returns the list of keys.
- def search_in(files, host)
- files.flat_map { |file| KnownHosts.new(file).keys_for(host) }
+ def search_in(files, host, options = {})
+ files.flat_map { |file| KnownHosts.new(file).keys_for(host, options)
}
end
# Looks in the given +options+ hash for the :user_known_hosts_file and
@@ -119,11 +121,13 @@
# "[net.ssh.test]:5555"
# "[1,2,3,4]:5555"
# "[net.ssh.test]:5555,[1.2.3.4]:5555
- def keys_for(host)
+ def keys_for(host, options = {})
keys = []
return keys unless File.readable?(source)
entries = host.split(/,/)
+ host_name = entries[0]
+ host_ip = entries[1]
File.open(source) do |file|
scanner = StringScanner.new("")
@@ -134,8 +138,10 @@
next if scanner.match?(/$|#/)
hostlist = scanner.scan(/\S+/).split(/,/)
- found = entries.all? { |entry| hostlist.include?(entry) } ||
- known_host_hash?(hostlist, entries)
+ found = hostlist.any? { |pattern| match(host_name, pattern) } ||
known_host_hash?(hostlist, entries)
+ next unless found
+
+ found = hostlist.include?(host_ip) if options[:check_host_ip] &&
entries.size > 1 && hostlist.size > 1
next unless found
scanner.skip(/\s*/)
@@ -152,6 +158,17 @@
keys
end
+ def match(host, pattern)
+ # see man 8 sshd for pattern details
+ pattern_regexp = pattern.split('*').map do |x|
+ x.split('?').map do |y|
+ Regexp.escape(y)
+ end.join('.')
+ end.join('[^.]*')
+
+ host =~ Regexp.new("\\A#{pattern_regexp}\\z")
+ end
+
# Indicates whether one of the entries matches an hostname that has been
# stored as a HMAC-SHA1 hash in the known hosts.
def known_host_hash?(hostlist, entries)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/net/ssh/transport/session.rb
new/lib/net/ssh/transport/session.rb
--- old/lib/net/ssh/transport/session.rb 2018-12-28 11:35:33.000000000
+0100
+++ new/lib/net/ssh/transport/session.rb 2019-03-11 10:54:01.000000000
+0100
@@ -279,7 +279,7 @@
# method.
class CompatibleVerifier
def initialize(verifier)
- @verifier
+ @verifier = verifier
end
def verify(arguments)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/net/ssh/version.rb new/lib/net/ssh/version.rb
--- old/lib/net/ssh/version.rb 2018-12-28 11:35:33.000000000 +0100
+++ new/lib/net/ssh/version.rb 2019-03-11 10:54:01.000000000 +0100
@@ -49,7 +49,7 @@
MAJOR = 5
# The minor component of this version of the Net::SSH library
- MINOR = 1
+ MINOR = 2
# The tiny component of this version of the Net::SSH library
TINY = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/net/ssh.rb new/lib/net/ssh.rb
--- old/lib/net/ssh.rb 2018-12-28 11:35:33.000000000 +0100
+++ new/lib/net/ssh.rb 2019-03-11 10:54:01.000000000 +0100
@@ -73,7 +73,7 @@
max_win_size send_env use_agent number_of_password_prompts
append_all_supported_algorithms non_interactive password_prompt
agent_socket_factory minimum_dh_bits verify_host_key
- fingerprint_hash
+ fingerprint_hash check_host_ip
]
# The standard means of starting a new SSH connection. When used with a
@@ -108,6 +108,8 @@
# * :bind_address => the IP address on the connecting machine to use in
# establishing connection. (:bind_address is discarded if :proxy
# is set.)
+ # * :check_host_ip => Also ckeck IP address when connecting to remote host.
+ # Defaults to +true+.
# * :compression => the compression algorithm to use, or +true+ to use
# whatever is supported.
# * :compression_level => the compression level to use when sending data
@@ -221,6 +223,8 @@
options = configuration_for(host, options.fetch(:config,
true)).merge(options)
host = options.fetch(:host_name, host)
+ options[:check_host_ip] = true unless options.key?(:check_host_ip)
+
if options[:non_interactive]
options[:number_of_password_prompts] = 0
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata 2018-12-28 11:35:33.000000000 +0100
+++ new/metadata 2019-03-11 10:54:01.000000000 +0100
@@ -1,7 +1,7 @@
--- !ruby/object:Gem::Specification
name: net-ssh
version: !ruby/object:Gem::Version
- version: 5.1.0
+ version: 5.2.0
platform: ruby
authors:
- Jamis Buck
@@ -12,27 +12,26 @@
cert_chain:
- |
-----BEGIN CERTIFICATE-----
- MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQsFADBBMQ8wDQYDVQQDDAZuZXRz
- c2gxGTAXBgoJkiaJk/IsZAEZFglzb2x1dGlvdXMxEzARBgoJkiaJk/IsZAEZFgNj
- b20wHhcNMTgwMzExMDU0MzU1WhcNMTkwMzExMDU0MzU1WjBBMQ8wDQYDVQQDDAZu
- ZXRzc2gxGTAXBgoJkiaJk/IsZAEZFglzb2x1dGlvdXMxEzARBgoJkiaJk/IsZAEZ
- FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGJ4TbZ9H+qZ08
- pQfJhPJTHaDCyQvCsKTFrL5O9z3tllQ7B/zksMMM+qFBpNYu9HCcg4yBATacE/PB
- qVVyUrpr6lbH/XwoN5ljXm+bdCfmnjZvTCL2FTE6o+bcnaF0IsJyC0Q2B1fbWdXN
- 6Off1ZWoUk6We2BIM1bn6QJLxBpGyYhvOPXsYoqSuzDf2SJDDsWFZ8kV5ON13Ohm
- JbBzn0oD8HF8FuYOewwsC0C1q4w7E5GtvHcQ5juweS7+RKsyDcVcVrLuNzoGRttS
- KP4yMn+TzaXijyjRg7gECfJr3TGASaA4bQsILFGG5dAWcwO4OMrZedR7SHj/o0Kf
- 3gL7P0axAgMBAAGjezB5MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
- BBQF8qLA7Z4zg0SJGtUbv3eoQ8tjIzAfBgNVHREEGDAWgRRuZXRzc2hAc29sdXRp
- b3VzLmNvbTAfBgNVHRIEGDAWgRRuZXRzc2hAc29sdXRpb3VzLmNvbTANBgkqhkiG
- 9w0BAQsFAAOCAQEAnINf4yDsUx62QPKC2E+5Dj0hN2yUjcYzTGwxyz8x+nCiC0X3
- cyjftyEViuKvAKtZ0Uo4OG0x2SZ5O7I45OkUo1bAOFcuYRFYiD1JRlyvl8aB+2Vl
- pFyi/4ClnmjNxnplXL+mmScv/4VacBD1/LNBUVNluhLue2yIakAXFy0KthqLzIG8
- BYIiexqQMKfkw+auIcyXe1luZnCt6JFksW0BVoZGTj5Sj7sC2+cS4y9XYog1dSks
- ZFwoIuXKeDmTTpryd/vI7sdLXDuV6MbWOLGh6gXn9RDDXG1EqEXW0bjovATBMpdH
- 9OGohJvAFzcvhDTWPwT6w3PG5B80pqb9j1hEAg==
+ MIIDQDCCAiigAwIBAgIBATANBgkqhkiG9w0BAQsFADAlMSMwIQYDVQQDDBpuZXRz
+ c2gvREM9c29sdXRpb3VzL0RDPWNvbTAeFw0xOTAzMTEwOTQ1MzZaFw0yMDAzMTAw
+ OTQ1MzZaMCUxIzAhBgNVBAMMGm5ldHNzaC9EQz1zb2x1dGlvdXMvREM9Y29tMIIB
+ IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxieE22fR/qmdPKUHyYTyUx2g
+ wskLwrCkxay+Tvc97ZZUOwf85LDDDPqhQaTWLvRwnIOMgQE2nBPzwalVclK6a+pW
+ x/18KDeZY15vm3Qn5p42b0wi9hUxOqPm3J2hdCLCcgtENgdX21nVzejn39WVqFJO
+ lntgSDNW5+kCS8QaRsmIbzj17GKKkrsw39kiQw7FhWfJFeTjddzoZiWwc59KA/Bx
+ fBbmDnsMLAtAtauMOxORrbx3EOY7sHku/kSrMg3FXFay7jc6BkbbUij+MjJ/k82l
+ 4o8o0YO4BAnya90xgEmgOG0LCCxRhuXQFnMDuDjK2XnUe0h4/6NCn94C+z9GsQID
+ AQABo3sweTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUBfKiwO2e
+ M4NEiRrVG793qEPLYyMwHwYDVR0RBBgwFoEUbmV0c3NoQHNvbHV0aW91cy5jb20w
+ HwYDVR0SBBgwFoEUbmV0c3NoQHNvbHV0aW91cy5jb20wDQYJKoZIhvcNAQELBQAD
+ ggEBAILNXrrFaLruwlBoTx3F7iL5wiRUT+cOMfdon25gzX8Tf87hi6rITnRgFfak
+ w+C/rbrYOuEfUJMeZSU5ASxzrB4ohgJ5AFxuxGNkWEQJC4nICGn3ML8PmHzEV12z
+ +nMm9AtBM16dJTdTKA2B6du0ZtTtbm4M3ULB7rhkUO2L2RbDyyiGQw85IBdaVdzr
+ GmrxZPAOhBABOREsvJU1+3GIyJncqXmtrYUGUoLiIf/WO0mxPzYALZC/6ZYfu2UP
+ +MqVFjDxsJA7cDfACke51RypSH1gZoPjzoW6w0sMRAzZT8hU1eGyqtNuBiSZ1UKv
+ B/ztNLEP0OWhpj/NZ1fnGRvo/T0=
-----END CERTIFICATE-----
-date: 2018-12-28 00:00:00.000000000 Z
+date: 2019-03-11 00:00:00.000000000 Z
dependencies:
- !ruby/object:Gem::Dependency
name: bcrypt_pbkdf
Binary files old/metadata.gz.sig and new/metadata.gz.sig differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/net-ssh-public_cert.pem new/net-ssh-public_cert.pem
--- old/net-ssh-public_cert.pem 2018-12-28 11:35:33.000000000 +0100
+++ new/net-ssh-public_cert.pem 2019-03-11 10:54:01.000000000 +0100
@@ -1,21 +1,20 @@
-----BEGIN CERTIFICATE-----
-MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQsFADBBMQ8wDQYDVQQDDAZuZXRz
-c2gxGTAXBgoJkiaJk/IsZAEZFglzb2x1dGlvdXMxEzARBgoJkiaJk/IsZAEZFgNj
-b20wHhcNMTgwMzExMDU0MzU1WhcNMTkwMzExMDU0MzU1WjBBMQ8wDQYDVQQDDAZu
-ZXRzc2gxGTAXBgoJkiaJk/IsZAEZFglzb2x1dGlvdXMxEzARBgoJkiaJk/IsZAEZ
-FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGJ4TbZ9H+qZ08
-pQfJhPJTHaDCyQvCsKTFrL5O9z3tllQ7B/zksMMM+qFBpNYu9HCcg4yBATacE/PB
-qVVyUrpr6lbH/XwoN5ljXm+bdCfmnjZvTCL2FTE6o+bcnaF0IsJyC0Q2B1fbWdXN
-6Off1ZWoUk6We2BIM1bn6QJLxBpGyYhvOPXsYoqSuzDf2SJDDsWFZ8kV5ON13Ohm
-JbBzn0oD8HF8FuYOewwsC0C1q4w7E5GtvHcQ5juweS7+RKsyDcVcVrLuNzoGRttS
-KP4yMn+TzaXijyjRg7gECfJr3TGASaA4bQsILFGG5dAWcwO4OMrZedR7SHj/o0Kf
-3gL7P0axAgMBAAGjezB5MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
-BBQF8qLA7Z4zg0SJGtUbv3eoQ8tjIzAfBgNVHREEGDAWgRRuZXRzc2hAc29sdXRp
-b3VzLmNvbTAfBgNVHRIEGDAWgRRuZXRzc2hAc29sdXRpb3VzLmNvbTANBgkqhkiG
-9w0BAQsFAAOCAQEAnINf4yDsUx62QPKC2E+5Dj0hN2yUjcYzTGwxyz8x+nCiC0X3
-cyjftyEViuKvAKtZ0Uo4OG0x2SZ5O7I45OkUo1bAOFcuYRFYiD1JRlyvl8aB+2Vl
-pFyi/4ClnmjNxnplXL+mmScv/4VacBD1/LNBUVNluhLue2yIakAXFy0KthqLzIG8
-BYIiexqQMKfkw+auIcyXe1luZnCt6JFksW0BVoZGTj5Sj7sC2+cS4y9XYog1dSks
-ZFwoIuXKeDmTTpryd/vI7sdLXDuV6MbWOLGh6gXn9RDDXG1EqEXW0bjovATBMpdH
-9OGohJvAFzcvhDTWPwT6w3PG5B80pqb9j1hEAg==
+MIIDQDCCAiigAwIBAgIBATANBgkqhkiG9w0BAQsFADAlMSMwIQYDVQQDDBpuZXRz
+c2gvREM9c29sdXRpb3VzL0RDPWNvbTAeFw0xOTAzMTEwOTQ1MzZaFw0yMDAzMTAw
+OTQ1MzZaMCUxIzAhBgNVBAMMGm5ldHNzaC9EQz1zb2x1dGlvdXMvREM9Y29tMIIB
+IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxieE22fR/qmdPKUHyYTyUx2g
+wskLwrCkxay+Tvc97ZZUOwf85LDDDPqhQaTWLvRwnIOMgQE2nBPzwalVclK6a+pW
+x/18KDeZY15vm3Qn5p42b0wi9hUxOqPm3J2hdCLCcgtENgdX21nVzejn39WVqFJO
+lntgSDNW5+kCS8QaRsmIbzj17GKKkrsw39kiQw7FhWfJFeTjddzoZiWwc59KA/Bx
+fBbmDnsMLAtAtauMOxORrbx3EOY7sHku/kSrMg3FXFay7jc6BkbbUij+MjJ/k82l
+4o8o0YO4BAnya90xgEmgOG0LCCxRhuXQFnMDuDjK2XnUe0h4/6NCn94C+z9GsQID
+AQABo3sweTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUBfKiwO2e
+M4NEiRrVG793qEPLYyMwHwYDVR0RBBgwFoEUbmV0c3NoQHNvbHV0aW91cy5jb20w
+HwYDVR0SBBgwFoEUbmV0c3NoQHNvbHV0aW91cy5jb20wDQYJKoZIhvcNAQELBQAD
+ggEBAILNXrrFaLruwlBoTx3F7iL5wiRUT+cOMfdon25gzX8Tf87hi6rITnRgFfak
+w+C/rbrYOuEfUJMeZSU5ASxzrB4ohgJ5AFxuxGNkWEQJC4nICGn3ML8PmHzEV12z
++nMm9AtBM16dJTdTKA2B6du0ZtTtbm4M3ULB7rhkUO2L2RbDyyiGQw85IBdaVdzr
+GmrxZPAOhBABOREsvJU1+3GIyJncqXmtrYUGUoLiIf/WO0mxPzYALZC/6ZYfu2UP
++MqVFjDxsJA7cDfACke51RypSH1gZoPjzoW6w0sMRAzZT8hU1eGyqtNuBiSZ1UKv
+B/ztNLEP0OWhpj/NZ1fnGRvo/T0=
-----END CERTIFICATE-----