argon2 2.0.3 → 2.1.1

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: ff5c2dcd38a21e51982265caf83a721327a8cff1a09acc5c51312ce92d2f5619
4
- data.tar.gz: ab787b9e4ee2a039e286f5b96ebb65da86845749c7003de1b43061a2da2c3699
3
+ metadata.gz: 933cdf134b0ac4110cda1cd9a8108a75c0dc6d80e6d2cb68446d93b1898f298a
4
+ data.tar.gz: bcb1c0d25d2a074c59ad5002e2078d0aa344480022f9a658eb297dcbd16b1eb6
5
5
  SHA512:
6
- metadata.gz: 1b47bef62063b2871cd0c6235fe38e76b892b9c4b888d0b9798ccf39a6cc7daa2f4539b6a4fa1829635e5970401a59b822bcd1d1f72bfb71b9d3c79781ecf1ae
7
- data.tar.gz: 476a21e271c981101b51cd0fe32ce6182635994273895de8f57c26224f9f4e4fd883a1a40139fa95c9672a2cb8dea920bce9e362e01fc0893cacfd3b28ce9625
6
+ metadata.gz: d17d3f5c0a9162dca09db8ab7a9926becc50ace4527d2ad705db80d44ffdc528d3110853885ee5c042b5142c5cd619fd8c93d6a7dec75fc70d41fbb40661f259
7
+ data.tar.gz: 91fb841e70a470bf760871690c216ae4f305442a063b4c5a5c861fe97510c226db5f8db92cc65e8a93ea459fd42ac735bd216e2dfb333fc334f1e3f21cba3bbf
@@ -1,32 +1,70 @@
1
1
  name: Test Suite
2
2
 
3
- on: push
3
+ # Run against all commits and pull requests.
4
+ on: [ push, pull_request ]
4
5
 
5
6
  jobs:
6
- test:
7
+ test_matrix:
7
8
 
8
- runs-on: ubuntu-latest
9
9
  strategy:
10
+ fail-fast: false
10
11
  matrix:
11
- ruby-version: ['3.0', 2.7, 2.5]
12
+ os:
13
+ - ubuntu
14
+ - macos
15
+ ruby:
16
+ - 2.6
17
+ - 2.7
18
+ - 3.0
19
+ - head
20
+
21
+ runs-on: ${{ matrix.os }}-latest
22
+
23
+ env:
24
+ TEST_CHECKS: 100
25
+
26
+ steps:
27
+ - uses: actions/checkout@v2
28
+ - name: Set up Ruby
29
+ uses: ruby/setup-ruby@v1
30
+ with:
31
+ ruby-version: ${{ matrix.ruby }}
32
+ bundler-cache: true
33
+ - name: Build Argon2 C library
34
+ run: bin/setup
35
+ - name: Test Argon2 C library
36
+ run: bin/test
37
+ - name: Run tests
38
+ run: bundle exec rake test
39
+ - name: Coveralls Parallel
40
+ uses: coverallsapp/github-action@master
41
+ with:
42
+ github-token: ${{ secrets.GITHUB_TOKEN }}
43
+ flag-name: run-${{ matrix.ruby-version }}
44
+ parallel: true
45
+
46
+ rubocop:
47
+
48
+ runs-on: ubuntu-latest
12
49
 
13
50
  steps:
14
51
  - uses: actions/checkout@v2
15
- - name: Set up Ruby ${{ matrix.ruby-version }}
52
+ - name: Set up Ruby
16
53
  uses: ruby/setup-ruby@v1
17
54
  with:
18
- ruby-version: ${{ matrix.ruby-version }}
19
- - name: Install dependencies
20
- run: bundle install
21
- - name: Init submodules
22
- run: git submodule update --init --recursive
23
- - name: Build C library
24
- run: bin/setup
25
- - name: Test C library
26
- run: cd ext/argon2_wrap/ && make test && cd ../..
27
- - name: Run tests
28
- run: bundle exec rake
29
- - name: Coveralls
30
- uses: coverallsapp/github-action@master
31
- with:
32
- github-token: ${{ secrets.GITHUB_TOKEN }}
55
+ ruby-version: 3.0
56
+ bundler-cache: true
57
+ - name: Run rubocop
58
+ run: bundle exec rake rubocop
59
+
60
+ finish:
61
+ runs-on: ubuntu-latest
62
+ needs: [ test_matrix, rubocop ]
63
+ steps:
64
+ - name: Coveralls Finished
65
+ uses: coverallsapp/github-action@master
66
+ with:
67
+ github-token: ${{ secrets.GITHUB_TOKEN }}
68
+ parallel-finished: true
69
+ - name: Wait for status checks
70
+ run: echo "All Green!"
data/.rubocop.yml CHANGED
@@ -7,6 +7,11 @@ Metrics/CyclomaticComplexity:
7
7
  Metrics/PerceivedComplexity:
