adopted srp algo to srp-js way of doing things.
[ruby_srp.git] / example / models / user.rb
1 class User
2
3   def self.current
4     @current
5   end
6
7   def self.current=(user)
8     @current = user
9   end
10
11   attr_accessor :login
12   attr_accessor :salt
13   attr_accessor :verifier
14   attr_accessor :active
15   attr_accessor :srp
16
17   def initialize(login)
18     self.login = login
19     self.salt = "5d3055e0acd3ddcfc15".hex
20     # OpenSSL::Random.random_bytes(10).unpack("H*")[0]
21     self.active = false
22     User.current = self
23   end
24
25   def initialize_auth(params)
26     self.srp = SRP::Server.new(self.salt, self.verifier)
27     bb, u = self.srp.initialize_auth(params.delete('A').hex)
28     return {:B => bb, :u => u}
29   end
30
31   def authenticate(params)
32     if m2 = self.srp.authenticate(params.delete('M').hex)
33       self.active = true
34       return {:M2 => m2}
35     else
36       self.active = false
37       return {:error => "Access Denied"}
38     end
39   end
40
41 end