Class: Cinch::SASL::DiffieHellman Private

Inherits:
Object
  • Object
show all
Defined in:
lib/cinch/sasl/diffie_hellman.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Since:

  • 2.0.0

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(p, g, q) ⇒ DiffieHellman

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of DiffieHellman.

Since:

  • 2.0.0



8
9
10
11
12
# File 'lib/cinch/sasl/diffie_hellman.rb', line 8

def initialize(p, g, q)
  @p = p
  @g = g
  @q = q
end

Instance Attribute Details

#eObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Since:

  • 2.0.0



6
7
8
# File 'lib/cinch/sasl/diffie_hellman.rb', line 6

def e
  @e
end

#gObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Since:

  • 2.0.0



6
7
8
# File 'lib/cinch/sasl/diffie_hellman.rb', line 6

def g
  @g
end

#pObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Since:

  • 2.0.0



6
7
8
# File 'lib/cinch/sasl/diffie_hellman.rb', line 6

def p
  @p
end

#qObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Since:

  • 2.0.0



6
7
8
# File 'lib/cinch/sasl/diffie_hellman.rb', line 6

def q
  @q
end

#xObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Since:

  • 2.0.0



6
7
8
# File 'lib/cinch/sasl/diffie_hellman.rb', line 6

def x
  @x
end

Instance Method Details

#generate(tries = 16) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Raises:

  • (ArgumentError)

Since:

  • 2.0.0



14
15
16
17
18
19
20
21
# File 'lib/cinch/sasl/diffie_hellman.rb', line 14

def generate(tries = 16)
  tries.times do
    @x = rand(@q)
    @e = mod_exp(@g, @x, @p)
    return @e if valid?
  end
  raise ArgumentError, "can't generate valid e"
end

#secret(f) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

compute the shared secret, given the public key

Since:

  • 2.0.0



24
25
26
# File 'lib/cinch/sasl/diffie_hellman.rb', line 24

def secret(f)
  mod_exp(f, @x, @p)
end