8
8
  Enabled: false
9
9
 
10
+ Metrics/ParameterLists:
11
+ Max: 5
12
+ Exclude:
13
+ - 'lib/argon2/ffi_engine.rb'
14
+
10
15
  Layout/LineLength:
11
16
  Max: 160
12
17
  Exclude:
@@ -205,4 +210,27 @@ Style/RedundantArgument: # (new in 1.4)
205
210
  Enabled: true
206
211
  Style/SwapValues: # (new in 1.1)
207
212
  Enabled: true
208
-
213
+ Gemspec/DateAssignment: # (new in 1.10)
214
+ Enabled: true
215
+ Lint/DeprecatedConstants: # (new in 1.8)
216
+ Enabled: true
217
+ Lint/LambdaWithoutLiteralBlock: # (new in 1.8)
218
+ Enabled: true
219
+ Lint/NumberedParameterAssignment: # (new in 1.9)
220
+ Enabled: true
221
+ Lint/OrAssignmentToConstant: # (new in 1.9)
222
+ Enabled: true
223
+ Lint/RedundantDirGlobSort: # (new in 1.8)
224
+ Enabled: true
225
+ Lint/SymbolConversion: # (new in 1.9)
226
+ Enabled: true
227
+ Lint/TripleQuotes: # (new in 1.9)
228
+ Enabled: true
229
+ Style/EndlessMethod: # (new in 1.8)
230
+ Enabled: true
231
+ Style/HashConversion: # (new in 1.10)
232
+ Enabled: true
233
+ Style/IfWithBooleanLiteralBranches: # (new in 1.9)
234
+ Enabled: true
235
+ Style/StringChars: # (new in 1.12)
236
+ Enabled: true
data/Changelog.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## v2.1.0: 2021-04-09
2
+ - Introduce RBS types
3
+ - Expose p parameter
4
+
1
5
  ## v2.0.3: 2021-01-02
2
6
  - Address potential memory leak. Unlikely to be exploitable.
3
7
 
data/README.md CHANGED
@@ -17,7 +17,6 @@ This project has several key tenets to its design:
17
17
  * Errors from the C interface are raised as Exceptions. There are a lot of exception classes, but they tend to relate to things like very broken input, and code bugs. Calls to this library should generally not require a rescue.
18
18
  * Test suites should aim for 100% code coverage.
19
19
  * Default work values should not be considered constants. I will increase them from time to time.
20
- * Not exposing the threads parameter is a design choice. I believe there is significant risk, and minimal gain in using a value other than '1'. Four threads on a four core box completely ties up the entire server to process one user logon. If you want more security, increase m_cost.
21
20
  * Many Rubocop errors have been disabled, but any commit should avoid new alerts or demonstrate their necessity.
22
21
 
23
22
  ## Usage
@@ -31,7 +30,7 @@ require 'argon2'
31
30
  To generate a hash using specific time and memory cost:
32
31
 
33
32
  ```ruby
34
- hasher = Argon2::Password.new(t_cost: 2, m_cost: 16)
33
+ hasher = Argon2::Password.new(t_cost: 2, m_cost: 16, p_cost: 1)
35
34
  hasher.create("password")
36
35
  => "$argon2i$v=19$m=65536,t=2,p=1$jL7lLEAjDN+pY2cG1N8D2g$iwj1ueduCvm6B9YVjBSnAHu+6mKzqGmDW745ALR38Uo"
37
36
  ```
@@ -43,7 +42,6 @@ hasher = Argon2::Password.new
43
42
  hasher.create("password")
44
43
  ```
45
44
 
46
- If you follow this pattern, it is important to create a new `Argon2::Password` every time you generate a hash, in order to ensure a unique salt. See [issue 23](https://github.com/technion/ruby-argon2/issues/23) for more information.
47
45
  Alternatively, use this shortcut:
48
46
 
49
47
  ```ruby
