rubygems-update 3.0.0 → 3.0.4
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 +4 -4
- data/.rubocop.yml +1 -0
- data/CODE_OF_CONDUCT.md +10 -8
- data/CONTRIBUTING.md +7 -0
- data/History.txt +95 -0
- data/README.md +6 -0
- data/Rakefile +27 -3
- data/bundler/CHANGELOG.md +11 -0
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/rubygems_gem_installer.rb +7 -0
- data/bundler/lib/bundler/source/metadata.rb +2 -3
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/man/bundle.ronn +3 -0
- data/lib/rubygems/command_manager.rb +12 -4
- data/lib/rubygems/commands/build_command.rb +28 -13
- data/lib/rubygems/commands/owner_command.rb +6 -1
- data/lib/rubygems/commands/setup_command.rb +5 -5
- data/lib/rubygems/dependency_list.rb +1 -1
- data/lib/rubygems/gemcutter_utilities.rb +5 -2
- data/lib/rubygems/install_update_options.rb +1 -1
- data/lib/rubygems/installer.rb +29 -10
- data/lib/rubygems/package/old.rb +1 -1
- data/lib/rubygems/package.rb +12 -2
- data/lib/rubygems/rdoc.rb +2 -2
- data/lib/rubygems/request_set/gem_dependency_api.rb +8 -5
- data/lib/rubygems/requirement.rb +16 -5
- data/lib/rubygems/specification.rb +8 -9
- data/lib/rubygems/test_case.rb +15 -8
- data/lib/rubygems/uninstaller.rb +1 -1
- data/lib/rubygems/user_interaction.rb +4 -1
- data/lib/rubygems/util.rb +1 -1
- data/lib/rubygems.rb +3 -2
- data/rubygems-update.gemspec +1 -1
- data/test/rubygems/ca_cert.pem +74 -65
- data/test/rubygems/client.pem +103 -45
- data/test/rubygems/ssl_cert.pem +78 -17
- data/test/rubygems/ssl_key.pem +25 -13
- data/test/rubygems/test_bundled_ca.rb +1 -1
- data/test/rubygems/test_gem.rb +15 -10
- data/test/rubygems/test_gem_bundler_version_finder.rb +4 -0
- data/test/rubygems/test_gem_command_manager.rb +10 -0
- data/test/rubygems/test_gem_commands_build_command.rb +1 -0
- data/test/rubygems/test_gem_ext_cmake_builder.rb +1 -1
- data/test/rubygems/test_gem_indexer.rb +7 -0
- data/test/rubygems/test_gem_installer.rb +113 -3
- data/test/rubygems/test_gem_package.rb +37 -0
- data/test/rubygems/test_gem_package_tar_writer.rb +3 -0
- data/test/rubygems/test_gem_rdoc.rb +1 -135
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +60 -27
- data/test/rubygems/test_gem_requirement.rb +6 -0
- data/test/rubygems/test_gem_security_policy.rb +1 -1
- data/test/rubygems/test_gem_specification.rb +3 -0
- data/test/rubygems/test_gem_stream_ui.rb +2 -2
- data/test/rubygems/test_gem_text.rb +5 -0
- data/test/rubygems/test_gem_uninstaller.rb +21 -2
- data/test/rubygems/test_gem_util.rb +17 -0
- data/util/ci +6 -1
- data/util/create_encrypted_key.rb +4 -4
- metadata +3 -4
data/lib/rubygems/package.rb
CHANGED
|
@@ -357,7 +357,7 @@ EOM
|
|
|
357
357
|
def extract_files(destination_dir, pattern = "*")
|
|
358
358
|
verify unless @spec
|
|
359
359
|
|
|
360
|
-
FileUtils.mkdir_p destination_dir, :mode => dir_mode &&
|
|
360
|
+
FileUtils.mkdir_p destination_dir, :mode => dir_mode && 0755
|
|
361
361
|
|
|
362
362
|
@gem.with_read_io do |io|
|
|
363
363
|
reader = Gem::Package::TarReader.new io
|
|
@@ -394,7 +394,7 @@ EOM
|
|
|
394
394
|
FileUtils.rm_rf destination
|
|
395
395
|
|
|
396
396
|
mkdir_options = {}
|
|
397
|
-
mkdir_options[:mode] = dir_mode ?
|
|
397
|
+
mkdir_options[:mode] = dir_mode ? 0755 : (entry.header.mode if entry.directory?)
|
|
398
398
|
mkdir =
|
|
399
399
|
if entry.directory?
|
|
400
400
|
destination
|
|
@@ -456,6 +456,16 @@ EOM
|
|
|
456
456
|
raise Gem::Package::PathError.new(destination, destination_dir) unless
|
|
457
457
|
destination.start_with? destination_dir + '/'
|
|
458
458
|
|
|
459
|
+
begin
|
|
460
|
+
real_destination = File.expand_path(File.realpath(destination))
|
|
461
|
+
rescue
|
|
462
|
+
# it's fine if the destination doesn't exist, because rm -rf'ing it can't cause any damage
|
|
463
|
+
nil
|
|
464
|
+
else
|
|
465
|
+
raise Gem::Package::PathError.new(real_destination, destination_dir) unless
|
|
466
|
+
real_destination.start_with? destination_dir + '/'
|
|
467
|
+
end
|
|
468
|
+
|
|
459
469
|
destination.untaint
|
|
460
470
|
destination
|
|
461
471
|
end
|
data/lib/rubygems/rdoc.rb
CHANGED
|
@@ -43,11 +43,12 @@ class Gem::RequestSet::GemDependencyAPI
|
|
|
43
43
|
:mri_20 => %w[ruby],
|
|
44
44
|
:mri_21 => %w[ruby],
|
|
45
45
|
:rbx => %w[rbx],
|
|
46
|
-
:
|
|
47
|
-
:
|
|
48
|
-
:
|
|
49
|
-
:
|
|
50
|
-
:
|
|
46
|
+
:truffleruby => %w[truffleruby],
|
|
47
|
+
:ruby => %w[ruby rbx maglev truffleruby],
|
|
48
|
+
:ruby_18 => %w[ruby rbx maglev truffleruby],
|
|
49
|
+
:ruby_19 => %w[ruby rbx maglev truffleruby],
|
|
50
|
+
:ruby_20 => %w[ruby rbx maglev truffleruby],
|
|
51
|
+
:ruby_21 => %w[ruby rbx maglev truffleruby],
|
|
51
52
|
}.freeze
|
|
52
53
|
|
|
53
54
|
mswin = Gem::Platform.new 'x86-mswin32'
|
|
@@ -85,6 +86,7 @@ class Gem::RequestSet::GemDependencyAPI
|
|
|
85
86
|
:ruby_19 => Gem::Platform::RUBY,
|
|
86
87
|
:ruby_20 => Gem::Platform::RUBY,
|
|
87
88
|
:ruby_21 => Gem::Platform::RUBY,
|
|
89
|
+
:truffleruby => Gem::Platform::RUBY,
|
|
88
90
|
:x64_mingw => x64_mingw,
|
|
89
91
|
:x64_mingw_20 => x64_mingw,
|
|
90
92
|
:x64_mingw_21 => x64_mingw
|
|
@@ -126,6 +128,7 @@ class Gem::RequestSet::GemDependencyAPI
|
|
|
126
128
|
:ruby_19 => tilde_gt_1_9_0,
|
|
127
129
|
:ruby_20 => tilde_gt_2_0_0,
|
|
128
130
|
:ruby_21 => tilde_gt_2_1_0,
|
|
131
|
+
:truffleruby => gt_eq_0,
|
|
129
132
|
:x64_mingw => gt_eq_0,
|
|
130
133
|
:x64_mingw_20 => tilde_gt_2_0_0,
|
|
131
134
|
:x64_mingw_21 => tilde_gt_2_1_0,
|
data/lib/rubygems/requirement.rb
CHANGED
|
@@ -2,10 +2,6 @@
|
|
|
2
2
|
require "rubygems/version"
|
|
3
3
|
require "rubygems/deprecate"
|
|
4
4
|
|
|
5
|
-
# If we're being loaded after yaml was already required, then
|
|
6
|
-
# load our yaml + workarounds now.
|
|
7
|
-
Gem.load_yaml if defined? ::YAML
|
|
8
|
-
|
|
9
5
|
##
|
|
10
6
|
# A Requirement is a set of one or more version restrictions. It supports a
|
|
11
7
|
# few (<tt>=, !=, >, <, >=, <=, ~></tt>) different restriction operators.
|
|
@@ -267,7 +263,22 @@ class Gem::Requirement
|
|
|
267
263
|
|
|
268
264
|
def ==(other) # :nodoc:
|
|
269
265
|
return unless Gem::Requirement === other
|
|
270
|
-
|
|
266
|
+
|
|
267
|
+
# An == check is always necessary
|
|
268
|
+
return false unless requirements == other.requirements
|
|
269
|
+
|
|
270
|
+
# An == check is sufficient unless any requirements use ~>
|
|
271
|
+
return true unless _tilde_requirements.any?
|
|
272
|
+
|
|
273
|
+
# If any requirements use ~> we use the stricter `#eql?` that also checks
|
|
274
|
+
# that version precision is the same
|
|
275
|
+
_tilde_requirements.eql?(other._tilde_requirements)
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
protected
|
|
279
|
+
|
|
280
|
+
def _tilde_requirements
|
|
281
|
+
requirements.select { |r| r.first == "~>" }
|
|
271
282
|
end
|
|
272
283
|
|
|
273
284
|
private
|
|
@@ -18,7 +18,7 @@ require 'rubygems/util/list'
|
|
|
18
18
|
require 'stringio'
|
|
19
19
|
|
|
20
20
|
##
|
|
21
|
-
# The Specification class contains the information for a
|
|
21
|
+
# The Specification class contains the information for a gem. Typically
|
|
22
22
|
# defined in a .gemspec file or a Rakefile, and looks like this:
|
|
23
23
|
#
|
|
24
24
|
# Gem::Specification.new do |s|
|
|
@@ -364,8 +364,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
364
364
|
|
|
365
365
|
##
|
|
366
366
|
# The metadata holds extra data for this gem that may be useful to other
|
|
367
|
-
# consumers and is settable by gem authors
|
|
368
|
-
# the rubygems software.
|
|
367
|
+
# consumers and is settable by gem authors.
|
|
369
368
|
#
|
|
370
369
|
# Metadata items have the following restrictions:
|
|
371
370
|
#
|
|
@@ -656,8 +655,8 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
656
655
|
# # This gem will work with 1.8.6 or greater...
|
|
657
656
|
# spec.required_ruby_version = '>= 1.8.6'
|
|
658
657
|
#
|
|
659
|
-
# # Only with
|
|
660
|
-
# spec.required_ruby_version = '~> 2.
|
|
658
|
+
# # Only with final releases of major version 2 where minor version is at least 3
|
|
659
|
+
# spec.required_ruby_version = '~> 2.3'
|
|
661
660
|
#
|
|
662
661
|
# # Only prereleases or final releases after 2.6.0.preview2
|
|
663
662
|
# spec.required_ruby_version = '> 2.6.0.preview2'
|
|
@@ -745,9 +744,6 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
745
744
|
def self._all # :nodoc:
|
|
746
745
|
unless defined?(@@all) && @@all
|
|
747
746
|
@@all = stubs.map(&:to_spec)
|
|
748
|
-
if @@all.any?(&:nil?) # TODO: remove once we're happy
|
|
749
|
-
raise "pid: #{$$} nil spec! included in #{stubs.inspect}"
|
|
750
|
-
end
|
|
751
747
|
|
|
752
748
|
# After a reset, make sure already loaded specs
|
|
753
749
|
# are still marked as activated.
|
|
@@ -940,7 +936,6 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
940
936
|
# -- wilsonb
|
|
941
937
|
|
|
942
938
|
def self.all=(specs)
|
|
943
|
-
raise "nil spec!" if specs.any?(&:nil?) # TODO: remove once we're happy
|
|
944
939
|
@@stubs_by_name = specs.group_by(&:name)
|
|
945
940
|
@@all = @@stubs = specs
|
|
946
941
|
end
|
|
@@ -1311,6 +1306,8 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1311
1306
|
# Load custom marshal format, re-initializing defaults as needed
|
|
1312
1307
|
|
|
1313
1308
|
def self._load(str)
|
|
1309
|
+
Gem.load_yaml
|
|
1310
|
+
|
|
1314
1311
|
array = Marshal.load str
|
|
1315
1312
|
|
|
1316
1313
|
spec = Gem::Specification.new
|
|
@@ -2590,6 +2587,8 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
2590
2587
|
end
|
|
2591
2588
|
|
|
2592
2589
|
def to_yaml(opts = {}) # :nodoc:
|
|
2590
|
+
Gem.load_yaml
|
|
2591
|
+
|
|
2593
2592
|
# Because the user can switch the YAML engine behind our
|
|
2594
2593
|
# back, we have to check again here to make sure that our
|
|
2595
2594
|
# psych code was properly loaded, and load it if not.
|
data/lib/rubygems/test_case.rb
CHANGED
|
@@ -115,6 +115,8 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
|
115
115
|
|
|
116
116
|
attr_accessor :uri # :nodoc:
|
|
117
117
|
|
|
118
|
+
TEST_PATH = ENV.fetch('RUBYGEMS_TEST_PATH', File.expand_path('../../../test/rubygems', __FILE__))
|
|
119
|
+
|
|
118
120
|
def assert_activate(expected, *specs)
|
|
119
121
|
specs.each do |spec|
|
|
120
122
|
case spec
|
|
@@ -254,6 +256,7 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
|
254
256
|
@orig_gem_env_requirements = ENV.to_hash
|
|
255
257
|
|
|
256
258
|
ENV['GEM_VENDOR'] = nil
|
|
259
|
+
ENV['SOURCE_DATE_EPOCH'] = nil
|
|
257
260
|
|
|
258
261
|
@current_dir = Dir.pwd
|
|
259
262
|
@fetcher = nil
|
|
@@ -750,6 +753,11 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
|
|
|
750
753
|
Gem::Specification.reset
|
|
751
754
|
end
|
|
752
755
|
|
|
756
|
+
def util_clear_default_gems
|
|
757
|
+
FileUtils.rm_rf @default_spec_dir
|
|
758
|
+
FileUtils.mkdir @default_spec_dir
|
|
759
|
+
end
|
|
760
|
+
|
|
753
761
|
##
|
|
754
762
|
# Install the provided specs
|
|
755
763
|
|
|
@@ -1056,6 +1064,8 @@ Also, a list:
|
|
|
1056
1064
|
Gem.instance_variable_set :@platforms, nil
|
|
1057
1065
|
Gem::Platform.instance_variable_set :@local, nil
|
|
1058
1066
|
|
|
1067
|
+
yield if block_given?
|
|
1068
|
+
|
|
1059
1069
|
platform
|
|
1060
1070
|
end
|
|
1061
1071
|
|
|
@@ -1352,9 +1362,8 @@ Also, a list:
|
|
|
1352
1362
|
end
|
|
1353
1363
|
|
|
1354
1364
|
@@ruby = rubybin
|
|
1355
|
-
|
|
1356
|
-
@@
|
|
1357
|
-
@@bad_rake = "#{rubybin} #{escape_path(gempath, 'bad_rake.rb')}"
|
|
1365
|
+
@@good_rake = "#{rubybin} #{escape_path(TEST_PATH, 'good_rake.rb')}"
|
|
1366
|
+
@@bad_rake = "#{rubybin} #{escape_path(TEST_PATH, 'bad_rake.rb')}"
|
|
1358
1367
|
|
|
1359
1368
|
##
|
|
1360
1369
|
# Construct a new Gem::Dependency.
|
|
@@ -1542,14 +1551,12 @@ Also, a list:
|
|
|
1542
1551
|
|
|
1543
1552
|
def self.cert_path(cert_name)
|
|
1544
1553
|
if 32 == (Time.at(2**32) rescue 32)
|
|
1545
|
-
cert_file =
|
|
1546
|
-
File.expand_path "../../../test/rubygems/#{cert_name}_cert_32.pem",
|
|
1547
|
-
__FILE__
|
|
1554
|
+
cert_file = "#{TEST_PATH}/#{cert_name}_cert_32.pem"
|
|
1548
1555
|
|
|
1549
1556
|
return cert_file if File.exist? cert_file
|
|
1550
1557
|
end
|
|
1551
1558
|
|
|
1552
|
-
|
|
1559
|
+
"#{TEST_PATH}/#{cert_name}_cert.pem"
|
|
1553
1560
|
end
|
|
1554
1561
|
|
|
1555
1562
|
##
|
|
@@ -1567,7 +1574,7 @@ Also, a list:
|
|
|
1567
1574
|
# Returns the path to the key named +key_name+ from <tt>test/rubygems</tt>
|
|
1568
1575
|
|
|
1569
1576
|
def self.key_path(key_name)
|
|
1570
|
-
|
|
1577
|
+
"#{TEST_PATH}/#{key_name}_key.pem"
|
|
1571
1578
|
end
|
|
1572
1579
|
|
|
1573
1580
|
# :stopdoc:
|
data/lib/rubygems/uninstaller.rb
CHANGED
|
@@ -46,7 +46,7 @@ class Gem::Uninstaller
|
|
|
46
46
|
# TODO document the valid options
|
|
47
47
|
@gem = gem
|
|
48
48
|
@version = options[:version] || Gem::Requirement.default
|
|
49
|
-
@gem_home = File.
|
|
49
|
+
@gem_home = File.realpath(options[:install_dir] || Gem.dir)
|
|
50
50
|
@force_executables = options[:executables]
|
|
51
51
|
@force_all = options[:all]
|
|
52
52
|
@force_ignore = options[:ignore]
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
require 'rubygems/util'
|
|
9
9
|
require 'rubygems/deprecate'
|
|
10
|
+
require 'rubygems/text'
|
|
10
11
|
|
|
11
12
|
##
|
|
12
13
|
# Module that defines the default UserInteraction. Any class including this
|
|
@@ -14,6 +15,8 @@ require 'rubygems/deprecate'
|
|
|
14
15
|
|
|
15
16
|
module Gem::DefaultUserInteraction
|
|
16
17
|
|
|
18
|
+
include Gem::Text
|
|
19
|
+
|
|
17
20
|
##
|
|
18
21
|
# The default UI is a class variable of the singleton class for this
|
|
19
22
|
# module.
|
|
@@ -162,7 +165,7 @@ module Gem::UserInteraction
|
|
|
162
165
|
# is true.
|
|
163
166
|
|
|
164
167
|
def verbose(msg = nil)
|
|
165
|
-
say(msg || yield) if Gem.configuration.really_verbose
|
|
168
|
+
say(clean_text(msg || yield)) if Gem.configuration.really_verbose
|
|
166
169
|
end
|
|
167
170
|
end
|
|
168
171
|
|
data/lib/rubygems/util.rb
CHANGED
|
@@ -122,7 +122,7 @@ module Gem::Util
|
|
|
122
122
|
|
|
123
123
|
def self.glob_files_in_dir(glob, base_path)
|
|
124
124
|
if RUBY_VERSION >= "2.5"
|
|
125
|
-
Dir.glob(glob, base: base_path).map! {|f| File.
|
|
125
|
+
Dir.glob(glob, base: base_path).map! {|f| File.expand_path(f, base_path) }
|
|
126
126
|
else
|
|
127
127
|
Dir.glob(File.expand_path(glob, base_path))
|
|
128
128
|
end
|
data/lib/rubygems.rb
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
require 'rbconfig'
|
|
10
10
|
|
|
11
11
|
module Gem
|
|
12
|
-
VERSION = "3.0.
|
|
12
|
+
VERSION = "3.0.4".freeze
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
# Must be first since it unloads the prelude from 1.9.2
|
|
@@ -18,6 +18,7 @@ require 'rubygems/compatibility'
|
|
|
18
18
|
require 'rubygems/defaults'
|
|
19
19
|
require 'rubygems/deprecate'
|
|
20
20
|
require 'rubygems/errors'
|
|
21
|
+
require 'rubygems/path_support'
|
|
21
22
|
|
|
22
23
|
##
|
|
23
24
|
# RubyGems is the Ruby standard for publishing and managing third party
|
|
@@ -572,7 +573,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
|
572
573
|
#++
|
|
573
574
|
|
|
574
575
|
def self.find_home
|
|
575
|
-
Dir.home
|
|
576
|
+
Dir.home.dup
|
|
576
577
|
rescue
|
|
577
578
|
if Gem.win_platform?
|
|
578
579
|
File.expand_path File.join(ENV['HOMEDRIVE'] || ENV['SystemDrive'], '/')
|
data/rubygems-update.gemspec
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |s|
|
|
4
4
|
s.name = "rubygems-update"
|
|
5
|
-
s.version = "3.0.
|
|
5
|
+
s.version = "3.0.4"
|
|
6
6
|
s.authors = ["Jim Weirich", "Chad Fowler", "Eric Hodel", "Luis Lavena", "Aaron Patterson", "Samuel Giddins", "André Arko", "Evan Phoenix", "Hiroshi SHIBATA"]
|
|
7
7
|
s.email = ["", "", "drbrain@segment7.net", "luislavena@gmail.com", "aaron@tenderlovemaking.com", "segiddins@segiddins.me", "andre@arko.net", "evan@phx.io", "hsbt@ruby-lang.org"]
|
|
8
8
|
|
data/test/rubygems/ca_cert.pem
CHANGED
|
@@ -1,68 +1,77 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
rT8Cq2Y+G2yA/L1EMRvvxwFBqxavqaqHl/6rwsIBFlB3zbqGA/0oec6MAVnYynq4
|
|
40
|
-
c4AcHTjx3bQ/S4r2sNTZq0DH4SYbQzIobx/YW8PjQUJt8KQdKMcwwi7arHP7A/Ha
|
|
41
|
-
LKu8eIC2nsUBnP4NhkYSGhbmpJK+PFD0FVtD0ZIRlY/wsnaZNjWWcnWF1/FNuQ4H
|
|
42
|
-
ySjIblqVQkPuzebv3Ror6ZnVDukn96Mg7kP4u6zgxOeqlJGRe1M949SS9Vudjl8X
|
|
43
|
-
SF4aZUUB9pQGhsqQJVqaz2OlhGOp9D0q54xko/rekjAIcuDjl1mdX4F2WRrzpUmZ
|
|
44
|
-
uY/bPeOBYiVsOYVe
|
|
45
|
-
-----END CERTIFICATE-----
|
|
1
|
+
Certificate:
|
|
2
|
+
Data:
|
|
3
|
+
Version: 3 (0x2)
|
|
4
|
+
Serial Number: 0 (0x0)
|
|
5
|
+
Signature Algorithm: sha256WithRSAEncryption
|
|
6
|
+
Issuer: C=JP, ST=Tokyo, O=RubyGemsTest, CN=CA
|
|
7
|
+
Validity
|
|
8
|
+
Not Before: Jan 1 00:00:00 2009 GMT
|
|
9
|
+
Not After : Dec 31 23:59:59 2049 GMT
|
|
10
|
+
Subject: C=JP, ST=Tokyo, O=RubyGemsTest, CN=CA
|
|
11
|
+
Subject Public Key Info:
|
|
12
|
+
Public Key Algorithm: rsaEncryption
|
|
13
|
+
RSA Public-Key: (2048 bit)
|
|
14
|
+
Modulus:
|
|
15
|
+
00:c8:19:2c:5a:1d:4d:2a:65:1d:9a:0b:d6:3a:5c:
|
|
16
|
+
5f:54:90:ac:17:6f:58:18:8f:e6:0f:33:36:ca:a0:
|
|
17
|
+
92:02:b8:49:85:96:e9:74:16:14:40:67:98:4a:1f:
|
|
18
|
+
4d:1c:d8:0b:c4:4e:f8:78:0a:68:70:39:d8:66:64:
|
|
19
|
+
c6:d5:ca:49:e9:02:c7:1a:1c:03:ba:a1:85:68:0a:
|
|
20
|
+
03:05:27:b5:7f:97:21:94:20:f3:fe:ea:2e:f5:2e:
|
|
21
|
+
99:34:6b:e0:e7:96:ca:51:4e:4d:40:48:09:d6:5f:
|
|
22
|
+
64:7b:e5:df:eb:3d:44:bf:42:25:f7:84:c7:2d:22:
|
|
23
|
+
e0:7f:00:37:c6:c3:16:75:75:37:6a:e5:56:da:1c:
|
|
24
|
+
77:37:3c:00:d3:1f:f4:9d:3b:27:08:ff:cd:cf:1e:
|
|
25
|
+
60:74:65:90:c2:59:b4:12:3e:a0:7f:22:47:87:ff:
|
|
26
|
+
52:f3:47:39:d1:91:02:1c:bb:8c:c9:20:1f:00:db:
|
|
27
|
+
d1:3a:b0:e0:ba:ee:55:05:8f:1a:f8:1e:dd:6d:83:
|
|
28
|
+
1c:1d:18:01:44:92:27:22:f1:2a:07:fe:43:83:08:
|
|
29
|
+
82:d3:2b:f1:ec:b1:68:b3:f8:94:1b:81:29:54:01:
|
|
30
|
+
56:12:54:66:ba:60:e7:5c:27:04:4d:a3:61:e3:f9:
|
|
31
|
+
8f:86:53:0b:83:eb:1f:1d:89:0c:83:66:88:c8:50:
|
|
32
|
+
8d:c5
|
|
33
|
+
Exponent: 65537 (0x10001)
|
|
34
|
+
X509v3 extensions:
|
|
35
|
+
X509v3 Subject Key Identifier:
|
|
36
|
+
D6:DB:87:AD:D3:45:FC:D4:8D:6B:2B:97:F4:CF:95:08:B6:FA:62:A4
|
|
37
|
+
X509v3 Authority Key Identifier:
|
|
38
|
+
keyid:D6:DB:87:AD:D3:45:FC:D4:8D:6B:2B:97:F4:CF:95:08:B6:FA:62:A4
|
|
46
39
|
|
|
40
|
+
X509v3 Basic Constraints: critical
|
|
41
|
+
CA:TRUE
|
|
42
|
+
Signature Algorithm: sha256WithRSAEncryption
|
|
43
|
+
06:92:f7:9a:0f:40:da:1a:7f:9f:0c:9e:04:37:4d:be:a4:1e:
|
|
44
|
+
86:65:b3:4a:be:87:13:a1:e4:6b:3b:d6:58:9d:ca:f8:ba:6d:
|
|
45
|
+
e4:dd:de:c5:e3:a2:ec:ef:32:2d:c0:06:01:3a:d5:81:5a:e1:
|
|
46
|
+
e4:f7:5f:68:67:ea:cd:28:90:b1:9c:82:d3:4e:00:51:b6:eb:
|
|
47
|
+
d5:8d:ec:ab:c3:18:b2:8b:8d:5b:63:6d:f8:f5:40:c6:c6:7e:
|
|
48
|
+
72:7b:ed:98:c5:5e:24:b9:ad:4f:5b:8f:1d:53:a3:d7:6a:4f:
|
|
49
|
+
07:2e:6a:b6:63:5c:dc:05:22:ac:77:af:b0:72:9d:39:6f:77:
|
|
50
|
+
9c:45:8b:ad:de:e8:bf:6a:b5:87:0b:58:47:af:11:1a:9e:84:
|
|
51
|
+
25:21:68:48:2a:b3:3c:5a:97:54:20:03:bd:87:34:dd:db:24:
|
|
52
|
+
a6:c7:50:e9:6c:87:55:f2:e5:33:9c:83:8f:8c:9e:f3:3a:38:
|
|
53
|
+
a0:92:a1:a7:c4:89:31:bd:33:83:11:dd:ad:bb:e0:47:19:bb:
|
|
54
|
+
62:6c:49:58:b3:13:12:c3:d0:dd:02:5f:6f:4f:13:07:6d:aa:
|
|
55
|
+
7b:2c:46:5a:74:52:6d:13:10:9c:f7:3d:5d:84:5b:b8:5b:a9:
|
|
56
|
+
c5:ae:56:4b:9a:8c:e2:fd:7f:55:80:cb:b0:2d:56:d7:a4:3c:
|
|
57
|
+
cf:3c:b2:ff
|
|
47
58
|
-----BEGIN CERTIFICATE-----
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
OgBdWwDeSClwhrTJni4d30dbq+eNMByIZ7QNGBQivpFzDxeNV/2UBrTU0CilKG5Q
|
|
67
|
-
j7ZwknfKeA4xUTd8TMK3vKab5JJCfjbXOTHZQsYUcEEGSjOMS8/YVQs=
|
|
59
|
+
MIIDUDCCAjigAwIBAgIBADANBgkqhkiG9w0BAQsFADBBMQswCQYDVQQGEwJKUDEO
|
|
60
|
+
MAwGA1UECAwFVG9reW8xFTATBgNVBAoMDFJ1YnlHZW1zVGVzdDELMAkGA1UEAwwC
|
|
61
|
+
Q0EwHhcNMDkwMTAxMDAwMDAwWhcNNDkxMjMxMjM1OTU5WjBBMQswCQYDVQQGEwJK
|
|
62
|
+
UDEOMAwGA1UECAwFVG9reW8xFTATBgNVBAoMDFJ1YnlHZW1zVGVzdDELMAkGA1UE
|
|
63
|
+
AwwCQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIGSxaHU0qZR2a
|
|
64
|
+
C9Y6XF9UkKwXb1gYj+YPMzbKoJICuEmFlul0FhRAZ5hKH00c2AvETvh4CmhwOdhm
|
|
65
|
+
ZMbVyknpAscaHAO6oYVoCgMFJ7V/lyGUIPP+6i71Lpk0a+DnlspRTk1ASAnWX2R7
|
|
66
|
+
5d/rPUS/QiX3hMctIuB/ADfGwxZ1dTdq5VbaHHc3PADTH/SdOycI/83PHmB0ZZDC
|
|
67
|
+
WbQSPqB/IkeH/1LzRznRkQIcu4zJIB8A29E6sOC67lUFjxr4Ht1tgxwdGAFEkici
|
|
68
|
+
8SoH/kODCILTK/HssWiz+JQbgSlUAVYSVGa6YOdcJwRNo2Hj+Y+GUwuD6x8diQyD
|
|
69
|
+
ZojIUI3FAgMBAAGjUzBRMB0GA1UdDgQWBBTW24et00X81I1rK5f0z5UItvpipDAf
|
|
70
|
+
BgNVHSMEGDAWgBTW24et00X81I1rK5f0z5UItvpipDAPBgNVHRMBAf8EBTADAQH/
|
|
71
|
+
MA0GCSqGSIb3DQEBCwUAA4IBAQAGkveaD0DaGn+fDJ4EN02+pB6GZbNKvocToeRr
|
|
72
|
+
O9ZYncr4um3k3d7F46Ls7zItwAYBOtWBWuHk919oZ+rNKJCxnILTTgBRtuvVjeyr
|
|
73
|
+
wxiyi41bY2349UDGxn5ye+2YxV4kua1PW48dU6PXak8HLmq2Y1zcBSKsd6+wcp05
|
|
74
|
+
b3ecRYut3ui/arWHC1hHrxEanoQlIWhIKrM8WpdUIAO9hzTd2ySmx1DpbIdV8uUz
|
|
75
|
+
nIOPjJ7zOjigkqGnxIkxvTODEd2tu+BHGbtibElYsxMSw9DdAl9vTxMHbap7LEZa
|
|
76
|
+
dFJtExCc9z1dhFu4W6nFrlZLmozi/X9VgMuwLVbXpDzPPLL/
|
|
68
77
|
-----END CERTIFICATE-----
|
data/test/rubygems/client.pem
CHANGED
|
@@ -1,49 +1,107 @@
|
|
|
1
|
+
Certificate:
|
|
2
|
+
Data:
|
|
3
|
+
Version: 3 (0x2)
|
|
4
|
+
Serial Number: 2 (0x2)
|
|
5
|
+
Signature Algorithm: sha256WithRSAEncryption
|
|
6
|
+
Issuer: C=JP, ST=Tokyo, O=RubyGemsTest, CN=CA
|
|
7
|
+
Validity
|
|
8
|
+
Not Before: Jan 1 00:00:00 2009 GMT
|
|
9
|
+
Not After : Dec 31 23:59:59 2049 GMT
|
|
10
|
+
Subject: C=JP, ST=Tokyo, O=RubyGemsTest, CN=client
|
|
11
|
+
Subject Public Key Info:
|
|
12
|
+
Public Key Algorithm: rsaEncryption
|
|
13
|
+
RSA Public-Key: (2048 bit)
|
|
14
|
+
Modulus:
|
|
15
|
+
00:c7:87:4a:f4:77:32:54:0e:56:0a:80:04:ac:b5:
|
|
16
|
+
71:b6:29:9f:c6:aa:f5:9b:3b:75:0a:c2:55:2c:cf:
|
|
17
|
+
34:c8:78:b7:38:ed:af:48:7d:7e:6c:4c:39:d8:0f:
|
|
18
|
+
cf:fc:ba:f5:e0:50:47:a0:76:72:cf:c7:de:91:a6:
|
|
19
|
+
1a:99:8b:5f:6f:0c:06:fc:f1:78:6b:0f:c5:bc:91:
|
|
20
|
+
cc:91:f0:85:05:5d:66:d3:cb:ac:54:a1:bc:9b:6c:
|
|
21
|
+
e8:17:f2:17:20:b8:b0:b2:03:cc:9d:a6:8e:c0:33:
|
|
22
|
+
6c:8b:5f:ef:1a:f6:38:6d:80:3f:4d:b5:e3:a5:a4:
|
|
23
|
+
f1:86:15:76:62:8b:6c:9d:fa:24:59:32:8f:60:b0:
|
|
24
|
+
80:f4:22:a2:68:57:13:aa:60:e4:cd:01:34:87:76:
|
|
25
|
+
2a:15:ca:86:9b:b7:aa:b5:66:fd:72:d8:35:86:7e:
|
|
26
|
+
c8:1d:a1:71:71:85:ac:65:64:c2:ea:19:52:7b:34:
|
|
27
|
+
1e:12:c4:87:8f:75:d7:65:35:85:dd:5a:33:5d:2c:
|
|
28
|
+
31:f8:2f:b4:84:a7:b6:56:56:2b:e1:9c:c9:c8:f9:
|
|
29
|
+
41:18:40:19:d9:bb:d4:3c:0d:c4:93:dc:b8:d1:99:
|
|
30
|
+
44:d0:3d:a2:de:de:29:7f:d6:0c:a8:07:df:bc:ed:
|
|
31
|
+
66:5b:aa:cc:64:44:b8:79:49:ed:48:77:88:e2:d1:
|
|
32
|
+
94:b9
|
|
33
|
+
Exponent: 65537 (0x10001)
|
|
34
|
+
X509v3 extensions:
|
|
35
|
+
X509v3 Basic Constraints:
|
|
36
|
+
CA:FALSE
|
|
37
|
+
Netscape Comment:
|
|
38
|
+
OpenSSL Generated Certificate
|
|
39
|
+
X509v3 Subject Key Identifier:
|
|
40
|
+
EF:5A:B6:46:3A:44:5F:0F:E4:F9:E0:6B:B2:C8:45:8D:07:0D:70:15
|
|
41
|
+
X509v3 Authority Key Identifier:
|
|
42
|
+
keyid:D6:DB:87:AD:D3:45:FC:D4:8D:6B:2B:97:F4:CF:95:08:B6:FA:62:A4
|
|
43
|
+
|
|
44
|
+
Signature Algorithm: sha256WithRSAEncryption
|
|
45
|
+
55:b5:5a:51:cd:0b:2a:81:10:e6:d1:d9:d6:6c:78:99:9b:01:
|
|
46
|
+
18:e7:91:32:89:6c:fd:3b:eb:c0:03:82:f8:5c:e2:19:c1:04:
|
|
47
|
+
5d:37:10:5b:97:0b:be:76:8b:98:71:d4:63:68:8c:0e:61:c9:
|
|
48
|
+
ec:3d:cf:ed:01:57:9f:9b:53:07:27:1a:7e:20:f3:8a:13:8c:
|
|
49
|
+
4f:30:bd:e6:a0:eb:d7:2c:a1:95:35:3f:a6:53:c9:00:11:f9:
|
|
50
|
+
f6:b3:9d:53:e4:b5:71:33:f1:dc:86:47:94:6f:a9:64:01:d4:
|
|
51
|
+
c5:1b:7c:95:0a:02:0e:6f:d1:70:94:5a:5f:7b:ac:77:f7:56:
|
|
52
|
+
35:6b:ad:a2:e2:fc:74:91:1e:c3:46:fc:32:01:19:a1:a5:27:
|
|
53
|
+
f3:31:14:79:86:7c:4d:9a:83:7c:28:03:9f:ac:3c:8c:e4:d9:
|
|
54
|
+
c8:b0:4e:a3:fe:75:cd:a9:8e:34:57:3b:6b:14:d6:df:35:42:
|
|
55
|
+
7b:c9:3d:88:0d:ea:5f:1e:c6:5f:80:0e:a5:b9:bf:25:06:ac:
|
|
56
|
+
ac:38:7f:cc:f9:a5:9e:68:cc:08:77:1e:de:45:0d:91:e5:38:
|
|
57
|
+
d2:b3:62:ea:03:ec:3c:18:9f:16:ec:43:21:30:7a:a7:8b:42:
|
|
58
|
+
c6:cb:e4:a8:ac:0b:15:82:a5:9c:93:b2:2c:20:1f:d2:de:e1:
|
|
59
|
+
cf:c0:74:bc
|
|
1
60
|
-----BEGIN CERTIFICATE-----
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
+
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
+
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
61
|
+
MIIDfDCCAmSgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBBMQswCQYDVQQGEwJKUDEO
|
|
62
|
+
MAwGA1UECAwFVG9reW8xFTATBgNVBAoMDFJ1YnlHZW1zVGVzdDELMAkGA1UEAwwC
|
|
63
|
+
Q0EwHhcNMDkwMTAxMDAwMDAwWhcNNDkxMjMxMjM1OTU5WjBFMQswCQYDVQQGEwJK
|
|
64
|
+
UDEOMAwGA1UECAwFVG9reW8xFTATBgNVBAoMDFJ1YnlHZW1zVGVzdDEPMA0GA1UE
|
|
65
|
+
AwwGY2xpZW50MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx4dK9Hcy
|
|
66
|
+
VA5WCoAErLVxtimfxqr1mzt1CsJVLM80yHi3OO2vSH1+bEw52A/P/Lr14FBHoHZy
|
|
67
|
+
z8fekaYamYtfbwwG/PF4aw/FvJHMkfCFBV1m08usVKG8m2zoF/IXILiwsgPMnaaO
|
|
68
|
+
wDNsi1/vGvY4bYA/TbXjpaTxhhV2YotsnfokWTKPYLCA9CKiaFcTqmDkzQE0h3Yq
|
|
69
|
+
FcqGm7eqtWb9ctg1hn7IHaFxcYWsZWTC6hlSezQeEsSHj3XXZTWF3VozXSwx+C+0
|
|
70
|
+
hKe2VlYr4ZzJyPlBGEAZ2bvUPA3Ek9y40ZlE0D2i3t4pf9YMqAffvO1mW6rMZES4
|
|
71
|
+
eUntSHeI4tGUuQIDAQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1P
|
|
72
|
+
cGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU71q2RjpEXw/k
|
|
73
|
+
+eBrsshFjQcNcBUwHwYDVR0jBBgwFoAU1tuHrdNF/NSNayuX9M+VCLb6YqQwDQYJ
|
|
74
|
+
KoZIhvcNAQELBQADggEBAFW1WlHNCyqBEObR2dZseJmbARjnkTKJbP0768ADgvhc
|
|
75
|
+
4hnBBF03EFuXC752i5hx1GNojA5hyew9z+0BV5+bUwcnGn4g84oTjE8wveag69cs
|
|
76
|
+
oZU1P6ZTyQAR+faznVPktXEz8dyGR5RvqWQB1MUbfJUKAg5v0XCUWl97rHf3VjVr
|
|
77
|
+
raLi/HSRHsNG/DIBGaGlJ/MxFHmGfE2ag3woA5+sPIzk2ciwTqP+dc2pjjRXO2sU
|
|
78
|
+
1t81QnvJPYgN6l8exl+ADqW5vyUGrKw4f8z5pZ5ozAh3Ht5FDZHlONKzYuoD7DwY
|
|
79
|
+
nxbsQyEweqeLQsbL5KisCxWCpZyTsiwgH9Le4c/AdLw=
|
|
21
80
|
-----END CERTIFICATE-----
|
|
22
|
-
|
|
23
81
|
-----BEGIN RSA PRIVATE KEY-----
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
82
|
+
MIIEogIBAAKCAQEAx4dK9HcyVA5WCoAErLVxtimfxqr1mzt1CsJVLM80yHi3OO2v
|
|
83
|
+
SH1+bEw52A/P/Lr14FBHoHZyz8fekaYamYtfbwwG/PF4aw/FvJHMkfCFBV1m08us
|
|
84
|
+
VKG8m2zoF/IXILiwsgPMnaaOwDNsi1/vGvY4bYA/TbXjpaTxhhV2YotsnfokWTKP
|
|
85
|
+
YLCA9CKiaFcTqmDkzQE0h3YqFcqGm7eqtWb9ctg1hn7IHaFxcYWsZWTC6hlSezQe
|
|
86
|
+
EsSHj3XXZTWF3VozXSwx+C+0hKe2VlYr4ZzJyPlBGEAZ2bvUPA3Ek9y40ZlE0D2i
|
|
87
|
+
3t4pf9YMqAffvO1mW6rMZES4eUntSHeI4tGUuQIDAQABAoIBAHbfhuuQ3D4x8Fb/
|
|
88
|
+
IEnZK+8Qa22MSxl52ehYETDKHjNVoCtdiDGS+rAA1fGAsjRrGrPSgGn8R7i85kA2
|
|
89
|
+
CuDxpSDetIccQdbfJbqLzqof9tBUbj++t2QQm/KpdrlVdSv8fOEB3HUMVz3xJTkA
|
|
90
|
+
Jc8VZFbwskZVGFSGqZJt1QMu975By8mrNBiQ92dpWUwH6bcJ2rL+GgpW8LkosAtW
|
|
91
|
+
+bqAH86je2utErCStHTBMq459JIcef+dZxQ1iNALny+Q54MIsFbh21TbUf+mPsBK
|
|
92
|
+
B5Pe+RnlEw9uFmFH0gQybmZBIB/IDnsDj/+L0gRrSp6nYaQBD2Gw2jPJQL0PEu0s
|
|
93
|
+
nS1B4tECgYEA+E1z73eA35jBvDg/CI4mcL/f17xRCW9YsaeXTqEDMSi27b5OSgdP
|
|
94
|
+
0ETl3xreVgKGeDHygyaaJ6MR7uoPRPJhZR1ifrhWKoyPLuD55rwGIvKIbAWXVj7/
|
|
95
|
+
AvcY+qligVcK2dTJjczh6Tv8/XVYEPrfg4QdDlg9rodAlNJGofaX0WUCgYEAzbbD
|
|
96
|
+
8Yw/KbX1bSN6TtHoAAIVd/y2a4TEgHxOOOM5LAQ98fgP4L7njse8CBFUCH9RXYIS
|
|
97
|
+
lWyT7aHxykK/32wsd/6CfP1IlNcOSrBe5nA0b1m9piT6K9nZd7NMv1DpznaZ/roO
|
|
98
|
+
6jPxXrtQAgAC4jPCehH23t8SqP+abBIWvTlZisUCgYB4Jvqf+UL6b+/nxYvy9t5x
|
|
99
|
+
FtgZi/3mw+O2a/OSz+U8h4gleT5nIiykCoL1uAm4sxYg2YKRpj9YSNentclXwrYQ
|
|
100
|
+
eOyth0Pi6QtsUt96oKeTh6suInJ+AJPj+nAy835AOj988zPpEyiKdUXR3FOWO9+m
|
|
101
|
+
w2pQA7EtYDOHEE2vmCUU5QKBgCSP10OXKaLANF6xb4uSwyk9NZOd1s5FSqeLcFus
|
|
102
|
+
Bv1Lw7a94BSR2ZYG6eSFL+pStqNn+uWT5rbVkaPhOTj8gOrS0V5lpgDOODwOHM/Y
|
|
103
|
+
IXmo+YwOBmjEz2H2/C0EtIl9iuE7MGtvz/aGVDIGznxltqr7hmUWQLrIsymCDYiU
|
|
104
|
+
KNYBAoGAeZd1hDEK3dmzNAzNUWaIVWg2yq+B1RF7k1yzk7XcAc13vGEyZc2gILji
|
|
105
|
+
y+0IMS60/uKVZ7zYBvxuaDJImi1woEzAVSM2LUo2vHgFClrhHCF+tGKVEa1hbhhO
|
|
106
|
+
ScifJC8f/HoKI+Ddn0hrFF0ndBJ7g4mB9sm7RBHfm+1steGCV3Q=
|
|
49
107
|
-----END RSA PRIVATE KEY-----
|