rotp 6.2.2 → 6.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4ce425976dcf66314bf7217e6c5901c8e4cfd54d78919c058052ec2fc1d8c336
4
- data.tar.gz: 6d0c496074dbe1d6d625e26b0408e33585c9783661077f322e7aa4c3585442c8
3
+ metadata.gz: 4d6cedb1952a6df3b069bb85d94e169d4aeb7878e6e4dde0dcb3fe4a2915a747
4
+ data.tar.gz: 2ad3bb2a4ef2575af9b976da0c59eb22b7e4d8b9e0a44e477329222feb567e09
5
5
  SHA512:
6
- metadata.gz: f4d739d3cc3fed5ec4cdcd04b6c73b8fa30cfdc513d92f4e8c1130f45682b2aa37cd2029f66522c0648a8a8d3a905556e1ac1b42715f6ef6f2e95716dd010422
7
- data.tar.gz: ada9184523ddc259caabedb7429704d7a952b19faf067dbdc6a65d29dbdb57f3ad4a0e4a9e9b07268518f6f239190882b0f9cfc60b39264f7b79b381566c436c
6
+ metadata.gz: 90ea9ec5403ad5e0953582e4a8c17369a0722c3f79d6b5a9d25e1f756a2cc024d01824a7e469a10dd98a7289aef6b34496dc6987565885fa01b3e8d0d6fb8e8c
7
+ data.tar.gz: aa7a667ef8de152cca8cd67df56d0f55a03ac7429f114d619bec1ac05178c015ba6c932f6fd651f27031c860927b81a3dc98bcd53ff7ef4080120a58404cd8f8
@@ -32,6 +32,10 @@
32
32
  // "postCreateCommand": "ruby --version",
33
33
 
34
34
  // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
35
- "remoteUser": "vscode"
35
+ "remoteUser": "vscode",
36
+ "features": {
37
+ "ghcr.io/devcontainers-contrib/features/act:1": {},
38
+ "ghcr.io/devcontainers/features/docker-in-docker:2": {}
39
+ }
36
40
 
37
41
  }
@@ -0,0 +1,36 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - 'main'
7
+ jobs:
8
+ release:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: google-github-actions/release-please-action@v3
12
+ id: release
13
+ with:
14
+ release-type: ruby
15
+ package-name: rotp
16
+ version-file: "lib/rotp/version.rb"
17
+ # Checkout code if release was created
18
+ - uses: actions/checkout@v2
19
+ if: ${{ steps.release.outputs.release_created }}
20
+ # Setup ruby if a release was created
21
+ - uses: ruby/setup-ruby@v1
22
+ with:
23
+ ruby-version: 3.2
24
+ bundler-cache: true
25
+ if: ${{ steps.release.outputs.release_created }}
26
+ - name: Run tests
27
+ run: bundle exec rspec
28
+ if: ${{ steps.release.outputs.release_created }}
29
+ # build gem and add to release
30
+ - name: Upload Release Artifact
31
+ if: ${{ steps.release.outputs.release_created }}
32
+ env:
33
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
34
+ run:
35
+ gem build *.gemspec
36
+ gh release upload ${{ steps.release.outputs.tag_name }} *.gem
@@ -4,7 +4,7 @@ on:
4
4
  push:
5
5
  branches: [ main ]
6
6
  pull_request:
7
- branches: [ main ]
7
+ types: [opened, reopened, synchronize]
8
8
 
9
9
  jobs:
10
10
  test:
@@ -13,15 +13,14 @@ jobs:
13
13
 
14
14
  strategy:
15
15
  matrix:
16
- ruby-version: ['3.1', '3.0', '2.7', '2.3']
16
+ ruby-version: ['3.2', '3.0', '2.7', '2.3', truffleruby-head]
17
17
 
18
18
  steps:
19
19
  - uses: actions/checkout@v3
20
20
  - name: Set up Ruby ${{ matrix.ruby-version }}
21
- uses: ruby/setup-ruby@359bebbc29cbe6c87da6bc9ea3bc930432750108
21
+ uses: ruby/setup-ruby@v1
22
22
  with:
23
23
  ruby-version: ${{ matrix.ruby-version }}