@@ -72,6 +70,17 @@ argon = Argon2::Password.new(t_cost: 2, m_cost: 16, secret: KEY)
72
70
  myhash = argon.create("A password")
73
71
  Argon2::Password.verify_password("A password", myhash, KEY)
74
72
  ```
73
+ ## Ruby 3 Types
74
+ I am now shipping signatures in sig/. The following command sets up a testing interface.
75
+ ```sh
76
+ RBS_TEST_TARGET="Argon2::*" bundle exec ruby -r rbs/test/setup bin/console
77
+ ```
78
+ You should also be able to pass Steep checks:
79
+ ```sh
80
+ steep check
81
+ ```
82
+ These tools will need to be installed manually at this time and will be added to Gemfiles after much further testing.
83
+
75
84
  ## Version 2.0 - Argon 2id
76
85
  Version 2.x upwards will now default to the Argon2id hash format. This is consistent with current recommendations regarding Argon2 usage. It remains capable of verifying existing hashes.
77
86
 
@@ -80,7 +89,7 @@ Version 1.0.0 included a major version bump over 0.1.4 due to several breaking c
80
89
 
81
90
  The second of these is that the reference Argon2 implementation introduced an algorithm change, which produces a hash which is not backwards compatible. This is documented on [this PR on the C library](https://github.com/P-H-C/phc-winner-argon2/pull/115). This was a regrettable requirement to address a security concern in the algorithm itself. The two versions of the Argon2 algorithm are numbered 1.0 and 1.3 respectively.
82
91
 
83
- Shortly after this, version 1.0.0 of this gem was released with this breaking change, supporting only Argon2 v1.3. Further time later, the official encoding format was updated, with a spec that included the version number, and the library introduced backward compatibility. This should remove the likelihood of such breaking changes in future. Version 1.1.0 will silently introduce the current version number in hashes, in order to avoid a further compatibility break.
92
+ Shortly after this, version 1.0.0 of this gem was released with this breaking change, supporting only Argon2 v1.3. Further time later, the official encoding format was updated, with a spec that included the version number, and the library introduced backward compatibility. This should remove the likelihood of such breaking changes in future.
84
93
 
85
94
 
86
95
  ## Platform Issues
@@ -123,17 +132,19 @@ Any form of contribution is appreciated, however, please review [CONTRIBUTING.md
123
132
 
124
133
  ## Building locally/Tests
125
134
 
126
- To build the gem locally, you will need to checkout the submodule and build it manually:
135
+ To build the gem locally, you will need to run the setup script:
136
+
137
+ ```shell
138
+ ./bin/setup
139
+ ```
140
+
141
+ You can test that the Argon2 C library was properly imported by running the C test suite:
127
142
 
128
143
  ```shell
129
- git submodule update --init --recursive
130
- bundle install
131
- cd ext/argon2_wrap/
132
- make
133
- cd ../..
144
+ ./bin/test
134
145
  ```
135
146
 
136
- The test harness includes a property based test. To more strenuously perform this test, you can tune the iterations parameter:
147
+ The ruby wrapper test suite includes a property based test. To more strenuously perform this test, you can tune the iterations parameter:
137
148
 
138
149
  ```shell
139
150
  TEST_CHECKS=10000 bundle exec rake test
data/Steepfile ADDED
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ target :lib do
4
+ signature "sig"
5
+
6
+ check "argon2.rb"
7
+ check "lib" # Directory name
8
+ ignore "lib/argon2/ffi_engine.rb"
9
+ ignore "lib/argon2/errors.rb"
10
+ end
11
+
12
+ target :spec do
13
+ signature "sig", "sig-private"
14
+
15
+ check "spec"
16
+ end
data/argon2.gemspec CHANGED
@@ -11,6 +11,8 @@ Gem::Specification.new do |spec|
11
11
  spec.authors = ["Technion"]
12
12
  spec.email = ["technion@lolware.net"]
13
13
 
14
+ spec.required_ruby_version = '>= 2.6.0'
15
+
14
16
  spec.summary = 'Argon2 Password hashing binding'
15
17
  spec.description = 'Argon2 FFI binding'
