acme-client 2.0.9 → 2.0.31

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.
metadata CHANGED
@@ -1,29 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acme-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.9
4
+ version: 2.0.31
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charles Barbier
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2021-08-31 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 1.17.3
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: 1.17.3
27
12
  - !ruby/object:Gem::Dependency
28
13
  name: rake
29
14
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +43,28 @@ dependencies:
58
43
  requirements:
59
44
  - - "~>"
60
45
  - !ruby/object:Gem::Version
61
- version: '2.9'
46
+ version: '6.0'
62
47
  type: :development
63
48
  prerelease: false
64
49
  version_requirements: !ruby/object:Gem::Requirement
65
50
  requirements:
66
51
  - - "~>"
67
52
  - !ruby/object:Gem::Version
68
- version: '2.9'
53
+ version: '6.0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: bigdecimal
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
69
68
  - !ruby/object:Gem::Dependency
70
69
  name: webmock
71
70
  requirement: !ruby/object:Gem::Requirement
@@ -84,48 +83,76 @@ dependencies:
84
83
  name: webrick
85
84
  requirement: !ruby/object:Gem::Requirement
86
85
  requirements:
87
- - - ">="
86
+ - - "~>"
88
87
  - !ruby/object:Gem::Version
89
- version: '0'
88
+ version: '1.7'
90
89
  type: :development
91
90
  prerelease: false
92
91
  version_requirements: !ruby/object:Gem::Requirement
93
92
  requirements:
94
- - - ">="
93
+ - - "~>"
95
94
  - !ruby/object:Gem::Version
96
- version: '0'
95
+ version: '1.7'
96
+ - !ruby/object:Gem::Dependency
97
+ name: base64
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '0.2'
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '0.2'
97
110
  - !ruby/object:Gem::Dependency
98
111
  name: faraday
99
112
  requirement: !ruby/object:Gem::Requirement
100
113
  requirements:
101
114
  - - ">="
102
115
  - !ruby/object:Gem::Version
103
- version: '0.17'
116
+ version: '1.0'
117
+ - - "<"
118
+ - !ruby/object:Gem::Version
119
+ version: 3.0.0
120
+ type: :runtime
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '1.0'
127
+ - - "<"
128
+ - !ruby/object:Gem::Version
129
+ version: 3.0.0
130
+ - !ruby/object:Gem::Dependency
131
+ name: faraday-retry
132
+ requirement: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '1.0'
104
137
  - - "<"
105
138
  - !ruby/object:Gem::Version
106
- version: 2.0.0
139
+ version: 3.0.0
107
140
  type: :runtime
108
141
  prerelease: false
109
142
  version_requirements: !ruby/object:Gem::Requirement
110
143
  requirements:
111
144
  - - ">="
112
145
  - !ruby/object:Gem::Version
113
- version: '0.17'
146
+ version: '1.0'
114
147
  - - "<"
115
148
  - !ruby/object:Gem::Version
116
- version: 2.0.0
117
- description:
149
+ version: 3.0.0
118
150
  email:
119
151
  - unixcharles@gmail.com
120
152
  executables: []
121
153
  extensions: []
122
154
  extra_rdoc_files: []
123
155
  files:
124
- - ".github/workflows/rubocop.yml"
125
- - ".github/workflows/test.yml"
126
- - ".gitignore"
127
- - ".rspec"
128
- - ".rubocop.yml"
129
156
  - CHANGELOG.md
130
157
  - Gemfile
131
158
  - LICENSE.txt
@@ -133,6 +160,7 @@ files:
133
160
  - Rakefile
134
161
  - acme-client.gemspec
135
162
  - bin/console
163
+ - bin/generate_keystash
136
164
  - bin/release
137
165
  - bin/setup
138
166
  - lib/acme-client.rb
@@ -141,10 +169,12 @@ files:
141
169
  - lib/acme/client/certificate_request/ec_key_patch.rb
142
170
  - lib/acme/client/chain_identifier.rb
143
171
  - lib/acme/client/error.rb
144
- - lib/acme/client/faraday_middleware.rb
172
+ - lib/acme/client/error/rate_limited.rb
173
+ - lib/acme/client/http_client.rb
145
174
  - lib/acme/client/jwk.rb
146
175
  - lib/acme/client/jwk/base.rb
147
176
  - lib/acme/client/jwk/ecdsa.rb
177
+ - lib/acme/client/jwk/hmac.rb
148
178
  - lib/acme/client/jwk/rsa.rb
149
179
  - lib/acme/client/resources.rb
150
180
  - lib/acme/client/resources/account.rb
@@ -152,10 +182,12 @@ files:
152
182
  - lib/acme/client/resources/challenges.rb
153
183
  - lib/acme/client/resources/challenges/base.rb
154
184
  - lib/acme/client/resources/challenges/dns01.rb
185
+ - lib/acme/client/resources/challenges/dns_account01.rb
155
186
  - lib/acme/client/resources/challenges/http01.rb
