Skip to content

Commit 15ad832

Browse files
tenshiAMDtechnion
authored andcommitted
Update Rubocop configuration
1 parent 592dd48 commit 15ad832

19 files changed

+119
-73
lines changed

.rubocop.yml

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,26 @@
1-
21
Metrics/AbcSize:
32
Max: 20
3+
44
Metrics/CyclomaticComplexity:
55
Enabled: false
6+
67
Metrics/PerceivedComplexity:
78
Enabled: false
9+
810
Metrics/LineLength:
911
Max: 160
12+
Exclude:
13+
- 'test/low_level_test.rb'
1014

1115
Metrics/MethodLength:
1216
Max: 24
17+
Exclude:
18+
- 'test/low_level_test.rb'
1319

14-
Layout/AlignParameters:
20+
Layout/ParameterAlignment:
1521
Enabled: false
1622

17-
Layout/AlignArray:
23+
Layout/ArrayAlignment:
1824
Enabled: false
1925

2026
# Configuration parameters: Exclude.
@@ -37,7 +43,7 @@ Style/HashSyntax:
3743

3844
# Offense count: 1
3945
# Cop supports --auto-correct.
40-
Layout/IndentArray:
46+
Layout/FirstArrayElementIndentation:
4147
Exclude:
4248
- 'lib/argon2/errors.rb'
4349

@@ -61,3 +67,5 @@ Layout/MultilineMethodCallBraceLayout:
6167
- 'lib/argon2.rb'
6268
- 'test/low_level_test.rb'
6369

70+
Gemspec/RequiredRubyVersion:
71+
Enabled: false

Gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
source 'https://rubygems.org'
24

35
# Specify your gem's dependencies in argon2.gemspec

Rakefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
require "bundler/gem_tasks"
24
require "rake/testtask"
35
require 'rubocop/rake_task'

argon2.gemspec

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
lib = File.expand_path('../lib', __FILE__)
1+
# frozen_string_literal: true
2+
3+
lib = File.expand_path('lib', __dir__)
24

35
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
46
require 'argon2/version'
@@ -27,6 +29,6 @@ Gem::Specification.new do |spec|
2729
spec.add_development_dependency "coveralls", '~> 0.8'
2830
spec.add_development_dependency "minitest", '~> 5.8'
2931
spec.add_development_dependency "rake", '~> 10.4', '>= 10.4.2'
30-
spec.add_development_dependency "rubocop", '~> 0.49'
32+
spec.add_development_dependency "rubocop", '>= 0.91'
3133
spec.extensions << 'ext/argon2_wrap/extconf.rb'
3234
end

bin/console

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#!/usr/bin/env ruby
2+
# frozen_string_literal: true
23

34
require "bundler/setup"
45
require "argon2"

ext/argon2_wrap/extconf.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1+
# frozen_string_literal: true
12
#I must admit I have no understanding of why this empty file works.

lib/argon2.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@ class Password
1212
def initialize(options = {})
1313
@t_cost = options[:t_cost] || 2
1414
raise ArgonHashFail, "Invalid t_cost" if @t_cost < 1 || @t_cost > 750
15+
1516
@m_cost = options[:m_cost] || 16
1617
raise ArgonHashFail, "Invalid m_cost" if @m_cost < 1 || @m_cost > 31
18+
1719
@salt = options[:salt_do_not_supply] || Engine.saltgen
1820
@secret = options[:secret]
1921
end
@@ -23,7 +25,7 @@ def create(pass)
2325
pass.is_a?(String)
2426

2527
Argon2::Engine.hash_argon2id_encode(
26-
pass, @salt, @t_cost, @m_cost, @secret)
28+
pass, @salt, @t_cost, @m_cost, @secret)
2729
end
2830

2931
# Helper class, just creates defaults and calls hash()

lib/argon2/ffi_engine.rb

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
require 'ffi'
24
require 'ffi-compiler/loader'
35

@@ -12,30 +14,33 @@ module Ext
1214
# const size_t pwdlen, const void *salt,
1315
# const size_t saltlen, void *hash, const size_t hashlen);
1416