16
18
  spec.homepage = 'https://github.com/technion/ruby-argon2'
@@ -31,5 +33,6 @@ Gem::Specification.new do |spec|
31
33
  spec.add_development_dependency "rubocop", '~> 1.7'
32
34
  spec.add_development_dependency "simplecov", '~> 0.20'
33
35
  spec.add_development_dependency "simplecov-lcov", '~> 0.8'
36
+ spec.add_development_dependency "steep", "~> 0.43.1"
34
37
  spec.extensions << 'ext/argon2_wrap/extconf.rb'
35
38
  end
data/bin/console CHANGED
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require "bundler/setup"
5
- require "argon2"
4
+ require 'bundler/setup'
5
+ require 'argon2'
6
6
 
7
7
  # You can add fixtures and/or initialization code here to make experimenting
8
8
  # with your gem easier. You can also use a different console, if you like.
9
9
 
10
10
  # (If you use this, don't forget to add pry to your Gemfile!)
11
- # require "pry"
11
+ # require 'pry'
12
12
  # Pry.start
13
13
 
14
- require "irb"
14
+ require 'irb'
15
15
  IRB.start
data/bin/setup CHANGED
@@ -1,10 +1,14 @@
1
1
  #!/bin/bash
2
+ # Exit the script immediately if a command fails
2
3
  set -euo pipefail
4
+ # Internal Field Separator
3
5
  IFS=$'\n\t'
4
6
 
7
+ # Initialize Git Submodules
8
+ git submodule update --init --recursive
9
+
10
+ # Build the Argon2 C Library. Git submodules must be initialized first!
5
11
  bundle install
6
12
  cd ext/argon2_wrap/
7
13
  make
8
14
  cd ../..
9
-
10
- # Do any other automated setup that you need to do here
data/bin/test ADDED
@@ -0,0 +1,10 @@
1
+ #!/bin/bash
2
+ # Exit the script immediately if a command fails
3
+ set -euo pipefail
4
+ # Internal Field Separator
5
+ IFS=$'\n\t'
6
+
7
+ # Run the Argon2 C Library tests
8
+ cd ext/argon2_wrap/
9
+ make test
10
+ cd ../..
@@ -62,13 +62,13 @@ module Argon2
62
62
  result.unpack('H*').join
63
63
  end
64
64
 
65
- def self.hash_argon2id(password, salt, t_cost, m_cost, out_len = nil)
65
+ def self.hash_argon2id(password, salt, t_cost, m_cost, p_cost, out_len = nil)
66
66
  out_len = (out_len || Constants::OUT_LEN).to_i
67
67
  raise ArgonHashFail, "Invalid output length" if out_len < 1
68
68
 
69
69
  result = ''
70
70
  FFI::MemoryPointer.new(:char, out_len) do |buffer|
71
- ret = Ext.argon2id_hash_raw(t_cost, 1 << m_cost, 1, password,
71
+ ret = Ext.argon2id_hash_raw(t_cost, 1 << m_cost, p_cost, password,
72
72
  password.length, salt, salt.length,
73
73
  buffer, out_len)
74
74
  raise ArgonHashFail, ERRORS[ret.abs] unless ret.zero?
@@ -78,7 +78,7 @@ module Argon2
78
78
  result.unpack('H*').join
79
79
  end
80
80
 
81
- def self.hash_argon2id_encode(password, salt, t_cost, m_cost, secret)
81
+ def self.hash_argon2id_encode(password, salt, t_cost, m_cost, p_cost, secret)
82
82
  result = ''
83
83
  secretlen = secret.nil? ? 0 : secret.bytesize
84
84
  passwordlen = password.nil? ? 0 : password.bytesize
@@ -87,7 +87,7 @@ module Argon2
87
87
  FFI::MemoryPointer.new(:char, Constants::ENCODE_LEN) do |buffer|
88
88
  ret = Ext.argon2_wrap(buffer, password, passwordlen,
89
89
  salt, salt.length, t_cost, (1 << m_cost),
90
- 1, secret, secretlen)
90
+ p_cost, secret, secretlen)
91
91
  raise ArgonHashFail, ERRORS[ret.abs] unless ret.zero?
92
92
 
