adopted srp algo to srp-js way of doing things.
[ruby_srp.git] / lib / srp / server.rb
index 02d5d8b..cf213c9 100644 (file)
@@ -11,19 +11,23 @@ module SRP
     end
 
     def initialize_auth(aa)
+      @aa = aa
       @b = bigrand(32).hex
       # B = g^b + k v (mod N)
       @bb = (modpow(GENERATOR, @b, PRIME_N) + multiplier * @verifier) % PRIME_N
-      u = calculate_u(aa, @bb, PRIME_N)
+      u = calculate_u(@aa, @bb, PRIME_N)
       return @bb, u
     end
 
-    def authenticate(aa, m)
-      u = calculate_u(aa, @bb, PRIME_N)
-      base = (modpow(@verifier, u, PRIME_N) * aa) % PRIME_N
+    def authenticate(m)
+      u = calculate_u(@aa, @bb, PRIME_N)
+      base = (modpow(@verifier, u, PRIME_N) * @aa) % PRIME_N
       server_s = modpow(base, @b, PRIME_N)
-      if(m == calculate_m(aa, @bb, server_s))
-        return calculate_m(aa, m, server_s)
+      if(m == calculate_m(@aa, @bb, server_s))
+        puts "A = %x" % [@aa]
+        puts "M = %x" % [m]
+        puts "s = %x" % [server_s]
+        return calculate_m(@aa, m, server_s)
       end
     end
 
@@ -34,9 +38,10 @@ module SRP
       nlen = 2 * ((('%x' % [n]).length * 4 + 7) >> 3)
       aahex = '%x' % [aa]
       bbhex = '%x' % [bb]
+      return sha256_str("%x%x" % [aa, bb]).hex
       hashin = '0' * (nlen - aahex.length) + aahex \
         + '0' * (nlen - bbhex.length) + bbhex
-      sha256_hex(hashin).hex
+      sha256_str(hashin).hex
     end
 
   end