Class: PuTTY::Key::Argon2Params
- Inherits:
-
Object
- Object
- PuTTY::Key::Argon2Params
- Defined in:
- lib/putty/key/argon2_params.rb
Overview
Argon2 key derivation parameters for use with format 3.
Instance Attribute Summary collapse
-
#desired_time ⇒ Numeric
readonly
The minimum time that should be taken to derive keys in milliseconds.
-
#memory ⇒ Integer
readonly
The amount of memory to use (memory cost) in kibibytes.
-
#parallelism ⇒ Integer
readonly
The number of parallel threads to use (parallelism degree / lanes).
-
#passes ⇒ Integer
readonly
The number of passes or iterations to run (time cost), or
nil
to determine the time cost based on #desired_time. -
#salt ⇒ String
readonly
The salt to use, or
nil
if a random salt should be selected. -
#type ⇒ Symbol
readonly
Returns the variant of Argon2 to use.
Instance Method Summary collapse
-
#complete(passes, salt) ⇒ Argon2Params
Returns an instance of Argon2Params with the actual number of passes and salt used.
-
#initialize(type: :id, memory: 8192, parallelism: 1, passes: nil, salt: nil, desired_time: 100) ⇒ Argon2Params
constructor
Initalizes a new Argon2Params instance with the specified parameters.
Constructor Details
#initialize(type: :id, memory: 8192, parallelism: 1, passes: nil, salt: nil, desired_time: 100) ⇒ Argon2Params
Initalizes a new PuTTY::Key::Argon2Params instance with the specified parameters.
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/putty/key/argon2_params.rb', line 63 def initialize(type: :id, memory: 8192, parallelism: 1, passes: nil, salt: nil, desired_time: 100) raise ArgumentError, 'type must be :d, :i or :id' unless type == :id || type == :i || type == :d raise ArgumentError, 'memory must be a non-negative Integer' unless memory.kind_of?(Integer) && memory >= 0 && memory <= 2**32 raise ArgumentError, 'parallelism must be a non-negative Integer' unless parallelism.kind_of?(Integer) && parallelism >= 0 && parallelism <= 2**32 raise ArgumentError, 'passes must be nil or a non-negative Integer' if passes && !(passes.kind_of?(Integer) && passes >= 0 && passes <= 2**32) raise ArgumentError, 'salt must be nil or a String' if salt && !salt.kind_of?(String) raise ArgumentError, 'desired_time must be a non-negative Numeric' unless desired_time.kind_of?(Numeric) && desired_time >= 0 && desired_time <= 2**32 @type = type @memory = memory @parallelism = parallelism @passes = passes @salt = salt @desired_time = desired_time end |
Instance Attribute Details
#desired_time ⇒ Numeric (readonly)
The minimum time that should be taken to derive keys in milliseconds.
Only used if #passes is nil
.
A number of passes will be chosen that take at least #desired_time to compute a hash.
37 38 39 |
# File 'lib/putty/key/argon2_params.rb', line 37 def desired_time @desired_time end |
#memory ⇒ Integer (readonly)
Returns The amount of memory to use (memory cost) in kibibytes.
15 16 17 |
# File 'lib/putty/key/argon2_params.rb', line 15 def memory @memory end |
#parallelism ⇒ Integer (readonly)
Returns The number of parallel threads to use (parallelism degree / lanes).
19 20 21 |
# File 'lib/putty/key/argon2_params.rb', line 19 def parallelism @parallelism end |
#passes ⇒ Integer (readonly)
Returns The number of passes or iterations to run (time cost),
or nil
to determine the time cost based on #desired_time.
23 24 25 |
# File 'lib/putty/key/argon2_params.rb', line 23 def passes @passes end |
#salt ⇒ String (readonly)
Returns The salt to use, or nil
if a random salt should be
selected.
27 28 29 |
# File 'lib/putty/key/argon2_params.rb', line 27 def salt @salt end |
#type ⇒ Symbol (readonly)
Returns the variant of Argon2 to use. :d
for Argon2d, :i
for Argon2i
or :id
for Argon2id.
11 12 13 |
# File 'lib/putty/key/argon2_params.rb', line 11 def type @type end |
Instance Method Details
#complete(passes, salt) ⇒ Argon2Params
Returns an instance of PuTTY::Key::Argon2Params with the actual number of passes and salt used.
90 91 92 93 94 95 96 97 98 |
# File 'lib/putty/key/argon2_params.rb', line 90 def complete(passes, salt) raise ArgumentError, 'passes must not be nil' unless passes raise ArgumentError, 'salt must not be nil' unless salt if @passes == passes && @salt == salt self else Argon2Params.new(type: @type, memory: @memory, parallelism: @parallelism, passes: passes, salt: salt, desired_time: @desired_time) end end |