93
93
  result = buffer.read_string(Constants::ENCODE_LEN)
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Argon2
4
+ ##
5
+ # Get the values from an Argon2 compatible string.
6
+ #
7
+ class HashFormat
8
+ attr_reader :variant, :version, :t_cost, :m_cost, :p_cost, :salt, :checksum
9
+
10
+ # FIXME: Reduce complexity/AbcSize
11
+ # rubocop:disable Metrics/AbcSize
12
+ def initialize(digest)
13
+ digest = digest.to_s unless digest.is_a?(String)
14
+
15
+ raise Argon2::ArgonHashFail, 'Invalid Argon2 hash' unless self.class.valid_hash?(digest)
16
+
17
+ _, variant, version, config, salt, checksum = digest.split('$')
18
+ # Regex magic to extract the values for each setting
19
+ version = /v=(\d+)/.match(version)
20
+ t_cost = /t=(\d+),/.match(config)
21
+ m_cost = /m=(\d+),/.match(config)
22
+ p_cost = /p=(\d+)/.match(config)
23
+
24
+ # Make sure none of the values are missing
25
+ raise Argon2::ArgonHashFail, 'Invalid Argon2 version' if version.nil?
26
+ raise Argon2::ArgonHashFail, 'Invalid Argon2 time cost' if t_cost.nil?
27
+ raise Argon2::ArgonHashFail, 'Invalid Argon2 memory cost' if m_cost.nil?
28
+ raise Argon2::ArgonHashFail, 'Invalid Argon2 parallelism cost' if p_cost.nil?
29
+
30
+ @variant = variant.to_str
31
+ @version = version[1].to_i
32
+ @t_cost = t_cost[1].to_i
33
+ @m_cost = m_cost[1].to_i
34
+ @p_cost = p_cost[1].to_i
35
+ @salt = salt.to_str
36
+ @checksum = checksum.to_str
37
+ end
38
+ # rubocop:enable Metrics/AbcSize
39
+
40
+ ##
41
+ # Checks whether a given digest is a valid Argon2 hash.
42
+ #
43
+ # Supports 1 and argon2id formats.
44
+ #
45
+ def self.valid_hash?(digest)
46
+ /^\$argon2(id?|d).{,113}/ =~ digest
47
+ end
48
+ end
49
+ end
@@ -3,5 +3,5 @@
3
3
  # Standard Gem version constant.
4
4
 
5
5
  module Argon2
6
- VERSION = "2.0.3"
6
+ VERSION = "2.1.1"
7
7
  end
data/lib/argon2.rb CHANGED
@@ -5,6 +5,7 @@ require 'argon2/ffi_engine'
5
5
  require 'argon2/version'
6
6
  require 'argon2/errors'
7
7
  require 'argon2/engine'
8
+ require 'argon2/hash_format'
8
9
 
9
10
  module Argon2
10
11
  # Front-end API for the Argon2 module.
@@ -16,7 +17,10 @@ module Argon2
16
17
  @m_cost = options[:m_cost] || 16
17
18
  raise ArgonHashFail, "Invalid m_cost" if @m_cost < 1 || @m_cost > 31
18
19
 
19
- @salt = options[:salt_do_not_supply] || Engine.saltgen
20
+ @p_cost = options[:p_cost] || 1
21
+ raise ArgonHashFail, "Invalid p_cost" if @p_cost < 1 || @p_cost > 8
22
+
23
+ @salt_do_not_supply = options[:salt_do_not_supply]
20
24
  @secret = options[:secret]
21
25
  end
22
26
 
@@ -24,19 +28,21 @@ module Argon2
24
28
  raise ArgonHashFail, "Invalid password (expected string)" unless
25
29
  pass.is_a?(String)
26
30
 
31
+ # Ensure salt is freshly generated unless it was intentionally supplied.
32
+ salt = @salt_do_not_supply || Engine.saltgen
33
+
27
34
  Argon2::Engine.hash_argon2id_encode(
28
- pass, @salt, @t_cost, @m_cost, @secret)
35
+ pass, salt, @t_cost, @m_cost, @p_cost, @secret)
29
36
  end
30
37
 
31
38
  # Helper class, just creates defaults and calls hash()
32
- def self.create(pass)
33
- argon2 = Argon2::Password.new
39
+ def self.create(pass, options = {})
40
+ argon2 = Argon2::Password.new(options)
34
41
  argon2.create(pass)