15-
attach_function :argon2i_hash_raw, [
16-
:uint, :uint, :uint, :pointer,
17-
:size_t, :pointer, :size_t, :pointer, :size_t], :int, :blocking => true
17+
attach_function :argon2i_hash_raw, %i[
18+
uint uint uint pointer
19+
size_t pointer size_t pointer size_t
20+
], :int, :blocking => true
1821

1922
# int argon2id_hash_raw(const uint32_t t_cost, const uint32_t m_cost,
2023
# const uint32_t parallelism, const void *pwd,
2124
# const size_t pwdlen, const void *salt,
2225
# const size_t saltlen, void *hash, const size_t hashlen)
23-
attach_function :argon2id_hash_raw, [
24-
:uint, :uint, :uint, :pointer,
25-
:size_t, :pointer, :size_t, :pointer, :size_t], :int, :blocking => true
26+
attach_function :argon2id_hash_raw, %i[
27+
uint uint uint pointer
28+
size_t pointer size_t pointer size_t
29+
], :int, :blocking => true
2630

2731
# void argon2_wrap(uint8_t *out, char *pwd, size_t pwdlen,
2832
# uint8_t *salt, uint32_t saltlen, uint32_t t_cost,
2933
# uint32_t m_cost, uint32_t lanes,
3034
# uint8_t *secret, uint32_t secretlen)
31-
attach_function :argon2_wrap, [
32-
:pointer, :pointer, :size_t, :pointer, :uint, :uint,
33-
:uint, :uint, :pointer, :size_t], :int, :blocking => true
35+
attach_function :argon2_wrap, %i[
36+
pointer pointer size_t pointer uint uint
37+
uint uint pointer size_t
38+
], :int, :blocking => true
3439

3540
# int argon2i_verify(const char *encoded, const void *pwd,
3641
# const size_t pwdlen);
37-
attach_function :wrap_argon2_verify, [:pointer, :pointer, :size_t,
38-
:pointer, :size_t], :int, :blocking => true
42+
attach_function :wrap_argon2_verify, %i[pointer pointer size_t
43+
pointer size_t], :int, :blocking => true
3944
end
4045

4146
# The engine class shields users from the FFI interface.
@@ -44,12 +49,14 @@ class Engine
4449
def self.hash_argon2i(password, salt, t_cost, m_cost, out_len = nil)
4550
out_len = (out_len || Constants::OUT_LEN).to_i
4651
raise ArgonHashFail, "Invalid output length" if out_len < 1
52+
4753
result = ''
4854
FFI::MemoryPointer.new(:char, out_len) do |buffer|
4955
ret = Ext.argon2i_hash_raw(t_cost, 1 << m_cost, 1, password,
50-
password.length, salt, salt.length,
51-
buffer, out_len)
56+
password.length, salt, salt.length,
57+
buffer, out_len)
5258
raise ArgonHashFail, ERRORS[ret.abs] unless ret.zero?
59+
5360
result = buffer.read_string(out_len)
5461
end
5562
result.unpack('H*').join
@@ -58,12 +65,14 @@ def self.hash_argon2i(password, salt, t_cost, m_cost, out_len = nil)
5865
def self.hash_argon2id(password, salt, t_cost, m_cost, out_len = nil)
5966
out_len = (out_len || Constants::OUT_LEN).to_i
6067
raise ArgonHashFail, "Invalid output length" if out_len < 1
68+
6169
result = ''
6270
FFI::MemoryPointer.new(:char, out_len) do |buffer|
6371
ret = Ext.argon2id_hash_raw(t_cost, 1 << m_cost, 1, password,
64-
password.length, salt, salt.length,
65-
buffer, out_len)
72+
password.length, salt, salt.length,
73+
buffer, out_len)
6674
raise ArgonHashFail, ERRORS[ret.abs] unless ret.zero?
75+
6776
result = buffer.read_string(out_len)
6877
end
6978
result.unpack('H*').join
@@ -73,14 +82,14 @@ def self.hash_argon2id_encode(password, salt, t_cost, m_cost, secret)
7382
result = ''
7483
secretlen = secret.nil? ? 0 : secret.bytesize
7584
passwordlen = password.nil? ? 0 : password.bytesize
76-
if salt.length != Constants::SALT_LEN
77-
raise ArgonHashFail, "Invalid salt size"
78-
end
85+
raise ArgonHashFail, "Invalid salt size" if salt.length != Constants::SALT_LEN
86+
7987
FFI::MemoryPointer.new(:char, Constants::ENCODE_LEN) do |buffer|
8088
ret = Ext.argon2_wrap(buffer, password, passwordlen,
81-
salt, salt.length, t_cost, (1 << m_cost),
82-
1, secret, secretlen)
89+
salt, salt.length, t_cost, (1 << m_cost),
90+
1, secret, secretlen)
8391
raise ArgonHashFail, ERRORS[ret.abs] unless ret.zero?
92+
8493
result = buffer.read_string(Constants::ENCODE_LEN)
8594
end
8695
result.delete "\0"
@@ -93,6 +102,7 @@ def self.argon2_verify(pwd, hash, secret)
93102
ret = Ext.wrap_argon2_verify(hash, pwd, passwordlen, secret, secretlen)
94103
return false if ERRORS[ret.abs] == 'ARGON2_DECODING_FAIL'
95104
raise ArgonHashFail, ERRORS[ret.abs] unless ret.zero?
105+
96106
true
97107
end
98108
end

