class ElGamal::KeyPair
Public Class Methods
new(public_key: nil, private_key: nil)
click to toggle source
# File lib/elgamal/key_pair.rb, line 5 def initialize(public_key: nil, private_key: nil) @public_key = public_key @private_key = private_key end
Public Instance Methods
generate(bits: 20, a: nil)
click to toggle source
# File lib/elgamal/key_pair.rb, line 10 def generate(bits: 20, a: nil) p = OpenSSL::BN::generate_prime(bits).to_i g = (rand * p).to_i a ||= (rand * (p - 1)).to_i + 1 h = g.to_bn.mod_exp(a, p).to_i return ElGamal::PublicKey.new(public_p: p, public_g: g, public_h: h), ElGamal::PrivateKey.new(private_a: a, public_p: p) end