156
187
  - lib/acme/client/resources/challenges/unsupported_challenge.rb
157
188
  - lib/acme/client/resources/directory.rb
158
189
  - lib/acme/client/resources/order.rb
190
+ - lib/acme/client/resources/renewal_info.rb
159
191
  - lib/acme/client/self_sign_certificate.rb
160
192
  - lib/acme/client/util.rb
161
193
  - lib/acme/client/version.rb
@@ -163,7 +195,6 @@ homepage: http://github.com/unixcharles/acme-client
163
195
  licenses:
164
196
  - MIT
165
197
  metadata: {}
166
- post_install_message:
167
198
  rdoc_options: []
168
199
  require_paths:
169
200
  - lib
@@ -171,15 +202,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
171
202
  requirements:
172
203
  - - ">="
173
204
  - !ruby/object:Gem::Version
174
- version: 2.1.0
205
+ version: 2.3.0
175
206
  required_rubygems_version: !ruby/object:Gem::Requirement
176
207
  requirements:
177
208
  - - ">="
178
209
  - !ruby/object:Gem::Version
179
210
  version: '0'
180
211
  requirements: []
181
- rubygems_version: 3.1.2
182
- signing_key:
212
+ rubygems_version: 3.6.9
183
213
  specification_version: 4
184
214
  summary: Client for the ACME protocol.
185
215
  test_files: []