lib/argon2/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
# Standard Gem version constant.
44

55
module Argon2
6-
VERSION = "2.0.2".freeze
6+
VERSION = "2.0.2"
77
end

test/api_test.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
require 'test_helper'
24

35
module Argon2

test/engine_test.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
require 'test_helper'
24

35
class EngineTest < Minitest::Test

test/error_test.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
require 'test_helper'
24

35
class Argon2ErrorTest < Minitest::Test
@@ -10,7 +12,7 @@ def test_ffi_fail
1012
def test_memory_too_small
1113
assert_raises Argon2::ArgonHashFail do
1214
Argon2::Engine.hash_argon2id_encode("password",
13-
"somesalt\0\0\0\0\0\0\0\0", 2, 1, nil)
15+
"somesalt\0\0\0\0\0\0\0\0", 2, 1, nil)
1416
end
1517
end
1618

@@ -23,7 +25,7 @@ def test_salt_size
2325
def test_passwd_null
2426
assert_raises Argon2::ArgonHashFail do
2527
Argon2::Engine.hash_argon2id_encode(nil, "somesalt\0\0\0\0\0\0\0\0", 2,
26-
16, nil)
28+
16, nil)
2729
end
2830
end
2931
end

test/key_test.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
require 'test_helper'
44

55
class LowLevelArgon2Test < Minitest::Test
6-
KEY = "a magic key".freeze
7-
PASS = "random password".freeze
6+
KEY = "a magic key"
7+
PASS = "random password"
88
def test_key_hash
99
# Default hash
1010
argon = Argon2::Password.new(t_cost: 2, m_cost: 16)

test/legacy.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1+
# frozen_string_literal: true
2+
13
require 'test_helper'
24
# frozen_string_literal: true
35

46
class Legacy < Minitest::Test
5-
HASH_1_0 = "$argon2i$m=65536,t=1,p=1$c29tZXNhbHQAAAAAAAAAAA$+r0d29hqEB0yasKr55ZgICsQGSkl0v0kgwhd+U3wyRo".freeze
6-
HASH_1_1 = "$argon2i$v=19$m=65536,t=1,p=1$c29tZXNhbHQAAAAAAAAAAA$+r0d29hqEB0yasKr55ZgICsQGSkl0v0kgwhd+U3wyRo".freeze
7-
HASH_0 = "$argon2i$v=16$m=256,t=2,p=1$c29tZXNhbHQ$/U3YPXYsSb3q9XxHvc0MLxur+GP960kN9j7emXX8zwY".freeze
7+
HASH_1_0 = "$argon2i$m=65536,t=1,p=1$c29tZXNhbHQAAAAAAAAAAA$+r0d29hqEB0yasKr55ZgICsQGSkl0v0kgwhd+U3wyRo"
8+
HASH_1_1 = "$argon2i$v=19$m=65536,t=1,p=1$c29tZXNhbHQAAAAAAAAAAA$+r0d29hqEB0yasKr55ZgICsQGSkl0v0kgwhd+U3wyRo"
9+
HASH_0 = "$argon2i$v=16$m=256,t=2,p=1$c29tZXNhbHQ$/U3YPXYsSb3q9XxHvc0MLxur+GP960kN9j7emXX8zwY"
810
def test_legacy_hashes
911
# These are the hash formats for 1.0 and 1.1 of this gem.
1012
assert Argon2::Password.verify_password(PASS, HASH_1_0)