35
42
  end
36
43
 
37
- # Supports 1 and argon2id formats.
38
44
  def self.valid_hash?(hash)
39
- /^\$argon2(id?|d).{,113}/ =~ hash
45
+ Argon2::HashFormat.valid_hash?(hash)
40
46
  end
41
47
 
42
48
  def self.verify_password(pass, hash, secret = nil)
data/sig/argon2.rbs ADDED
@@ -0,0 +1,16 @@
1
+ # Classes
2
+ module Argon2
3
+ class Password
4
+ @t_cost: Integer
5
+ @m_cost: Integer
6
+ @p_cost: Integer
7
+ @salt: nil | String
8
+ @secret: nil | String
9
+
10
+ def initialize: (?Hash[Symbol, Integer] options) -> (nil | String)
11
+ def create: (String pass) -> untyped
12
+ def self.create: (String pass) -> untyped
13
+ def self.valid_hash?: (string hash) -> Integer?
14
+ def self.verify_password: (untyped pass, untyped hash, ?nil secret) -> untyped
15
+ end
16
+ end
data/sig/constants.rbs ADDED
@@ -0,0 +1,8 @@
1
+ # Classes
2
+ module Argon2
3
+ module Constants
4
+ SALT_LEN: Integer
5
+ OUT_LEN: Integer
6
+ ENCODE_LEN: Integer
7
+ end
8
+ end
data/sig/version.rbs ADDED
@@ -0,0 +1,4 @@
1
+ # Classes
2
+ module Argon2
3
+ VERSION: String
4
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: argon2
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Technion
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-02 00:00:00.000000000 Z
11
+ date: 2021-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0.8'
125
+ - !ruby/object:Gem::Dependency
126
+ name: steep
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 0.43.1
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 0.43.1
125
139
  description: Argon2 FFI binding
126
140
  email:
127
141
  - technion@lolware.net
@@ -130,7 +144,6 @@ extensions:
130
144
  - ext/argon2_wrap/extconf.rb
131
145
  extra_rdoc_files: []
132
146
  files:
133
- - ".github/workflows/rubocop.yml"
134
147
  - ".github/workflows/ruby.yml"
135
148
  - ".gitignore"
136
149
  - ".gitmodules"
@@ -141,9 +154,11 @@ files:
141
154
  - LICENSE.txt
142
155
  - README.md
143
156
  - Rakefile
157
+ - Steepfile
144
158
  - argon2.gemspec
145
159
  - bin/console
146
160
  - bin/setup
161
+ - bin/test
147
162
  - ext/argon2_wrap/Makefile
148
163
  - ext/argon2_wrap/argon_wrap.c
149
164
  - ext/argon2_wrap/extconf.rb
@@ -233,7 +248,11 @@ files:
233
248
  - lib/argon2/engine.rb
234
249
  - lib/argon2/errors.rb
235
250
  - lib/argon2/ffi_engine.rb
251
+ - lib/argon2/hash_format.rb
236
252
  - lib/argon2/version.rb
253
+ - sig/argon2.rbs
254
+ - sig/constants.rbs
255
+ - sig/version.rbs
237
256
  homepage: https://github.com/technion/ruby-argon2
238
257
  licenses:
239
258
  - MIT
@@ -246,14 +265,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
246
265
  requirements:
247
266
  - - ">="
248
267
  - !ruby/object:Gem::Version
249
- version: '0'
268
+ version: 2.6.0
250
269
  required_rubygems_version: !ruby/object:Gem::Requirement
251
270
  requirements:
252
271
  - - ">="
253
272
  - !ruby/object:Gem::Version
254
273
  version: '0'
255
274
  requirements: []
256
- rubygems_version: 3.1.2
275
+ rubygems_version: 3.2.21
257
276
  signing_key:
258
277
  specification_version: 4
259
278
  summary: Argon2 Password hashing binding
@@ -1,16 +0,0 @@
1
- name: Rubocop
2
-
3
- # Run this workflow every time a new commit pushed to your repository
4
- on: push
5
-
6
- jobs:
7
-
8
- rubocop:
9
- name: Rubocopchecks
10
- runs-on: ubuntu-latest
11
- steps:
12
- - name: Run Rubocop
13
- uses: gimenete/rubocop-action@1.0
14
- env:
15
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
16
-