@@ -1,23 +0,0 @@
1
- name: Lint
2
-
3
- on:
4
- push:
5
- branches: [ master ]
6
- pull_request:
7
- branches: [ master ]
8
-
9
- jobs:
10
- rubocop:
11
- runs-on: ubuntu-latest
12
- strategy:
13
- matrix:
14
- ruby-version: ['3.0']
15
- steps:
16
- - uses: actions/checkout@v2
17
- - name: Set up Ruby
18
- uses: ruby/setup-ruby@v1
19
- with:
20
- ruby-version: ${{ matrix.ruby-version }}
21
- bundler-cache: true # runs 'bundle install' and caches installed gems automatically
22
- - name: Run tests
23
- run: bundle exec rake rubocop
@@ -1,26 +0,0 @@
1
- name: CI
2
-
3
- on:
4
- push:
5
- branches: [ master ]
6
- pull_request:
7
- branches: [ master ]
8
-
9
- jobs:
10
- test:
11
- runs-on: ubuntu-latest
12
- strategy:
13
- matrix:
14
- ruby-version: ['2.6', '2.7', '3.0']
15
- faraday-version: ['~> 0.17.3', '~> 1.7']
16
- env:
17
- FARADAY_VERSION: ${{ matrix.faraday-version }}
18
- steps:
19
- - uses: actions/checkout@v2
20
- - name: Set up Ruby
21
- uses: ruby/setup-ruby@v1
22
- with:
23
- ruby-version: ${{ matrix.ruby-version }}
24
- bundler-cache: true # runs 'bundle install' and caches installed gems automatically
25
- - name: Run tests
26
- run: bundle exec rake spec
data/.gitignore DELETED
@@ -1,12 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
10
- /vendor/bundle
11
- /.idea/
12
- .tool-versions
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --format documentation
2
- --color
3
- --order rand
data/.rubocop.yml DELETED
@@ -1,134 +0,0 @@
1
- AllCops:
2
- TargetRubyVersion: 2.1
3
- Exclude:
4
- - 'bin/*'
5
- - 'vendor/**/*'
6
-
7
- Rails:
8
- Enabled: false
9
-
10
- Layout/AlignParameters:
11
- EnforcedStyle: with_fixed_indentation
12
-
13
- Layout/ElseAlignment:
14
- Enabled: false
15
-
16
- Layout/FirstParameterIndentation:
17
- EnforcedStyle: consistent
18
-
19
- Layout/IndentationWidth:
20
- Enabled: false
21
-
22
- Layout/MultilineOperationIndentation:
23
- Enabled: false
24
-
25
- Layout/SpaceInsideBlockBraces:
26
- Enabled: false
27
-
28
- Lint/AmbiguousOperator:
29
- Enabled: false
30
-
31
- Lint/AssignmentInCondition:
32
- Enabled: false
33
-
34
- Lint/EndAlignment:
35
- Enabled: false
36
-
37
- Lint/UnusedMethodArgument:
38
- AllowUnusedKeywordArguments: true
39
-
40
- Metrics/AbcSize:
41
- Enabled: false
42
-
43
- Metrics/BlockLength:
44
- Enabled: false
45
-
46
- Metrics/ClassLength:
47
- Enabled: false
48
-
49
- Metrics/CyclomaticComplexity:
50
- Enabled: false
51
-
52
- Metrics/LineLength:
53
- Max: 140
54
-
55
- Metrics/MethodLength:
56
- Max: 15
57
- Enabled: false
58
-
59
- Metrics/ParameterLists:
60
- Max: 5
61
- CountKeywordArgs: false
62
-
63
- Metrics/PerceivedComplexity:
64
- Enabled: false
65
-
66
- Security/JSONLoad:
67
- Enabled: false
68
-
69
- Style/AccessorMethodName:
70
- Enabled: false
71
-
72
- Style/Alias:
73
- Enabled: false
74
-
75
- Style/BlockDelimiters:
76
- EnforcedStyle: semantic
77
-
78
- Style/ClassAndModuleChildren:
79
- Enabled: false
80
-
81
- Style/Documentation:
82
- Enabled: false
83
-
84
- Style/DoubleNegation:
85
- Enabled: false
86
-
87
- Style/FileName:
88
- Exclude:
89
- - 'lib/acme-client.rb'
90
-
91
- Style/GlobalVars:
92
- Enabled: false
93
-
94
- Style/GuardClause:
95
- Enabled: false
96
-
97
- Style/IfUnlessModifier:
98
- Enabled: false
99
-
100
- Style/Lambda:
101
- Enabled: false
102
-
103
- Style/ModuleFunction:
104
- Enabled: false
105
-
106
- Style/MultilineBlockChain:
107
- Enabled: false
108
-
109
- Style/MultipleComparison:
110
- Enabled: false
111
-
112
- Style/MutableConstant:
113
- Enabled: false
114
-
115
- Style/ParallelAssignment:
116
- Enabled: false
117
-
118
- Style/PercentLiteralDelimiters:
119
- Enabled: false
120
-
121
- Style/SignalException:
122
- EnforcedStyle: only_raise
123
-
124
- Style/SymbolArray:
125
- Enabled: false
126
-
127
- Style/StringLiterals:
128
- Enabled: single_quotes
129
-
130
- Style/TrailingCommaInArguments:
131
- Enabled: false
132
-
133
- Style/TrivialAccessors:
134
- AllowPredicates: true
@@ -1,111 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Acme::Client::FaradayMiddleware < Faraday::Middleware
4
- attr_reader :env, :response, :client
5
-
6
- CONTENT_TYPE = 'application/jose+json'
7
-
8
- def initialize(app, options)
9
- super(app)
10
- @client = options.fetch(:client)
11
- @mode = options.fetch(:mode)
12
- end
13
-
14
- def call(env)
15
- @env = env
16
- @env[:request_headers]['User-Agent'] = Acme::Client::USER_AGENT
17
- @env[:request_headers]['Content-Type'] = CONTENT_TYPE
18
-
19
- if @env.method != :get
20
- @env.body = client.jwk.jws(header: jws_header, payload: env.body)
21
- end
22
-
23
- @app.call(env).on_complete { |response_env| on_complete(response_env) }
24
- rescue Faraday::TimeoutError, Faraday::ConnectionFailed
25
- raise Acme::Client::Error::Timeout
26
- end
27
-
28
- def on_complete(env)
29
- @env = env
30
-
31
- raise_on_not_found!
32
- store_nonce
33
- env.body = decode_body
34
- env.response_headers['Link'] = decode_link_headers
35
-
36
- return if env.success?
37
-
38
- raise_on_error!
39
- end
40
-
41
- private
42
-
43
- def jws_header
44
- headers = { nonce: pop_nonce, url: env.url.to_s }
45
- headers[:kid] = client.kid if @mode == :kid
46
- headers
47
- end
48
-
49
- def raise_on_not_found!
50
- raise Acme::Client::Error::NotFound, env.url.to_s if env.status == 404
51
- end
52
-
53
- def raise_on_error!
54
- raise error_class, error_message
55
- end
56
-
57
- def error_message
58
- if env.body.is_a? Hash
59
- env.body['detail']
60
- else
61
- "Error message: #{env.body}"
62
- end
63
- end
64
-
65
- def error_class
66
- Acme::Client::Error::ACME_ERRORS.fetch(error_name, Acme::Client::Error)
67
- end
68
-
69
- def error_name
70
- return unless env.body.is_a?(Hash)
71
- return unless env.body.key?('type')
72
- env.body['type']
73
- end
74
-
75
- def decode_body
76
- content_type = env.response_headers['Content-Type'].to_s
77
-
78
- if content_type.start_with?('application/json', 'application/problem+json')
79
- JSON.load(env.body)
80
- else
81
- env.body
82
- end
83
- end
84
-
85
- def decode_link_headers
86
- return unless env.response_headers.key?('Link')
87
- link_header = env.response_headers['Link']
88
- Acme::Client::Util.decode_link_headers(link_header)
89
- end
90
-
91
- def store_nonce
92
- nonce = env.response_headers['replay-nonce']
93
- nonces << nonce if nonce
94
- end
95
-
96
- def pop_nonce
97
- if nonces.empty?
98
- get_nonce
99
- end
100
-
101
- nonces.pop
102
- end
103
-
104
- def get_nonce
105
- client.get_nonce
106
- end
107
-
108
- def nonces
109
- client.nonces
110
- end
111
- end