rotp 6.2.2 → 6.3.0

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 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