24
- - name: Install dependencies
25
- run: bundle install
24
+ bundler-cache: true
26
25
  - name: Run tests
27
- run: bundle exec rspec
26
+ run: bundle exec rspec
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "6.3.0"
3
+ }
data/CHANGELOG.md CHANGED
@@ -1,27 +1,34 @@
1
- ### Changelog
1
+ # Changelog
2
2
 
3
- ### 6.2.2
3
+ ## [6.3.0](https://github.com/mdp/rotp/compare/v6.2.2...v6.3.0) (2023-08-30)
4
+
5
+
6
+ ### Features
7
+
8
+ * Allow for non-standard provisioning URI params, eg. image/icon ([#91](https://github.com/mdp/rotp/issues/91)) ([45d8aac](https://github.com/mdp/rotp/commit/45d8aac8356424897faf3a0dbda59f88b22df775))
9
+
10
+ ## 6.2.2
4
11
 
5
12
  - Removed `rjust` from `generate_otp` in favor of more time constant version
6
13
 
7
- ### 6.2.1
14
+ ## 6.2.1
8
15
 
9
16
  - Removed old rdoc folder that was triggering a security warning due to an
10
17
  old version of JQuery being included in the HTML docs. This has no impact
11
18
  on the Ruby library.
12
19
 
13
- ### 6.2.0
20
+ ## 6.2.0
14
21
 
15
22
  - Update to expand compatibility with Ruby 3. This was only a change to the
16
23
  gemspec, no code changes were necessary.
17
24
 
18
- ### 6.1.0
25
+ ## 6.1.0
19
26
 
20
27
  - Fixing URI encoding issues again, breaking out into it's own module
21
28
  due to the complexity - closes #100 (@atcruice)
22
29
  - Add docker-compose.yml to help with easier testing
23
30
 
24
- ### 6.0.0
31
+ ## 6.0.0
25
32
 
26
33
  - Dropping support for Ruby <2.3 (Major version bump)
27
34
  - Fix issue when using --enable-frozen-string-literal Ruby option #95 (jeremyevans)
@@ -29,33 +36,33 @@
29
36
  - Update gems (rake, addressable)
30
37
  - Update Travis tests to include Ruby 2.7
31
38
 
32
- ### 5.1.0
39
+ ## 5.1.0
33
40
 
34
41
  - Create `random_base32` to perform `random` to avoid breaking changes
35
42
  - Still needed to bump to 5.x due to Base32 cleanup
36
43
 
37
- ### 5.0.0
44
+ ## 5.0.0
38
45
 
39
46
  - Clean up base32 implementation to match Google Autheticator
40
47
  - BREAKING `Base32.random_base32` renamed to random
41
48
  - The argument is now byte length vs output string length for more precise bit strengths
42
49
 
43
- ### 4.1.0
50
+ ## 4.1.0
44
51
 
45
52
  - Add a digest option to the CLI #83
46
53
  - Fix provisioning URI is README #82
47
54
  - Improvements to docs
48
55
 
49
- ### 4.0.2
56
+ ## 4.0.2
50
57
 
51
58
  - Fix gemspec requirment for Addressable
52
59
 
53
- ### 4.0.1
60
+ ## 4.0.1
54
61
 
55
62
  - Rubocop for style fixes
56
63
  - Replace deprecated URI.encode with Addressable's version
57
64
 
58
- #### 4.0.0
65
+ ## 4.0.0
59
66
 
60
67
  - Simplify API
61
68
  - Remove support for Ruby < 2.0
@@ -65,96 +72,96 @@
65
72
  - `TOTP#at`
66
73
  - `TOTP#now` (first argument)
67
74
 
68
- #### 3.3.1
75
+ ## 3.3.1
69
76
 
70
77
  - Add OpenSSL as a requirement for Ruby 2.5. Fixes #70 & #64
71
78
  - Allow Base32 with padding. #71
72
79
  - Prevent verify with drift being negative #69
73
80
 
74
- #### 3.3.0
81
+ ## 3.3.0
75
82
 
76
83
  - Add digest algorithm parameter for non SHA1 digests - #62 from @btalbot
77
84
 
78
- #### 3.2.0
85
+ ## 3.2.0
79
86
 
80
87
  - Add 'verify_with_drift_and_prior' to prevent prior token use - #58 from @jlfaber
81
88
 
82
- #### 3.1.0
89
+ ## 3.1.0
83
90
 
84
91
  - Add Add digits paramater to provisioning URI. #54 from @sbc100
85
92
 
86
- #### 3.0.1
93
+ ## 3.0.1
87
94
 
88
95
  - Use SecureRandom. See mdp/rotp/pull/52
89
96
 
90
- #### 3.0.0
97
+ ## 3.0.0
91
98
 
92
99
  - Provisioning URL includes issuer label per RFC 5234 See mdp/rotp/pull/51
93
100
 
94
- #### 2.1.2
101
+ ## 2.1.2
95
102
 
96
103
  - Remove string literals to prepare immutable strings in Ruby 3.0
97
104
 
98
- #### 2.1.1
105
+ ## 2.1.1
99
106
 
100
107
  - Reorder the params for Windows Phone Authenticator - #43
101
108
 
102
- #### 2.1.0
109
+ ## 2.1.0
103
110
 
104
111
  - Add a CLI for generating OTP's mdp/rotp/pull/35
105
112
 
106
- #### 2.0.0
113
+ ## 2.0.0
107
114
 
108
115
  - Move to only comparing string OTP's.
109
116
 
110
- #### 1.7.0
117
+ ## 1.7.0
111
118
 
112
119
  - Move to only comparing string OTP's. See mdp/rotp/issues/32 - Moved to 2.0.0 - yanked from RubyGems
113
120
 
114
- #### 1.6.1
121
+ ## 1.6.1
115
122
 
116
123
  - Remove deprecation warning in Ruby 2.1.0 (@ylansegal)
117
124
  - Add Ruby 2.0 and 2.1 to Travis
118
125
 
119
- #### 1.6.0
126
+ ## 1.6.0
120
127
 
121
128
  - Add verify_with_retries to HOTP
122
129
  - Fix 'cgi' require and global DEFAULT_INTERVAL
123
130
 
124
- #### 1.5.0
131
+ ## 1.5.0
125
132
 
126
133
  - Add support for "issuer" parameter on provisioning url
127
134
  - Add support for "period/interval" parameter on provisioning url
128
135
 
129
- #### 1.4.6
136
+ ## 1.4.6
130
137
 
131
138
  - Revert to previous Base32
132
139
 
133
- #### 1.4.5
140
+ ## 1.4.5
134
141
 
135
142
  - Fix and test correct implementation of Base32
136
143
 
137
- #### 1.4.4
144
+ ## 1.4.4
138
145
 
139
146
  - Fix issue with base32 decoding of strings in a length that's not a multiple of 8
140
147
 
141
- #### 1.4.3
148
+ ## 1.4.3
142
149
 
143
150
  - Bugfix on padding
144
151
 
145
- #### 1.4.2
152
+ ## 1.4.2
146
153
 
147
154
  - Better padding options (Pad the output with leading 0's)
148
155
 
149
- #### 1.4.1
156
+ ## 1.4.1
150
157
 
151
158
  - Clean up drift logic
152
159
 
153
- #### 1.4.0
160
+ ## 1.4.0
154
161
 
155
162
  - Added clock drift support via 'verify_with_drift' for TOTP
156
163
 
157
- ####1.3.0
164
+ ## 1.3.0
158
165
 
159
166
  - Added support for Ruby 1.9.x
160
167
  - Removed dependency on Base32
@@ -1,4 +1,4 @@
1
- FROM ruby:3.0-rc
1
+ FROM ruby:3.0
2
2
 
3
3
  RUN mkdir -p /usr/src/app
4
4
  WORKDIR /usr/src/app
data/README.md CHANGED
@@ -149,7 +149,7 @@ totp = ROTP::TOTP.new("base32secret3232", issuer: "My Service")
149
149
  totp.provisioning_uri("alice@google.com") # => 'otpauth://totp/My%20Service:alice%40google.com?secret=base32secret3232&issuer=My%20Service'
150
150
 
151
151
  hotp = ROTP::HOTP.new("base32secret3232", issuer: "My Service")
152
- hotp.provisioning_uri("alice@google.com", 0) # => 'otpauth://hotp/alice%40google.com?secret=base32secret3232&counter=0'
152
+ hotp.provisioning_uri("alice@google.com", 0) # => 'otpauth://hotp/My%20Service:alice%40google.com?secret=base32secret3232&issuer=My%20Service&counter=0'
153
153
  ```
154
154
 
155
155
  This can then be rendered as a QR Code which the user can scan using their mobile phone and the appropriate application.
data/docker-compose.yml CHANGED
@@ -28,10 +28,10 @@ services:
28
28
  volumes:
29
29
  - "./lib:/usr/src/app/lib"
30
30
  - "./spec:/usr/src/app/spec"
31
- ruby_3_0_rc:
31
+ ruby_3_0:
32
32
  build:
33
33
  context: .
34
- dockerfile: Dockerfile-3.0-rc
34
+ dockerfile: Dockerfile-3.0
35
35
  volumes:
36
36
  - "./lib:/usr/src/app/lib"
37
37
  - "./spec:/usr/src/app/spec"
data/lib/rotp/hotp.rb CHANGED
@@ -24,8 +24,8 @@ module ROTP
24
24
  # @param [String] name of the account
25
25
  # @param [Integer] initial_count starting counter value, defaults to 0
26
26
  # @return [String] provisioning uri
27
- def provisioning_uri(name, initial_count = 0)
28
- OTP::URI.new(self, account_name: name, counter: initial_count).to_s
27
+ def provisioning_uri(name = nil, initial_count = 0)
28
+ OTP::URI.new(self, account_name: name || @name, counter: initial_count).to_s
29
29
  end
30
30
  end
31
31
  end
data/lib/rotp/otp/uri.rb CHANGED
@@ -2,9 +2,9 @@ module ROTP
2
2
  class OTP
3
3
  # https://github.com/google/google-authenticator/wiki/Key-Uri-Format
4
4
  class URI
5
- def initialize(otp, account_name:, counter: nil)
5
+ def initialize(otp, account_name: nil, counter: nil)
6
6
  @otp = otp
7
- @account_name = account_name
7
+ @account_name = account_name || ''
8
8
  @counter = counter
9
9
  end
10
10
 
@@ -34,8 +34,6 @@ module ROTP
34
34
  end
35
35
 
36
36
  def issuer
37
- return if @otp.is_a?(HOTP)
38
-
39
37
  @otp.issuer&.strip&.tr(':', '_')
40
38
  end
41
39
 
@@ -56,6 +54,7 @@ module ROTP
56
54
  period: period,
57
55
  counter: counter,
58
56
  }
57
+ .merge(@otp.provisioning_params)
59
58
  .reject { |_, v| v.nil? }
60
59
  .map { |k, v| "#{k}=#{ERB::Util.url_encode(v)}" }
61
60
  .join('&')
data/lib/rotp/otp.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module ROTP
2
2
  class OTP
3
- attr_reader :secret, :digits, :digest
3
+ attr_reader :secret, :digits, :digest, :name, :issuer, :provisioning_params
4
4
  DEFAULT_DIGITS = 6
5
5
 
6
6
  # @param [String] secret in the form of base32
@@ -10,10 +10,22 @@ module ROTP
10
10
  # @option options digest [String] (sha1)
11
11
  # Digest used in the HMAC.
12
12
  # Google Authenticate only supports 'sha1' currently
13
+ # @option options name [String]
14
+ # The name of the account for the OTP.
15
+ # Used in the provisioning URL
16
+ # @option options issuer [String]
17
+ # The issuer of the OTP.
18
+ # Used in the provisioning URL
19
+ # @option options provisioning_params [Hash] ({})
20
+ # Additional non-standard params you may want appended to the
21
+ # provisioning URI. Ex. `image: 'https://example.com/icon.png'`
13
22
  # @returns [OTP] OTP instantiation
14
23
  def initialize(s, options = {})
15
24
  @digits = options[:digits] || DEFAULT_DIGITS
16
25
  @digest = options[:digest] || 'sha1'
26
+ @name = options[:name]
27
+ @issuer = options[:issuer]
28
+ @provisioning_params = options[:provisioning_params] || {}
17
29
  @secret = s
18
30
  end
19
31
 
data/lib/rotp/totp.rb CHANGED
@@ -53,8 +53,8 @@ module ROTP
53
53
  # to provision the Google Authenticator app
54
54
  # @param [String] name of the account
55
55
  # @return [String] provisioning URI
56
- def provisioning_uri(name)
57
- OTP::URI.new(self, account_name: name).to_s
56
+ def provisioning_uri(name = nil)
57
+ OTP::URI.new(self, account_name: name || @name).to_s
58
58
  end
59
59
 
60
60
  private
data/lib/rotp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module ROTP
2
- VERSION = '6.2.2'.freeze
2
+ VERSION = '6.3.0'.freeze
3
3
  end
@@ -0,0 +1,12 @@
1
+ {
2
+ "packages": {
3
+ ".": {
4
+ "changelog-path": "CHANGELOG.md",
5
+ "bump-minor-pre-major": false,
6
+ "bump-patch-for-minor-pre-major": false,
7
+ "draft": false,
8
+ "prerelease": false
9
+ }
10
+ },
11
+ "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json"
12
+ }
@@ -108,7 +108,15 @@ RSpec.describe ROTP::HOTP do
108
108
  end
109
109
 
110
110
  describe '#provisioning_uri' do
111
- it 'accepts the account name' do
111
+ let(:hotp) { ROTP::HOTP.new('a' * 32, name: "m@mdp.im") }
112
+ let(:params) { CGI.parse URI.parse(uri).query }
113
+
114
+ it 'created from the otp instance data' do
115
+ expect(hotp.provisioning_uri())
116
+ .to eq 'otpauth://hotp/m%40mdp.im?secret=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&counter=0'
117
+ end
118
+
119
+ it 'allow passing a name to override the OTP name' do
112
120
  expect(hotp.provisioning_uri('mark@percival'))
113
121
  .to eq 'otpauth://hotp/mark%40percival?secret=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&counter=0'
114
122
  end
@@ -117,5 +125,29 @@ RSpec.describe ROTP::HOTP do
117
125
  expect(hotp.provisioning_uri('mark@percival', 17))
118
126
  .to eq 'otpauth://hotp/mark%40percival?secret=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&counter=17'
119
127
  end
128
+
129
+ context 'with non-standard provisioning_params' do
130
+ let(:hotp) { ROTP::HOTP.new('a' * 32, digits: 8, provisioning_params: {image: 'https://example.com/icon.png'}) }
131
+ let(:uri) { hotp.provisioning_uri("mark@percival") }
132
+
133
+ it 'includes the issuer as parameter' do
134
+ expect(params['image'].first).to eq 'https://example.com/icon.png'
135
+ end
136
+ end
137
+
138
+ context "with an issuer" do
139
+ let(:hotp) { ROTP::HOTP.new('a' * 32, name: "m@mdp.im", issuer: "Example.com") }
140
+
141
+ it 'created from the otp instance data' do
142
+ expect(hotp.provisioning_uri())
143
+ .to eq 'otpauth://hotp/Example.com:m%40mdp.im?secret=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&issuer=Example.com&counter=0'
144
+ end
145
+
146
+ it 'allow passing a name to override the OTP name' do
147
+ expect(hotp.provisioning_uri('mark@percival'))
148
+ .to eq 'otpauth://hotp/Example.com:mark%40percival?secret=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&issuer=Example.com&counter=0'
149
+ end
150
+ end
151
+
120
152
  end
121
153
  end
@@ -2,11 +2,12 @@ require 'spec_helper'
2
2
 
3
3
  TEST_TIME = Time.utc 2016, 9, 23, 9 # 2016-09-23 09:00:00 UTC
4
4
  TEST_TOKEN = '082630'.freeze
5
+ TEST_SECRET = 'JBSWY3DPEHPK3PXP'
5
6
 
6
7
  RSpec.describe ROTP::TOTP do
7
8
  let(:now) { TEST_TIME }
8
9
  let(:token) { TEST_TOKEN }
9
- let(:totp) { ROTP::TOTP.new 'JBSWY3DPEHPK3PXP' }
10
+ let(:totp) { ROTP::TOTP.new TEST_SECRET }
10
11
 
11
12
  describe '#at' do
12
13
  let(:token) { totp.at now }
@@ -220,11 +221,52 @@ RSpec.describe ROTP::TOTP do
220
221
  end
221
222
  end
222
223
 
224
+
223
225
  describe '#provisioning_uri' do
224
- it 'accepts the account name' do
225
- expect(totp.provisioning_uri('mark@percival'))
226
- .to eq 'otpauth://totp/mark%40percival?secret=JBSWY3DPEHPK3PXP'
226
+ let(:params) { CGI.parse URI.parse(uri).query }
227
+
228
+ context "with a provided name on the TOTP instance" do
229
+ let(:totp) { ROTP::TOTP.new(TEST_SECRET, name: "m@mdp.im") }
230
+ it 'creates a provisioning uri from the OTP instance' do
231
+ expect(totp.provisioning_uri())
232
+ .to eq 'otpauth://totp/m%40mdp.im?secret=JBSWY3DPEHPK3PXP'
233
+ end
234
+
235
+ it 'allow passing a name to override the OTP name' do
236
+ expect(totp.provisioning_uri('mark@percival'))
237
+ .to eq 'otpauth://totp/mark%40percival?secret=JBSWY3DPEHPK3PXP'
238
+ end
239
+ end
240
+
241
+ context 'with non-standard provisioning_params' do
242
+ let(:totp) {
243
+ ROTP::TOTP.new(TEST_SECRET,
244
+ provisioning_params: { image: 'https://example.com/icon.png' }
245
+ )
246
+ }
247
+ let(:uri) { totp.provisioning_uri("mark@percival") }
248
+
249
+ it 'includes the issuer as parameter' do
250
+ expect(params['image'].first).to eq 'https://example.com/icon.png'
251
+ end
252
+
227
253
  end
254
+
255
+ context "with an issuer" do
256
+ let(:totp) { ROTP::TOTP.new(TEST_SECRET, name: "m@mdp.im", issuer: "Example.com") }
257
+
258
+ it 'creates a provisioning uri from the OTP instance' do
259
+ expect(totp.provisioning_uri())
260
+ .to eq 'otpauth://totp/Example.com:m%40mdp.im?secret=JBSWY3DPEHPK3PXP&issuer=Example.com'
261
+ end
262
+
263
+ it 'allow passing a name to override the OTP name' do
264
+ expect(totp.provisioning_uri('mark@percival'))
265
+ .to eq 'otpauth://totp/Example.com:mark%40percival?secret=JBSWY3DPEHPK3PXP&issuer=Example.com'
266
+ end
267
+
268
+ end
269
+
228
270
  end
229
271
 
230
272
  describe '#now' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rotp
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.2.2
4
+ version: 6.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Percival
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-13 00:00:00.000000000 Z
11
+ date: 2023-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -77,12 +77,14 @@ files:
77
77
  - ".devcontainer/Dockerfile"
78
78
  - ".devcontainer/devcontainer.json"
79
79
  - ".dockerignore"
80
+ - ".github/workflows/release.yaml"
80
81
  - ".github/workflows/test.yaml"
81
82
  - ".gitignore"
83
+ - ".release-please-manifest.json"
82
84
  - CHANGELOG.md
83
85
  - Dockerfile-2.3
84
86
  - Dockerfile-2.7
85
- - Dockerfile-3.0-rc
87
+ - Dockerfile-3.0
86
88
  - Gemfile
87
89
  - Guardfile
88
90
  - LICENSE
@@ -98,6 +100,7 @@ files:
98
100
  - lib/rotp/otp/uri.rb
99
101
  - lib/rotp/totp.rb
100
102
  - lib/rotp/version.rb
103
+ - release-please-config.json
101
104
  - rotp.gemspec
102
105
  - spec/lib/rotp/arguments_spec.rb
103
106
  - spec/lib/rotp/base32_spec.rb
@@ -125,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
128
  - !ruby/object:Gem::Version
126
129
  version: '0'
127
130
  requirements: []
128
- rubygems_version: 3.3.26
131
+ rubygems_version: 3.4.10
129
132
  signing_key:
130
133
  specification_version: 4
131
134
  summary: A Ruby library for generating and verifying one time passwords