test/low_level_test.rb

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
require 'test_helper'
24

35
# Vectors in this suite taken from test.c in reference
@@ -9,62 +11,62 @@ def test_that_it_has_a_version_number
911

1012
def test_ffi_vector
1113
assert_equal Argon2::Engine.hash_argon2i(
12-
"password", "somesalt\0\0\0\0\0\0\0\0", 2, 16),
13-
'1c7eeef9e0e969b3024722fc864a1ca9f6ca20da73f9bf3f1731881beae2039e'
14+
"password", "somesalt\0\0\0\0\0\0\0\0", 2, 16),
15+
'1c7eeef9e0e969b3024722fc864a1ca9f6ca20da73f9bf3f1731881beae2039e'
1416

1517
assert_equal Argon2::Engine.hash_argon2i(
16-
"password", "somesalt\0\0\0\0\0\0\0\0", 2, 18),
17-
'5c6dfd2712110cf88f1426059b01d87f8210d5368da0e7ee68586e9d4af4954b'
18+
"password", "somesalt\0\0\0\0\0\0\0\0", 2, 18),
19+
'5c6dfd2712110cf88f1426059b01d87f8210d5368da0e7ee68586e9d4af4954b'
1820

1921
assert_equal Argon2::Engine.hash_argon2i(
20-
"password", "somesalt\0\0\0\0\0\0\0\0", 2, 8),
21-
'dfebf9d4eadd6859f4cc6a9bb20043fd9da7e1e36bdacdbb05ca569f463269f8'
22+
"password", "somesalt\0\0\0\0\0\0\0\0", 2, 8),
23+
'dfebf9d4eadd6859f4cc6a9bb20043fd9da7e1e36bdacdbb05ca569f463269f8'
2224

2325
assert_equal Argon2::Engine.hash_argon2i(
24-
"password", "somesalt\0\0\0\0\0\0\0\0", 1, 16),
25-
'fabd1ddbd86a101d326ac2abe79660202b10192925d2fd2483085df94df0c91a'
26+
"password", "somesalt\0\0\0\0\0\0\0\0", 1, 16),
27+
'fabd1ddbd86a101d326ac2abe79660202b10192925d2fd2483085df94df0c91a'
2628

2729
assert_equal Argon2::Engine.hash_argon2i(
28-
"password", "somesalt\0\0\0\0\0\0\0\0", 4, 16),
29-
'b3b4cb3d6e2c1cb1e7bffdb966ab3ceafae701d6b7789c3f1e6c6b22d82d99d5'
30+
"password", "somesalt\0\0\0\0\0\0\0\0", 4, 16),
31+
'b3b4cb3d6e2c1cb1e7bffdb966ab3ceafae701d6b7789c3f1e6c6b22d82d99d5'
3032

3133
assert_equal Argon2::Engine.hash_argon2i(
32-
"differentpassword", "somesalt\0\0\0\0\0\0\0\0", 2, 16),
33-
'b2db9d7c0d1288951aec4b6e1cd3835ea29a7da2ac13e6f48554a26b127146f9'
34+
"differentpassword", "somesalt\0\0\0\0\0\0\0\0", 2, 16),
35+
'b2db9d7c0d1288951aec4b6e1cd3835ea29a7da2ac13e6f48554a26b127146f9'
3436

3537
assert_equal Argon2::Engine.hash_argon2i(
36-
"password", "diffsalt\0\0\0\0\0\0\0\0", 2, 16),
37-
'bb6686865f2c1093f70f543c9535f807d5b42d5dc6d71f14a4a7a291913e05e0'
38+
"password", "diffsalt\0\0\0\0\0\0\0\0", 2, 16),
39+
'bb6686865f2c1093f70f543c9535f807d5b42d5dc6d71f14a4a7a291913e05e0'
3840

