argon2 2.2.0 → 2.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +2 -2
- data/README.md +35 -8
- data/Steepfile +1 -1
- data/argon2.gemspec +1 -1
- data/lib/argon2/profiles.rb +50 -0
- data/lib/argon2/version.rb +1 -1
- data/lib/argon2.rb +27 -7
- data/sig/argon2.rbs +29 -9
- data/sig/engine.rbs +9 -0
- data/sig/errors.rbs +6 -0
- data/sig/ffi.rbs +3 -3
- data/sig/hash_format.rbs +31 -0
- metadata +9 -88
- data/ext/argon2_wrap/argon_wrap.o +0 -0
- data/ext/phc-winner-argon2/.git +0 -1
- data/ext/phc-winner-argon2/.gitattributes +0 -10
- data/ext/phc-winner-argon2/.gitignore +0 -22
- data/ext/phc-winner-argon2/.travis.yml +0 -25
- data/ext/phc-winner-argon2/Argon2.sln +0 -158
- data/ext/phc-winner-argon2/CHANGELOG.md +0 -32
- data/ext/phc-winner-argon2/LICENSE +0 -314
- data/ext/phc-winner-argon2/Makefile +0 -255
- data/ext/phc-winner-argon2/Package.swift +0 -46
- data/ext/phc-winner-argon2/README.md +0 -303
- data/ext/phc-winner-argon2/appveyor.yml +0 -25
- data/ext/phc-winner-argon2/argon2-specs.pdf +0 -0
- data/ext/phc-winner-argon2/export.sh +0 -7
- data/ext/phc-winner-argon2/include/argon2.h +0 -437
- data/ext/phc-winner-argon2/kats/argon2d +0 -12304
- data/ext/phc-winner-argon2/kats/argon2d.shasum +0 -1
- data/ext/phc-winner-argon2/kats/argon2d_v16 +0 -12304
- data/ext/phc-winner-argon2/kats/argon2d_v16.shasum +0 -1
- data/ext/phc-winner-argon2/kats/argon2i +0 -12304
- data/ext/phc-winner-argon2/kats/argon2i.shasum +0 -1
- data/ext/phc-winner-argon2/kats/argon2i_v16 +0 -12304
- data/ext/phc-winner-argon2/kats/argon2i_v16.shasum +0 -1
- data/ext/phc-winner-argon2/kats/argon2id +0 -12304
- data/ext/phc-winner-argon2/kats/argon2id.shasum +0 -1
- data/ext/phc-winner-argon2/kats/argon2id_v16 +0 -12304
- data/ext/phc-winner-argon2/kats/argon2id_v16.shasum +0 -1
- data/ext/phc-winner-argon2/kats/check-sums.ps1 +0 -42
- data/ext/phc-winner-argon2/kats/check-sums.sh +0 -13
- data/ext/phc-winner-argon2/kats/test.ps1 +0 -50
- data/ext/phc-winner-argon2/kats/test.sh +0 -49
- data/ext/phc-winner-argon2/latex/IEEEtran.cls +0 -6347
- data/ext/phc-winner-argon2/latex/Makefile +0 -18
- data/ext/phc-winner-argon2/latex/argon2-specs.tex +0 -920
- data/ext/phc-winner-argon2/latex/pics/argon2-par.pdf +0 -0
- data/ext/phc-winner-argon2/latex/pics/compression.pdf +0 -0
- data/ext/phc-winner-argon2/latex/pics/generic.pdf +0 -0
- data/ext/phc-winner-argon2/latex/pics/power-distribution.jpg +0 -0
- data/ext/phc-winner-argon2/latex/tradeoff.bib +0 -822
- data/ext/phc-winner-argon2/libargon2.pc.in +0 -18
- data/ext/phc-winner-argon2/man/argon2.1 +0 -57
- data/ext/phc-winner-argon2/src/argon2.c +0 -452
- data/ext/phc-winner-argon2/src/bench.c +0 -111
- data/ext/phc-winner-argon2/src/blake2/blake2-impl.h +0 -156
- data/ext/phc-winner-argon2/src/blake2/blake2.h +0 -89
- data/ext/phc-winner-argon2/src/blake2/blake2b.c +0 -390
- data/ext/phc-winner-argon2/src/blake2/blamka-round-opt.h +0 -471
- data/ext/phc-winner-argon2/src/blake2/blamka-round-ref.h +0 -56
- data/ext/phc-winner-argon2/src/core.c +0 -648
- data/ext/phc-winner-argon2/src/core.h +0 -228
- data/ext/phc-winner-argon2/src/encoding.c +0 -463
- data/ext/phc-winner-argon2/src/encoding.h +0 -57
- data/ext/phc-winner-argon2/src/genkat.c +0 -213
- data/ext/phc-winner-argon2/src/genkat.h +0 -51
- data/ext/phc-winner-argon2/src/opt.c +0 -283
- data/ext/phc-winner-argon2/src/ref.c +0 -194
- data/ext/phc-winner-argon2/src/run.c +0 -337
- data/ext/phc-winner-argon2/src/test.c +0 -289
- data/ext/phc-winner-argon2/src/thread.c +0 -57
- data/ext/phc-winner-argon2/src/thread.h +0 -67
- data/ext/phc-winner-argon2/vs2015/Argon2Opt/Argon2Opt.vcxproj +0 -231
- data/ext/phc-winner-argon2/vs2015/Argon2Opt/Argon2Opt.vcxproj.filters +0 -69
- data/ext/phc-winner-argon2/vs2015/Argon2OptBench/Argon2OptBench.vcxproj +0 -231
- data/ext/phc-winner-argon2/vs2015/Argon2OptBench/Argon2OptBench.vcxproj.filters +0 -69
- data/ext/phc-winner-argon2/vs2015/Argon2OptDll/Argon2OptDll.vcxproj +0 -230
- data/ext/phc-winner-argon2/vs2015/Argon2OptDll/Argon2OptDll.vcxproj.filters +0 -66
- data/ext/phc-winner-argon2/vs2015/Argon2OptGenKAT/Argon2OptGenKAT.vcxproj +0 -244
- data/ext/phc-winner-argon2/vs2015/Argon2OptGenKAT/Argon2OptGenKAT.vcxproj.filters +0 -72
- data/ext/phc-winner-argon2/vs2015/Argon2OptTestCI/Argon2OptTestCI.vcxproj +0 -235
- data/ext/phc-winner-argon2/vs2015/Argon2OptTestCI/Argon2OptTestCI.vcxproj.filters +0 -69
- data/ext/phc-winner-argon2/vs2015/Argon2Ref/Argon2Ref.vcxproj +0 -243
- data/ext/phc-winner-argon2/vs2015/Argon2Ref/Argon2Ref.vcxproj.filters +0 -69
- data/ext/phc-winner-argon2/vs2015/Argon2RefBench/Argon2RefBench.vcxproj +0 -231
- data/ext/phc-winner-argon2/vs2015/Argon2RefBench/Argon2RefBench.vcxproj.filters +0 -69
- data/ext/phc-winner-argon2/vs2015/Argon2RefDll/Argon2RefDll.vcxproj +0 -230
- data/ext/phc-winner-argon2/vs2015/Argon2RefDll/Argon2RefDll.vcxproj.filters +0 -66
- data/ext/phc-winner-argon2/vs2015/Argon2RefGenKAT/Argon2RefGenKAT.vcxproj +0 -232
- data/ext/phc-winner-argon2/vs2015/Argon2RefGenKAT/Argon2RefGenKAT.vcxproj.filters +0 -72
- data/ext/phc-winner-argon2/vs2015/Argon2RefTestCI/Argon2RefTestCI.vcxproj +0 -231
- data/ext/phc-winner-argon2/vs2015/Argon2RefTestCI/Argon2RefTestCI.vcxproj.filters +0 -69
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8cbb2f441975a9655ec4d22d828eb1c974dbe517743bf09986879ce8e1d6d9fa
|
4
|
+
data.tar.gz: 6eaf7422106042a80eb3278b140ad48a6e08c02ca25cab661cc50eaada001556
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '07964785e432965f553ee8178693c4a13125ec31339e8c2cdc1ad5504eba39b50a25db25708cb3930a4f297ff6108f2bc7eca900edebe35173d73100e09cbe24'
|
7
|
+
data.tar.gz: fe6b19cf9f1fa720a707286eec6897146bc544ff8cc5cca8da48e7d06c077c157b639cfcc285d3619ff6e97fd8e8fff6813793c1f7ad07c3f0ae88e44d44e17b
|
data/.github/workflows/ruby.yml
CHANGED
data/README.md
CHANGED
@@ -27,26 +27,50 @@ Require this in your Gemfile like a typical Ruby gem:
|
|
27
27
|
require 'argon2'
|
28
28
|
```
|
29
29
|
|
30
|
-
To
|
30
|
+
To utilise default costs ([RFC 9106](https://www.rfc-editor.org/rfc/rfc9106#name-parameter-choice)'s lower-memory, second recommended parameters):
|
31
31
|
|
32
32
|
```ruby
|
33
|
-
hasher = Argon2::Password.new
|
33
|
+
hasher = Argon2::Password.new
|
34
34
|
hasher.create("password")
|
35
|
-
=> "$argon2i$v=19$m=65536,t=2,p=1$jL7lLEAjDN+pY2cG1N8D2g$iwj1ueduCvm6B9YVjBSnAHu+6mKzqGmDW745ALR38Uo"
|
36
35
|
```
|
37
36
|
|
38
|
-
|
37
|
+
Alternatively, use this shortcut:
|
39
38
|
|
40
39
|
```ruby
|
41
|
-
|
40
|
+
Argon2::Password.create("password")
|
41
|
+
=> "$argon2i$v=19$m=65536,t=2,p=1$61qkSyYNbUgf3kZH3GtHRw$4CQff9AZ0lWd7uF24RKMzqEiGpzhte1Hp8SO7X8bAew"
|
42
|
+
```
|
43
|
+
|
44
|
+
If your use case can afford the higher memory consumption/cost, you can/should specify to use RFC 9106's first recommended parameters:
|
45
|
+
|
46
|
+
```ruby
|
47
|
+
hasher = Argon2::Password.new(profile: :rfc_9106_high_memory)
|
42
48
|
hasher.create("password")
|
49
|
+
=> "$argon2id$v=19$m=2097152,t=1,p=4$LvHa74Yax7uCWPN7P6/oQQ$V1dMt4dfuYSmLpwUTpKUzg+RrXjWzWHlE6NLowBzsAg"
|
43
50
|
```
|
44
51
|
|
45
|
-
|
52
|
+
To generate a hash using one of the other `Argon::Profiles` names:
|
46
53
|
|
47
54
|
```ruby
|
48
|
-
|
49
|
-
|
55
|
+
# Only use this profile in testing env, it's unsafe!
|
56
|
+
hasher = Argon2::Password.new(profile: :unsafe_cheapest)
|
57
|
+
hasher.create("password")
|
58
|
+
=> "$argon2id$v=19$m=8,t=1,p=1$HZZHG3oTqptqgrxWxFic5g$EUokHMU6m6w2AVIEk1MpZBhVwW9Nj+ESRjPwTBVtWpY"
|
59
|
+
```
|
60
|
+
|
61
|
+
The list of named cost profiles are:
|
62
|
+
|
63
|
+
* `:rfc_9106_high_memory`: the first recommended option but is expensive
|
64
|
+
* `:rfc_9106_low_memory`: the second recommended option (default)
|
65
|
+
* `:pre_rfc_9106`: the previous default costs for `ruby-argon2` <= v2.2.0, before offering RFC 9106 named profiles
|
66
|
+
* `:unsafe_cheapest`: Strictly for testing, the minimum costs allowed by Argon2 for the fastest hashing speed
|
67
|
+
|
68
|
+
To generate a hash using specific time and memory cost:
|
69
|
+
|
70
|
+
```ruby
|
71
|
+
hasher = Argon2::Password.new(t_cost: 2, m_cost: 16, p_cost: 1)
|
72
|
+
hasher.create("password")
|
73
|
+
=> "$argon2i$v=19$m=65536,t=2,p=1$jL7lLEAjDN+pY2cG1N8D2g$iwj1ueduCvm6B9YVjBSnAHu+6mKzqGmDW745ALR38Uo"
|
50
74
|
```
|
51
75
|
|
52
76
|
You can then use this function to verify a password against a given hash. Will return either true or false.
|
@@ -81,6 +105,9 @@ steep check
|
|
81
105
|
```
|
82
106
|
These tools will need to be installed manually at this time and will be added to Gemfiles after much further testing.
|
83
107
|
|
108
|
+
## Version 2.2.0
|
109
|
+
This version changed the way the build system works to deal with a new version of Rubygems. See https://github.com/technion/ruby-argon2/issues/56.
|
110
|
+
|
84
111
|
## Version 2.0 - Argon 2id
|
85
112
|
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.
|
86
113
|
|
data/Steepfile
CHANGED
data/argon2.gemspec
CHANGED
@@ -36,6 +36,6 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.add_development_dependency "rubocop", '~> 1.7'
|
37
37
|
spec.add_development_dependency "simplecov", '~> 0.20'
|
38
38
|
spec.add_development_dependency "simplecov-lcov", '~> 0.8'
|
39
|
-
spec.add_development_dependency "steep", "~> 1.
|
39
|
+
spec.add_development_dependency "steep", "~> 1.9.3"
|
40
40
|
spec.extensions << 'ext/argon2_wrap/extconf.rb'
|
41
41
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Argon2
|
4
|
+
# Contains named profiles of different common cost parameter sets
|
5
|
+
class Profiles
|
6
|
+
def self.[](name)
|
7
|
+
name = name.upcase.to_sym
|
8
|
+
raise NotImplementedError unless const_defined?(name)
|
9
|
+
|
10
|
+
const_get(name)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.to_a
|
14
|
+
constants.map(&:downcase)
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.to_h
|
18
|
+
to_a.reduce({}) { |h, name| h.update(name => self[name]) }
|
19
|
+
end
|
20
|
+
|
21
|
+
# https://datatracker.ietf.org/doc/html/rfc9106#name-argon2-algorithm
|
22
|
+
# FIRST RECOMMENDED option per RFC 9106.
|
23
|
+
RFC_9106_HIGH_MEMORY = {
|
24
|
+
t_cost: 1,
|
25
|
+
m_cost: 21, # 2 GiB
|
26
|
+
p_cost: 4
|
27
|
+
}.freeze
|
28
|
+
|
29
|
+
# SECOND RECOMMENDED option per RFC 9106.
|
30
|
+
RFC_9106_LOW_MEMORY = {
|
31
|
+
t_cost: 3,
|
32
|
+
m_cost: 16, # 64 MiB
|
33
|
+
p_cost: 4
|
34
|
+
}.freeze
|
35
|
+
|
36
|
+
# The default values ruby-argon2 had before using RFC 9106 recommendations
|
37
|
+
PRE_RFC_9106 = {
|
38
|
+
t_cost: 2,
|
39
|
+
m_cost: 16, # 64 MiB
|
40
|
+
p_cost: 1
|
41
|
+
}.freeze
|
42
|
+
|
43
|
+
# Only use for fast testing. Insecure otherwise!
|
44
|
+
UNSAFE_CHEAPEST = {
|
45
|
+
t_cost: 1,
|
46
|
+
m_cost: 3, # 8 KiB
|
47
|
+
p_cost: 1
|
48
|
+
}.freeze
|
49
|
+
end
|
50
|
+
end
|
data/lib/argon2/version.rb
CHANGED
data/lib/argon2.rb
CHANGED
@@ -6,19 +6,26 @@ require 'argon2/version'
|
|
6
6
|
require 'argon2/errors'
|
7
7
|
require 'argon2/engine'
|
8
8
|
require 'argon2/hash_format'
|
9
|
+
require 'argon2/profiles'
|
9
10
|
|
10
11
|
module Argon2
|
11
12
|
# Front-end API for the Argon2 module.
|
12
13
|
class Password
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
# Expose constants for the options supported and default used for passwords.
|
15
|
+
DEFAULT_T_COST = Argon2::Profiles::RFC_9106_LOW_MEMORY[:t_cost]
|
16
|
+
DEFAULT_M_COST = Argon2::Profiles::RFC_9106_LOW_MEMORY[:m_cost]
|
17
|
+
DEFAULT_P_COST = Argon2::Profiles::RFC_9106_LOW_MEMORY[:p_cost]
|
18
|
+
MIN_T_COST = 1
|
19
|
+
MAX_T_COST = 750
|
20
|
+
MIN_M_COST = 3
|
21
|
+
MAX_M_COST = 31
|
22
|
+
MIN_P_COST = 1
|
23
|
+
MAX_P_COST = 8
|
16
24
|
|
17
|
-
|
18
|
-
|
25
|
+
def initialize(options = {})
|
26
|
+
options.update(Profiles[options[:profile]]) if options.key?(:profile)
|
19
27
|
|
20
|
-
|
21
|
-
raise ArgonHashFail, "Invalid p_cost" if @p_cost < 1 || @p_cost > 8
|
28
|
+
init_costs(options)
|
22
29
|
|
23
30
|
@salt_do_not_supply = options[:salt_do_not_supply]
|
24
31
|
@secret = options[:secret]
|
@@ -50,5 +57,18 @@ module Argon2
|
|
50
57
|
|
51
58
|
Argon2::Engine.argon2_verify(pass, hash, secret)
|
52
59
|
end
|
60
|
+
|
61
|
+
protected
|
62
|
+
|
63
|
+
def init_costs(options = {})
|
64
|
+
@t_cost = options[:t_cost] || DEFAULT_T_COST
|
65
|
+
raise ArgonHashFail, "Invalid t_cost" if @t_cost < MIN_T_COST || @t_cost > MAX_T_COST
|
66
|
+
|
67
|
+
@m_cost = options[:m_cost] || DEFAULT_M_COST
|
68
|
+
raise ArgonHashFail, "Invalid m_cost" if @m_cost < MIN_M_COST || @m_cost > MAX_M_COST
|
69
|
+
|
70
|
+
@p_cost = options[:p_cost] || DEFAULT_P_COST
|
71
|
+
raise ArgonHashFail, "Invalid p_cost" if @p_cost < MIN_P_COST || @p_cost > MAX_P_COST
|
72
|
+
end
|
53
73
|
end
|
54
74
|
end
|
data/sig/argon2.rbs
CHANGED
@@ -1,21 +1,41 @@
|
|
1
|
-
# Classes
|
2
1
|
module Argon2
|
2
|
+
# Front-end API for the Argon2 module.
|
3
3
|
class Password
|
4
4
|
@t_cost: Integer
|
5
5
|
@m_cost: Integer
|
6
6
|
@p_cost: Integer
|
7
7
|
@salt: nil | String
|
8
8
|
@secret: nil | String
|
9
|
+
@salt_do_not_supply: nil | String
|
10
|
+
|
11
|
+
# Expose constants for the options supported and default used for passwords.
|
12
|
+
DEFAULT_T_COST: 2
|
13
|
+
|
14
|
+
DEFAULT_M_COST: 16
|
15
|
+
|
16
|
+
DEFAULT_P_COST: 1
|
17
|
+
|
18
|
+
MIN_T_COST: 1
|
19
|
+
|
20
|
+
MAX_T_COST: 750
|
21
|
+
|
22
|
+
MIN_M_COST: 1
|
23
|
+
|
24
|
+
MAX_M_COST: 31
|
25
|
+
|
26
|
+
MIN_P_COST: 1
|
27
|
+
|
28
|
+
MAX_P_COST: 8
|
9
29
|
|
10
30
|
def initialize: (?::Hash[untyped, untyped] options) -> void
|
31
|
+
|
11
32
|
def create: (String pass) -> untyped
|
12
|
-
|
13
|
-
|
14
|
-
def self.
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
class ArgonHashFail < StandardError
|
33
|
+
|
34
|
+
# Helper class, just creates defaults and calls hash()
|
35
|
+
def self.create: (String pass, ?::Hash[untyped, untyped] options) -> String
|
36
|
+
|
37
|
+
def self.valid_hash?: (String hash) -> bool
|
38
|
+
|
39
|
+
def self.verify_password: (String pass, String hash, ?String|nil secret) -> bool
|
20
40
|
end
|
21
41
|
end
|
data/sig/engine.rbs
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
module Argon2
|
2
|
+
# SecureRandom is a Ruby module. I have no idea why steep now thinks it's an unknown constant, nor why rbs
|
3
|
+
# prototype has no interest in outputting this.
|
4
|
+
SecureRandom: untyped
|
5
|
+
# Generates a random, binary string for use as a salt.
|
6
|
+
class Engine
|
7
|
+
def self.saltgen: () -> untyped
|
8
|
+
end
|
9
|
+
end
|
data/sig/errors.rbs
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
module Argon2
|
2
|
+
class ArgonHashFail < StandardError
|
3
|
+
end
|
4
|
+
|
5
|
+
ERRORS: ::Array["ARGON2_OK" | "ARGON2_OUTPUT_PTR_NULL" | "ARGON2_OUTPUT_TOO_SHORT" | "ARGON2_OUTPUT_TOO_LONG" | "ARGON2_PWD_TOO_SHORT" | "ARGON2_PWD_TOO_LONG" | "ARGON2_SALT_TOO_SHORT" | "ARGON2_SALT_TOO_LONG" | "ARGON2_AD_TOO_SHORT" | "ARGON2_AD_TOO_LONG" | "ARGON2_SECRET_TOO_SHORT" | "ARGON2_SECRET_TOO_LONG" | "ARGON2_TIME_TOO_SMALL" | "ARGON2_TIME_TOO_LARGE" | "ARGON2_MEMORY_TOO_LITTLE" | "ARGON2_MEMORY_TOO_MUCH" | "ARGON2_LANES_TOO_FEW" | "ARGON2_LANES_TOO_MANY" | "ARGON2_PWD_PTR_MISMATCH" | "ARGON2_SALT_PTR_MISMATCH" | "ARGON2_SECRET_PTR_MISMATCH" | "ARGON2_AD_PTR_MISMATCH" | "ARGON2_MEMORY_ALLOCATION_ERROR" | "ARGON2_FREE_MEMORY_CBK_NULL" | "ARGON2_ALLOCATE_MEMORY_CBK_NULL" | "ARGON2_INCORRECT_PARAMETER" | "ARGON2_INCORRECT_TYPE" | "ARGON2_OUT_PTR_MISMATCH" | "ARGON2_THREADS_TOO_FEW" | "ARGON2_THREADS_TOO_MANY" | "ARGON2_MISSING_ARGS" | "ARGON2_ENCODING_FAIL" | "ARGON2_DECODING_FAIL" | "ARGON2_THREAD_FAIL"]
|
6
|
+
end
|
data/sig/ffi.rbs
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
module Argon2
|
2
2
|
# Direct external bindings. Call these methods via the Engine class to ensure points are dealt with
|
3
|
-
module Ext
|
4
|
-
extend FFI::Library
|
5
|
-
end
|
3
|
+
# module Ext
|
4
|
+
# extend FFI::Library
|
5
|
+
# end
|
6
6
|
|
7
7
|
# The engine class shields users from the FFI interface.
|
8
8
|
# It is generally not advised to directly use this class.
|
data/sig/hash_format.rbs
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
module Argon2
|
2
|
+
#
|
3
|
+
# Get the values from an Argon2 compatible string.
|
4
|
+
#
|
5
|
+
class HashFormat
|
6
|
+
attr_reader variant: untyped
|
7
|
+
|
8
|
+
attr_reader version: untyped
|
9
|
+
|
10
|
+
attr_reader t_cost: untyped
|
11
|
+
|
12
|
+
attr_reader m_cost: untyped
|
13
|
+
|
14
|
+
attr_reader p_cost: untyped
|
15
|
+
|
16
|
+
attr_reader salt: untyped
|
17
|
+
|
18
|
+
attr_reader checksum: untyped
|
19
|
+
|
20
|
+
# FIXME: Reduce complexity/AbcSize
|
21
|
+
# rubocop:disable Metrics/AbcSize
|
22
|
+
def initialize: (untyped digest) -> void
|
23
|
+
|
24
|
+
#
|
25
|
+
# Checks whether a given digest is a valid Argon2 hash.
|
26
|
+
#
|
27
|
+
# Supports 1 and argon2id formats.
|
28
|
+
#
|
29
|
+
def self.valid_hash?: (untyped digest) -> untyped
|
30
|
+
end
|
31
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: argon2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Technion
|
8
|
-
autorequire:
|
9
8
|
bindir: exe
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-02-03 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: ffi
|
@@ -128,14 +127,14 @@ dependencies:
|
|
128
127
|
requirements:
|
129
128
|
- - "~>"
|
130
129
|
- !ruby/object:Gem::Version
|
131
|
-
version: 1.
|
130
|
+
version: 1.9.3
|
132
131
|
type: :development
|
133
132
|
prerelease: false
|
134
133
|
version_requirements: !ruby/object:Gem::Requirement
|
135
134
|
requirements:
|
136
135
|
- - "~>"
|
137
136
|
- !ruby/object:Gem::Version
|
138
|
-
version: 1.
|
137
|
+
version: 1.9.3
|
139
138
|
description: Argon2 FFI binding
|
140
139
|
email:
|
141
140
|
- technion@lolware.net
|
@@ -162,105 +161,28 @@ files:
|
|
162
161
|
- bin/test
|
163
162
|
- ext/argon2_wrap/Makefile.real
|
164
163
|
- ext/argon2_wrap/argon_wrap.c
|
165
|
-
- ext/argon2_wrap/argon_wrap.o
|
166
164
|
- ext/argon2_wrap/extconf.rb
|
167
165
|
- ext/argon2_wrap/test.c
|
168
|
-
- ext/phc-winner-argon2/.git
|
169
|
-
- ext/phc-winner-argon2/.gitattributes
|
170
|
-
- ext/phc-winner-argon2/.gitignore
|
171
|
-
- ext/phc-winner-argon2/.travis.yml
|
172
|
-
- ext/phc-winner-argon2/Argon2.sln
|
173
|
-
- ext/phc-winner-argon2/CHANGELOG.md
|
174
|
-
- ext/phc-winner-argon2/LICENSE
|
175
|
-
- ext/phc-winner-argon2/Makefile
|
176
|
-
- ext/phc-winner-argon2/Package.swift
|
177
|
-
- ext/phc-winner-argon2/README.md
|
178
|
-
- ext/phc-winner-argon2/appveyor.yml
|
179
|
-
- ext/phc-winner-argon2/argon2-specs.pdf
|
180
|
-
- ext/phc-winner-argon2/export.sh
|
181
|
-
- ext/phc-winner-argon2/include/argon2.h
|
182
|
-
- ext/phc-winner-argon2/kats/argon2d
|
183
|
-
- ext/phc-winner-argon2/kats/argon2d.shasum
|
184
|
-
- ext/phc-winner-argon2/kats/argon2d_v16
|
185
|
-
- ext/phc-winner-argon2/kats/argon2d_v16.shasum
|
186
|
-
- ext/phc-winner-argon2/kats/argon2i
|
187
|
-
- ext/phc-winner-argon2/kats/argon2i.shasum
|
188
|
-
- ext/phc-winner-argon2/kats/argon2i_v16
|
189
|
-
- ext/phc-winner-argon2/kats/argon2i_v16.shasum
|
190
|
-
- ext/phc-winner-argon2/kats/argon2id
|
191
|
-
- ext/phc-winner-argon2/kats/argon2id.shasum
|
192
|
-
- ext/phc-winner-argon2/kats/argon2id_v16
|
193
|
-
- ext/phc-winner-argon2/kats/argon2id_v16.shasum
|
194
|
-
- ext/phc-winner-argon2/kats/check-sums.ps1
|
195
|
-
- ext/phc-winner-argon2/kats/check-sums.sh
|
196
|
-
- ext/phc-winner-argon2/kats/test.ps1
|
197
|
-
- ext/phc-winner-argon2/kats/test.sh
|
198
|
-
- ext/phc-winner-argon2/latex/IEEEtran.cls
|
199
|
-
- ext/phc-winner-argon2/latex/Makefile
|
200
|
-
- ext/phc-winner-argon2/latex/argon2-specs.tex
|
201
|
-
- ext/phc-winner-argon2/latex/pics/argon2-par.pdf
|
202
|
-
- ext/phc-winner-argon2/latex/pics/compression.pdf
|
203
|
-
- ext/phc-winner-argon2/latex/pics/generic.pdf
|
204
|
-
- ext/phc-winner-argon2/latex/pics/power-distribution.jpg
|
205
|
-
- ext/phc-winner-argon2/latex/tradeoff.bib
|
206
|
-
- ext/phc-winner-argon2/libargon2.pc.in
|
207
|
-
- ext/phc-winner-argon2/man/argon2.1
|
208
|
-
- ext/phc-winner-argon2/src/argon2.c
|
209
|
-
- ext/phc-winner-argon2/src/bench.c
|
210
|
-
- ext/phc-winner-argon2/src/blake2/blake2-impl.h
|
211
|
-
- ext/phc-winner-argon2/src/blake2/blake2.h
|
212
|
-
- ext/phc-winner-argon2/src/blake2/blake2b.c
|
213
|
-
- ext/phc-winner-argon2/src/blake2/blamka-round-opt.h
|
214
|
-
- ext/phc-winner-argon2/src/blake2/blamka-round-ref.h
|
215
|
-
- ext/phc-winner-argon2/src/core.c
|
216
|
-
- ext/phc-winner-argon2/src/core.h
|
217
|
-
- ext/phc-winner-argon2/src/encoding.c
|
218
|
-
- ext/phc-winner-argon2/src/encoding.h
|
219
|
-
- ext/phc-winner-argon2/src/genkat.c
|
220
|
-
- ext/phc-winner-argon2/src/genkat.h
|
221
|
-
- ext/phc-winner-argon2/src/opt.c
|
222
|
-
- ext/phc-winner-argon2/src/ref.c
|
223
|
-
- ext/phc-winner-argon2/src/run.c
|
224
|
-
- ext/phc-winner-argon2/src/test.c
|
225
|
-
- ext/phc-winner-argon2/src/thread.c
|
226
|
-
- ext/phc-winner-argon2/src/thread.h
|
227
|
-
- ext/phc-winner-argon2/vs2015/Argon2Opt/Argon2Opt.vcxproj
|
228
|
-
- ext/phc-winner-argon2/vs2015/Argon2Opt/Argon2Opt.vcxproj.filters
|
229
|
-
- ext/phc-winner-argon2/vs2015/Argon2OptBench/Argon2OptBench.vcxproj
|
230
|
-
- ext/phc-winner-argon2/vs2015/Argon2OptBench/Argon2OptBench.vcxproj.filters
|
231
|
-
- ext/phc-winner-argon2/vs2015/Argon2OptDll/Argon2OptDll.vcxproj
|
232
|
-
- ext/phc-winner-argon2/vs2015/Argon2OptDll/Argon2OptDll.vcxproj.filters
|
233
|
-
- ext/phc-winner-argon2/vs2015/Argon2OptGenKAT/Argon2OptGenKAT.vcxproj
|
234
|
-
- ext/phc-winner-argon2/vs2015/Argon2OptGenKAT/Argon2OptGenKAT.vcxproj.filters
|
235
|
-
- ext/phc-winner-argon2/vs2015/Argon2OptTestCI/Argon2OptTestCI.vcxproj
|
236
|
-
- ext/phc-winner-argon2/vs2015/Argon2OptTestCI/Argon2OptTestCI.vcxproj.filters
|
237
|
-
- ext/phc-winner-argon2/vs2015/Argon2Ref/Argon2Ref.vcxproj
|
238
|
-
- ext/phc-winner-argon2/vs2015/Argon2Ref/Argon2Ref.vcxproj.filters
|
239
|
-
- ext/phc-winner-argon2/vs2015/Argon2RefBench/Argon2RefBench.vcxproj
|
240
|
-
- ext/phc-winner-argon2/vs2015/Argon2RefBench/Argon2RefBench.vcxproj.filters
|
241
|
-
- ext/phc-winner-argon2/vs2015/Argon2RefDll/Argon2RefDll.vcxproj
|
242
|
-
- ext/phc-winner-argon2/vs2015/Argon2RefDll/Argon2RefDll.vcxproj.filters
|
243
|
-
- ext/phc-winner-argon2/vs2015/Argon2RefGenKAT/Argon2RefGenKAT.vcxproj
|
244
|
-
- ext/phc-winner-argon2/vs2015/Argon2RefGenKAT/Argon2RefGenKAT.vcxproj.filters
|
245
|
-
- ext/phc-winner-argon2/vs2015/Argon2RefTestCI/Argon2RefTestCI.vcxproj
|
246
|
-
- ext/phc-winner-argon2/vs2015/Argon2RefTestCI/Argon2RefTestCI.vcxproj.filters
|
247
166
|
- lib/argon2.rb
|
248
167
|
- lib/argon2/constants.rb
|
249
168
|
- lib/argon2/engine.rb
|
250
169
|
- lib/argon2/errors.rb
|
251
170
|
- lib/argon2/ffi_engine.rb
|
252
171
|
- lib/argon2/hash_format.rb
|
172
|
+
- lib/argon2/profiles.rb
|
253
173
|
- lib/argon2/version.rb
|
254
174
|
- sig/argon2.rbs
|
255
175
|
- sig/constants.rbs
|
176
|
+
- sig/engine.rbs
|
177
|
+
- sig/errors.rbs
|
256
178
|
- sig/ffi.rbs
|
179
|
+
- sig/hash_format.rbs
|
257
180
|
- sig/version.rbs
|
258
181
|
homepage: https://github.com/technion/ruby-argon2
|
259
182
|
licenses:
|
260
183
|
- MIT
|
261
184
|
metadata:
|
262
185
|
rubygems_mfa_required: 'true'
|
263
|
-
post_install_message:
|
264
186
|
rdoc_options: []
|
265
187
|
require_paths:
|
266
188
|
- lib
|
@@ -275,8 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
275
197
|
- !ruby/object:Gem::Version
|
276
198
|
version: '0'
|
277
199
|
requirements: []
|
278
|
-
rubygems_version: 3.
|
279
|
-
signing_key:
|
200
|
+
rubygems_version: 3.6.2
|
280
201
|
specification_version: 4
|
281
202
|
summary: Argon2 Password hashing binding
|
282
203
|
test_files: []
|
Binary file
|
data/ext/phc-winner-argon2/.git
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
gitdir: ../../.git/modules/ext/phc-winner-argon2
|
@@ -1,22 +0,0 @@
|
|
1
|
-
argon2
|
2
|
-
libargon2.a
|
3
|
-
libargon2.so*
|
4
|
-
libargon2.dylib
|
5
|
-
libargon2.pc
|
6
|
-
.DS_Store
|
7
|
-
src/*.o
|
8
|
-
src/blake2/*.o
|
9
|
-
genkat
|
10
|
-
.idea
|
11
|
-
*.pyc
|
12
|
-
testcase
|
13
|
-
*.gcda
|
14
|
-
*.gcno
|
15
|
-
*.gcov
|
16
|
-
bench
|
17
|
-
vs2015/build
|
18
|
-
Argon2.sdf
|
19
|
-
Argon2.VC.opendb
|
20
|
-
*.zip
|
21
|
-
*.tar.gz
|
22
|
-
tags
|
@@ -1,25 +0,0 @@
|
|
1
|
-
language: c
|
2
|
-
|
3
|
-
compiler:
|
4
|
-
- clang
|
5
|
-
- gcc
|
6
|
-
|
7
|
-
os:
|
8
|
-
- linux
|
9
|
-
- osx
|
10
|
-
|
11
|
-
# Clang on Linux needs to run in a VM to use ASAN.
|
12
|
-
# See: https://github.com/travis-ci/travis-ci/issues/9033
|
13
|
-
matrix:
|
14
|
-
exclude:
|
15
|
-
- compiler: clang
|
16
|
-
os: linux
|
17
|
-
include:
|
18
|
-
- compiler: clang
|
19
|
-
os: linux
|
20
|
-
sudo: true
|
21
|
-
|
22
|
-
script: make && make testci
|
23
|
-
|
24
|
-
after_success:
|
25
|
-
- bash <(curl -s https://codecov.io/bash)
|