Class: IntegerHash::Generator
- Inherits:
-
Object
- Object
- IntegerHash::Generator
- Defined in:
- lib/integer_hash/generator.rb
Class Method Summary collapse
Instance Method Summary collapse
- #generate_configuration ⇒ Object
- #generate_inverse ⇒ Object
- #generate_prime ⇒ Object
- #generate_random ⇒ Object
-
#initialize(values = {}) ⇒ Generator
constructor
A new instance of Generator.
Constructor Details
#initialize(values = {}) ⇒ Generator
Returns a new instance of Generator.
7 8 9 10 11 12 |
# File 'lib/integer_hash/generator.rb', line 7 def initialize(values = {}) @size = values[:size] @prime = values[:prime] #TODO BN requires it to be > 16 or the bites are too small raise ArgumentError if @size < 16 end |
Class Method Details
.generate_configuration(size = 31, prime = nil) ⇒ Object
3 4 5 |
# File 'lib/integer_hash/generator.rb', line 3 def self.generate_configuration(size = 31, prime = nil) return Configuration.new(Generator.new(size: size, prime: prime).generate_configuration) end |
Instance Method Details
#generate_configuration ⇒ Object
14 15 16 17 18 19 20 |
# File 'lib/integer_hash/generator.rb', line 14 def generate_configuration @prime ||= generate_prime inverse_integer = generate_inverse random_integer = generate_random {prime: @prime.to_i, inverse_integer: inverse_integer.to_i, random_integer: random_integer.to_i} end |
#generate_inverse ⇒ Object
26 27 28 |
# File 'lib/integer_hash/generator.rb', line 26 def generate_inverse OpenSSL::BN.new(@prime.to_s).mod_inverse(2**@size) end |
#generate_prime ⇒ Object
22 23 24 |
# File 'lib/integer_hash/generator.rb', line 22 def generate_prime OpenSSL::BN.generate_prime(@size) end |
#generate_random ⇒ Object
30 31 32 |
# File 'lib/integer_hash/generator.rb', line 30 def generate_random OpenSSL::BN.rand(@size) end |