3941
assert_equal Argon2::Engine.hash_argon2i(
40-
"password", "somesaltsomesalt", 2, 16, 16),
41-
'85d58a069b81f7606dc772810d00496d'
42+
"password", "somesaltsomesalt", 2, 16, 16),
43+
'85d58a069b81f7606dc772810d00496d'
4244

4345
assert_equal Argon2::Engine.hash_argon2id(
44-
"password", "somesaltsomesalt", 2, 16),
45-
'fc33b78139231d34b71626bd6245c1d72efa190ad605c3d8166a72adcedfa2c2'
46+
"password", "somesaltsomesalt", 2, 16),
47+
'fc33b78139231d34b71626bd6245c1d72efa190ad605c3d8166a72adcedfa2c2'
4648
end
4749

4850
def test_encoded_hash
4951
assert_equal Argon2::Engine.hash_argon2id_encode(
50-
"password", "somesalt\0\0\0\0\0\0\0\0", 2, 16, nil),
51-
'$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQAAAAAAAAAAA$syf8TzB9pvMIGtFhvRATHW1nX43iP+FLaaTXnqpyMrY'
52+
"password", "somesalt\0\0\0\0\0\0\0\0", 2, 16, nil),
53+
'$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQAAAAAAAAAAA$syf8TzB9pvMIGtFhvRATHW1nX43iP+FLaaTXnqpyMrY'
5254

5355
assert_equal Argon2::Engine.hash_argon2id_encode(
54-
"password", "somesalt\0\0\0\0\0\0\0\0", 2, 8, nil),
55-
'$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQAAAAAAAAAAA$TCsNUutWgv3lowstIasFJbdiamKiq8qPUdz2wSvQ4rw'
56+
"password", "somesalt\0\0\0\0\0\0\0\0", 2, 8, nil),
57+
'$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQAAAAAAAAAAA$TCsNUutWgv3lowstIasFJbdiamKiq8qPUdz2wSvQ4rw'
5658

5759
assert_equal Argon2::Engine.hash_argon2id_encode(
58-
"password", "somesalt\0\0\0\0\0\0\0\0", 1, 16, nil),
59-
'$argon2id$v=19$m=65536,t=1,p=1$c29tZXNhbHQAAAAAAAAAAA$b7sLmBJ4YGj/yOjMnUDWC1dvrtZr7EPdMT6zB9Fq0pk'
60+
"password", "somesalt\0\0\0\0\0\0\0\0", 1, 16, nil),
61+
'$argon2id$v=19$m=65536,t=1,p=1$c29tZXNhbHQAAAAAAAAAAA$b7sLmBJ4YGj/yOjMnUDWC1dvrtZr7EPdMT6zB9Fq0pk'
6062

6163
assert_equal Argon2::Engine.hash_argon2id_encode(
62-
"differentpassword", "somesalt\0\0\0\0\0\0\0\0", 2, 16, nil),
63-
'$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQAAAAAAAAAAA$0bDR2fpiZutijzxlxrjLnqnCSmtG1/reR4QNcavfKLk'
64+
"differentpassword", "somesalt\0\0\0\0\0\0\0\0", 2, 16, nil),
65+
'$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQAAAAAAAAAAA$0bDR2fpiZutijzxlxrjLnqnCSmtG1/reR4QNcavfKLk'
6466

6567
assert_equal Argon2::Engine.hash_argon2id_encode(
66-
"password", "diffsalt\0\0\0\0\0\0\0\0", 2, 16, nil),
67-
'$argon2id$v=19$m=65536,t=2,p=1$ZGlmZnNhbHQAAAAAAAAAAA$vm1qQXZQ+/MgT2Y+Go7XnxtA9dJz3wotjfg0itOgKlY'
68+
"password", "diffsalt\0\0\0\0\0\0\0\0", 2, 16, nil),
69+
'$argon2id$v=19$m=65536,t=2,p=1$ZGlmZnNhbHQAAAAAAAAAAA$vm1qQXZQ+/MgT2Y+Go7XnxtA9dJz3wotjfg0itOgKlY'
6870
end
6971

7072
def test_verify

0 commit comments

Comments
 (0)