class OpenID::Consumer::DiffieHellmanSession
A superclass for implementing Diffie-Hellman association sessions.
Attributes
allowed_assoc_types[R]
hashfunc[R]
secret_size[R]
session_type[R]
Public Class Methods
new(dh=nil)
click to toggle source
# File lib/openid/consumer/associationmanager.rb, line 18 def initialize(dh=nil) if dh.nil? dh = DiffieHellman.from_defaults end @dh = dh end
Public Instance Methods
extract_secret(response)
click to toggle source
Process the response from a successful association request and return the shared secret for this association
# File lib/openid/consumer/associationmanager.rb, line 39 def extract_secret(response) dh_server_public64 = response.get_arg(OPENID_NS, 'dh_server_public', NO_DEFAULT) enc_mac_key64 = response.get_arg(OPENID_NS, 'enc_mac_key', NO_DEFAULT) dh_server_public = CryptUtil.base64_to_num(dh_server_public64) enc_mac_key = Util.from_base64(enc_mac_key64) return @dh.xor_secret(self.class.hashfunc, dh_server_public, enc_mac_key) end
get_request()
click to toggle source
Return the query parameters for requesting an association using this Diffie-Hellman association session
# File lib/openid/consumer/associationmanager.rb, line 27 def get_request args = {'dh_consumer_public' => CryptUtil.num_to_base64(@dh.public)} if (!@dh.using_default_values?) args['dh_modulus'] = CryptUtil.num_to_base64(@dh.modulus) args['dh_gen'] = CryptUtil.num_to_base64(@dh.generator) end return args end