password_list_generator 0.4.4 → 0.4.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.gitignore +1 -0
- data/Guardfile +1 -1
- data/README.md +12 -5
- data/bin/pwgen +20 -14
- data/certs/stephaneliu_gem.pem +21 -0
- data/lib/password_list_generator/generator.rb +25 -16
- data/lib/password_list_generator/version.rb +1 -1
- data/password_list_generator.gemspec +2 -3
- data/spec/generator_spec.rb +86 -0
- metadata +22 -20
- metadata.gz.sig +0 -0
- data/certs/stephaneliu.pem +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9bdd1cef551224b9ebf74dec8a0821d389944a07
|
4
|
+
data.tar.gz: 40baf3adb4abbce4ffcab230ca45d7dee295ce2c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 09525abe4be43b69596b119a294e388ad262a2dac5777bbd7667365803795fb9488566f5ca6fda1e331ced6e534e02854e3c7d88833c84d142157699105242c9
|
7
|
+
data.tar.gz: a7837d70e510f2a5772534759ada21100efd9d9bcda39a8a4c0774e306d2551abfced25b1d959319db8a3461456d03002be08ce396ce3531b7fb21843a04274d
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/.gitignore
CHANGED
data/Guardfile
CHANGED
@@ -9,8 +9,8 @@ guard :minitest do
|
|
9
9
|
|
10
10
|
# with Minitest::Spec
|
11
11
|
watch(%r{^spec/(.*)_spec\.rb})
|
12
|
+
watch(%r{^lib/password_list_generator/(.+)\.rb}) { |m| "spec/#{m[1]}_spec.rb" }
|
12
13
|
watch(%r{^lib/(.+)\.rb}) { |m| "spec/#{m[1]}_spec.rb" }
|
13
|
-
watch(%r{^lib/password_generator/(.+)\.rb}) { |m| "spec/#{m[1]}_spec.rb" }
|
14
14
|
watch(%r{^bin/pwgen}) { |m| "spec/lib/pwgen_spec.rb" }
|
15
15
|
watch(%r{^spec/spec_helper\.rb}) { 'spec' }
|
16
16
|
end
|
data/README.md
CHANGED
@@ -9,22 +9,29 @@ PasswordListGenerator
|
|
9
9
|
|
10
10
|
## Description
|
11
11
|
|
12
|
-
Generate a list of passwords from the command line
|
12
|
+
Generate a list of passwords from the command line. The complexity of the password can be passed in through the CLI.
|
13
13
|
|
14
14
|
## Installation
|
15
15
|
|
16
|
-
gem install
|
16
|
+
PasswordListGenerator is cryptographically signed. To be sure the gem you install hasn't been tampered with:
|
17
|
+
|
18
|
+
Add my public key (if you haven't already) as a trusted certificate gem
|
19
|
+
|
20
|
+
> gem cert --add <(curl -Ls https://raw.github.com/stephaneliu/password_generator/master/certs/stephaneliu_gem.pem)
|
21
|
+
> gem install password_list_generator -P HighSecurity.
|
22
|
+
|
23
|
+
Warning: This may cause installation to fail if non-signed depenedent gems are also being installed.
|
17
24
|
|
18
25
|
## Usage
|
19
26
|
|
20
|
-
> pwgen
|
21
|
-
> pwgen -h
|
27
|
+
> pwgen
|
28
|
+
> pwgen -h # see more options
|
22
29
|
|
23
30
|
## Contributing
|
24
31
|
|
25
32
|
1. Fork it
|
26
33
|
2. Create your feature branch (`git checkout -b my-awesomie-feature`)
|
27
|
-
3. Commit your changes (`git commit -am '
|
34
|
+
3. Commit your changes (`git commit -am 'My some awesome feature'`)
|
28
35
|
4. Push to branch (`git push origin my-awesome-feature`)
|
29
36
|
5. Create a new Pull Request
|
30
37
|
|
data/bin/pwgen
CHANGED
@@ -91,17 +91,23 @@ end
|
|
91
91
|
|
92
92
|
opts.parse!
|
93
93
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
system "echo '
|
100
|
-
system "echo '
|
101
|
-
system "echo 'Must have at least one
|
102
|
-
system "echo 'Must have at least one
|
103
|
-
system "echo 'Must have at least
|
104
|
-
system "echo 'Must have
|
105
|
-
system "echo ' ' >> #{file}"
|
106
|
-
system "echo '
|
107
|
-
|
94
|
+
begin
|
95
|
+
passwords = PasswordListGenerator::Generator.new(options).generate
|
96
|
+
|
97
|
+
file = options.output_file
|
98
|
+
|
99
|
+
system "echo ' ' > #{file} \n\n"
|
100
|
+
system "echo 'Generated passwords meet the following requirements: ' >> #{file}"
|
101
|
+
system "echo 'Must have at least one lower case alphabetic character (a - z)' >> #{file}"
|
102
|
+
system "echo 'Must have at least one special character (!@#\$\%^&*())' >> #{file}" if options.symbol
|
103
|
+
system "echo 'Must have at least one numeric character (0 -9)' >> #{file}" if options.numeric
|
104
|
+
system "echo 'Must have at least one upper case alphabetic character (A - Z)' >> #{file}" if options.uppercase
|
105
|
+
system "echo 'Must have at least #{options.min} characters' >> #{file}"
|
106
|
+
system "echo 'Must have no more than #{options.max} characters' >> #{file}"
|
107
|
+
system "echo ' ' >> #{file}"
|
108
|
+
system "echo '" + passwords.map(&:to_s).join("\n\n") + "' >> #{file}"
|
109
|
+
puts "#{options.count} random passwords were generated into #{file}"
|
110
|
+
rescue Exception => e
|
111
|
+
puts e
|
112
|
+
puts "Try viewing options with pwgen -h"
|
113
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDYDCCAkigAwIBAgIBATANBgkqhkiG9w0BAQUFADA7MQ0wCwYDVQQDDARzbGl1
|
3
|
+
MRUwEwYKCZImiZPyLGQBGRYFc2psaXUxEzARBgoJkiaJk/IsZAEZFgNjb20wHhcN
|
4
|
+
MTQwMzAzMjEzMjU3WhcNMTUwMzAzMjEzMjU3WjA7MQ0wCwYDVQQDDARzbGl1MRUw
|
5
|
+
EwYKCZImiZPyLGQBGRYFc2psaXUxEzARBgoJkiaJk/IsZAEZFgNjb20wggEiMA0G
|
6
|
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDETtQzkz09Tm54FFE1ECRs8VQsEJPE
|
7
|
+
3p5x9K43lDOWv/QObMkwGAoRJc2iAJ59OUOeM59vz8806BjeAqZ4pivtGViaZVYM
|
8
|
+
bvHUEALC9xwwSpAMAd6GpW1OMYHHYV0XeoqYKpOc9mCMqmI5PyewQIS1mxq4HlOz
|
9
|
+
iR+e2ABFa5Ugp3LbDbIDsuImhEdjjvVX72GRRYTQhHsluJZD/fcBK++2PDJE/zEy
|
10
|
+
ejqpmIMRaseISuUdIMl/2Y7ehO+oWhYXDRevJzU4GZVwpltInBSKNahaGIjmC1oY
|
11
|
+
dYtOy2EAdtl2kfRErNMOLKuayAcFDmm9ACGi4sD1cjKM6CPyATzaoheBAgMBAAGj
|
12
|
+
bzBtMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBRu4/jxuld5bmHt
|
13
|
+
e5EtflKmkP5mkjAZBgNVHREEEjAQgQ5zbGl1QHNqbGl1LmNvbTAZBgNVHRIEEjAQ
|
14
|
+
gQ5zbGl1QHNqbGl1LmNvbTANBgkqhkiG9w0BAQUFAAOCAQEAvGnJ2PRHBBJZ3eL2
|
15
|
+
J7YTL2CY2/tZCAZ160ljdv8wvzSbbW574KpBwEoAUN6NT06+sWt9Pz/dwrRHy5Np
|
16
|
+
76/Gu27IsybQyzvvie8z+4DGeCpuK30KmtgS4KNffwt16iCU3I8iTNzAXJgSGIsG
|
17
|
+
7PZhAmnHSo4QibVAaw7FWuRdk5CsaSz8yQJW74a7XO7c1aV1pjl7nKD7akT4auov
|
18
|
+
qFZM2+znLjNqWRtiu1wx/fTPEos6bi310efPBwbAOk1kALR5pY/mqPhx3wG51jfD
|
19
|
+
AjoDi8ANvA6BEjpDaK8BkRlQjTOYplmgVlohNURSqxIVo2tnsZyvW+Rl7RWIUVGt
|
20
|
+
ZaPiXQ==
|
21
|
+
-----END CERTIFICATE-----
|
@@ -9,28 +9,37 @@ module PasswordListGenerator
|
|
9
9
|
|
10
10
|
def generate
|
11
11
|
passwords = []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
12
|
+
tries = 0
|
13
|
+
|
14
|
+
catch :no_valid_passwords do
|
15
|
+
1.upto(config.count) do
|
16
|
+
tries = 0
|
17
|
+
valid = false
|
18
|
+
|
19
|
+
until valid
|
20
|
+
random_size = (config.min..config.max).to_a.shuffle.first
|
21
|
+
password = Password.new(random_string(random_size), config)
|
22
|
+
|
23
|
+
if password.valid?
|
24
|
+
passwords << password
|
25
|
+
valid = true
|
26
|
+
else
|
27
|
+
tries += 1
|
28
|
+
throw :no_valid_passwords if tries > 10
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
raise "There was a problem creating valid passwords." if tries > 10
|
26
35
|
|
27
36
|
passwords
|
28
37
|
end
|
29
38
|
|
30
39
|
private
|
31
40
|
|
32
|
-
def random_string
|
33
|
-
(1..
|
41
|
+
def random_string(size)
|
42
|
+
(1..size).map {characters_set[random_number]}.join
|
34
43
|
end
|
35
44
|
|
36
45
|
def random_number
|
@@ -12,12 +12,11 @@ Gem::Specification.new do |gem|
|
|
12
12
|
gem.homepage = 'https://github.com/stephaneliu/password_generator'
|
13
13
|
# gem s.date = '2013-10-24'
|
14
14
|
gem.files = `git ls-files`.split($/)
|
15
|
-
puts "exe: #{gem.files.grep(%r{^bin/}).map {|f| File.basename(f)}}"
|
16
15
|
gem.executables = gem.files.grep(%r{^bin/}).map {|f| File.basename(f)}
|
17
16
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
17
|
gem.require_paths = ['lib']
|
19
|
-
gem.cert_chain = ['certs/
|
20
|
-
gem.signing_key = File.expand_path("~/.ssh/
|
18
|
+
gem.cert_chain = ['certs/stephaneliu_gem.pem']
|
19
|
+
gem.signing_key = File.expand_path("~/.ssh/stephaneliu_private_gem.pem") if $0 =~ /gem\z/
|
21
20
|
|
22
21
|
gem.add_development_dependency 'simplecov', '>= 0.7'
|
23
22
|
gem.add_development_dependency 'coveralls', '>= 0.7.0'
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require_relative 'spec_helper'
|
2
|
+
require 'ostruct'
|
3
|
+
|
4
|
+
describe PasswordListGenerator::Generator do
|
5
|
+
|
6
|
+
describe 'initialization' do
|
7
|
+
it 'should build_characters_set' do
|
8
|
+
config = OpenStruct.new
|
9
|
+
generator = PasswordListGenerator::Generator.new(config)
|
10
|
+
generator.characters_set.wont_equal nil
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'character_set should have uppercase' do
|
14
|
+
config = OpenStruct.new(uppercase: true)
|
15
|
+
generator = PasswordListGenerator::Generator.new(config)
|
16
|
+
generator.characters_set.find {|char| /[A-Z]/ === char}.nil?.must_equal false
|
17
|
+
|
18
|
+
config = OpenStruct.new(uppercase: false)
|
19
|
+
generator = PasswordListGenerator::Generator.new(config)
|
20
|
+
generator.characters_set.find {|char| /[A-Z]/ === char}.nil?.must_equal true
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'character_set should have numeric' do
|
24
|
+
config = OpenStruct.new(numeric: true)
|
25
|
+
generator = PasswordListGenerator::Generator.new(config)
|
26
|
+
generator.characters_set.find {|char| /\d/ === char}.nil?.must_equal false
|
27
|
+
|
28
|
+
config = OpenStruct.new(numeric: false)
|
29
|
+
generator = PasswordListGenerator::Generator.new(config)
|
30
|
+
generator.characters_set.find {|char| /\d/ === char}.nil?.must_equal true
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'character_set should have symbol when configured' do
|
34
|
+
config = OpenStruct.new(symbol: true)
|
35
|
+
generator = PasswordListGenerator::Generator.new(config)
|
36
|
+
generator.characters_set.find {|char| /\W/ === char}.nil?.must_equal false
|
37
|
+
|
38
|
+
config = OpenStruct.new(symbol: false)
|
39
|
+
generator = PasswordListGenerator::Generator.new(config)
|
40
|
+
generator.characters_set.find {|char| /\W/ === char}.nil?.must_equal true
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should not include ambiguous characters' do
|
44
|
+
config = OpenStruct.new(uppercase: true, numeric: true)
|
45
|
+
generator = PasswordListGenerator::Generator.new(config)
|
46
|
+
ambiguous = %w(i o 0 1 l 0 I)
|
47
|
+
|
48
|
+
generator.characters_set.any? {|char| ambiguous.include? char}.must_equal false
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe '.generate' do
|
53
|
+
it "should generate the correct number of passwords" do
|
54
|
+
count = 10
|
55
|
+
config = OpenStruct.new(count: count, min: 5, max: 10)
|
56
|
+
generator = PasswordListGenerator::Generator.new(config)
|
57
|
+
|
58
|
+
generator.generate.size.must_equal count
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should be random" do
|
62
|
+
config = OpenStruct.new(count: 100, min: 5, max: 10)
|
63
|
+
invalid_password = PasswordListGenerator::Password.new("a", config)
|
64
|
+
generator = PasswordListGenerator::Generator.new(config)
|
65
|
+
passwords = generator.generate
|
66
|
+
|
67
|
+
passwords.each do |password|
|
68
|
+
passwords.select {|pw| pw == password}.size.must_equal 1
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should be deterministic" do
|
73
|
+
config = OpenStruct.new(count: 2, min: 5, max: 10)
|
74
|
+
invalid_password = PasswordListGenerator::Password.new("a", config)
|
75
|
+
generator = PasswordListGenerator::Generator.new(config)
|
76
|
+
|
77
|
+
PasswordListGenerator::Password.stub :new, invalid_password do
|
78
|
+
begin
|
79
|
+
passwords = generator.generate
|
80
|
+
rescue Exception => e
|
81
|
+
passwords.must_equal nil
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: password_list_generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephane Liu
|
@@ -12,25 +12,25 @@ cert_chain:
|
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
13
|
MIIDYDCCAkigAwIBAgIBATANBgkqhkiG9w0BAQUFADA7MQ0wCwYDVQQDDARzbGl1
|
14
14
|
MRUwEwYKCZImiZPyLGQBGRYFc2psaXUxEzARBgoJkiaJk/IsZAEZFgNjb20wHhcN
|
15
|
-
|
15
|
+
MTQwMzAzMjEzMjU3WhcNMTUwMzAzMjEzMjU3WjA7MQ0wCwYDVQQDDARzbGl1MRUw
|
16
16
|
EwYKCZImiZPyLGQBGRYFc2psaXUxEzARBgoJkiaJk/IsZAEZFgNjb20wggEiMA0G
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
+
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
17
|
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDETtQzkz09Tm54FFE1ECRs8VQsEJPE
|
18
|
+
3p5x9K43lDOWv/QObMkwGAoRJc2iAJ59OUOeM59vz8806BjeAqZ4pivtGViaZVYM
|
19
|
+
bvHUEALC9xwwSpAMAd6GpW1OMYHHYV0XeoqYKpOc9mCMqmI5PyewQIS1mxq4HlOz
|
20
|
+
iR+e2ABFa5Ugp3LbDbIDsuImhEdjjvVX72GRRYTQhHsluJZD/fcBK++2PDJE/zEy
|
21
|
+
ejqpmIMRaseISuUdIMl/2Y7ehO+oWhYXDRevJzU4GZVwpltInBSKNahaGIjmC1oY
|
22
|
+
dYtOy2EAdtl2kfRErNMOLKuayAcFDmm9ACGi4sD1cjKM6CPyATzaoheBAgMBAAGj
|
23
|
+
bzBtMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBRu4/jxuld5bmHt
|
24
|
+
e5EtflKmkP5mkjAZBgNVHREEEjAQgQ5zbGl1QHNqbGl1LmNvbTAZBgNVHRIEEjAQ
|
25
|
+
gQ5zbGl1QHNqbGl1LmNvbTANBgkqhkiG9w0BAQUFAAOCAQEAvGnJ2PRHBBJZ3eL2
|
26
|
+
J7YTL2CY2/tZCAZ160ljdv8wvzSbbW574KpBwEoAUN6NT06+sWt9Pz/dwrRHy5Np
|
27
|
+
76/Gu27IsybQyzvvie8z+4DGeCpuK30KmtgS4KNffwt16iCU3I8iTNzAXJgSGIsG
|
28
|
+
7PZhAmnHSo4QibVAaw7FWuRdk5CsaSz8yQJW74a7XO7c1aV1pjl7nKD7akT4auov
|
29
|
+
qFZM2+znLjNqWRtiu1wx/fTPEos6bi310efPBwbAOk1kALR5pY/mqPhx3wG51jfD
|
30
|
+
AjoDi8ANvA6BEjpDaK8BkRlQjTOYplmgVlohNURSqxIVo2tnsZyvW+Rl7RWIUVGt
|
31
|
+
ZaPiXQ==
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date:
|
33
|
+
date: 2014-03-03 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: simplecov
|
@@ -78,12 +78,13 @@ files:
|
|
78
78
|
- README.md
|
79
79
|
- Rakefile
|
80
80
|
- bin/pwgen
|
81
|
-
- certs/
|
81
|
+
- certs/stephaneliu_gem.pem
|
82
82
|
- lib/password_list_generator.rb
|
83
83
|
- lib/password_list_generator/generator.rb
|
84
84
|
- lib/password_list_generator/password.rb
|
85
85
|
- lib/password_list_generator/version.rb
|
86
86
|
- password_list_generator.gemspec
|
87
|
+
- spec/generator_spec.rb
|
87
88
|
- spec/password_spec.rb
|
88
89
|
- spec/spec_helper.rb
|
89
90
|
homepage: https://github.com/stephaneliu/password_generator
|
@@ -106,10 +107,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
107
|
version: '0'
|
107
108
|
requirements: []
|
108
109
|
rubyforge_project:
|
109
|
-
rubygems_version: 2.1.
|
110
|
+
rubygems_version: 2.1.11
|
110
111
|
signing_key:
|
111
112
|
specification_version: 4
|
112
113
|
summary: Generate list of passwords easily from command line
|
113
114
|
test_files:
|
115
|
+
- spec/generator_spec.rb
|
114
116
|
- spec/password_spec.rb
|
115
117
|
- spec/spec_helper.rb
|
metadata.gz.sig
CHANGED
Binary file
|
data/certs/stephaneliu.pem
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
2
|
-
MIIDYDCCAkigAwIBAgIBATANBgkqhkiG9w0BAQUFADA7MQ0wCwYDVQQDDARzbGl1
|
3
|
-
MRUwEwYKCZImiZPyLGQBGRYFc2psaXUxEzARBgoJkiaJk/IsZAEZFgNjb20wHhcN
|
4
|
-
MTMxMTIxMDgyMjMwWhcNMTQxMTIxMDgyMjMwWjA7MQ0wCwYDVQQDDARzbGl1MRUw
|
5
|
-
EwYKCZImiZPyLGQBGRYFc2psaXUxEzARBgoJkiaJk/IsZAEZFgNjb20wggEiMA0G
|
6
|
-
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1PHip2Oa8Pf42ovmPUgAZ2Gv1hTOi
|
7
|
-
4ZJBdq/6PUNBAmFTHhBvToRW++y5fvBzOTg1YkDHF51l7vcGbqpuKDBleY7COiPD
|
8
|
-
nR+KUQQ+rRD26XRdtlOacGo3ZjRBJ0aDBV6PITMRda7HQijXZ3rVS2j7gb+YoQDw
|
9
|
-
5I68sZEsjX9/a6C3Ac0Ax4MBZL172KSLzaKCTjdvrftdQm4lWQ1hpouKYjXNtNIO
|
10
|
-
+JSVMszCbZFXVq9O21cer/AHaB49eCQ0Pyd10vhGRs70I0usdrPtN4XbIeOK1lgi
|
11
|
-
JIjQ/4nHXjo2KCwW0+dt1YwJUI/7AT75v94O5aCbb24ENZPko/gn7PbLAgMBAAGj
|
12
|
-
bzBtMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBT/tqKs2lU2i9D1
|
13
|
-
RjjQsbYTk0DAmjAZBgNVHREEEjAQgQ5zbGl1QHNqbGl1LmNvbTAZBgNVHRIEEjAQ
|
14
|
-
gQ5zbGl1QHNqbGl1LmNvbTANBgkqhkiG9w0BAQUFAAOCAQEALD94EwV7vOWz3tq0
|
15
|
-
KITiDYO/0U7e9MW80gR7QBH+20sBmY4ONEmk1IuY490LePQAneHuvMyQRxK4i81b
|
16
|
-
+v0HUVLvCxtyZIUeluQaSPt76USpyQzrxV+WCisT4Ckw0yi/04h+UKDyc7Zf4mok
|
17
|
-
0tmihH5qdrq9+tHI/QC981zw2cZeWfr74Wek3mUzHZm9Z+Jou38kyd/hDSUaRJpn
|
18
|
-
aC0qBC/AkPKtDcdl1OF4l5sjq5/aTCRVW7uXJ2G7YRWrGdqgiKEC5YmEFuxT/wVK
|
19
|
-
u4D3Um/AnYRhXT9ydJk2pcbzNsb30/ojfrqf3rTrJRfXv1/JYpDOfqFBOrMYkuw1
|
20
|
-
nE3D5g==
|
21
|
-
-----END CERTIFICATE-----
|