diff options
Diffstat (limited to 'lib/srp/server.rb')
-rw-r--r-- | lib/srp/server.rb | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/lib/srp/server.rb b/lib/srp/server.rb index 02d5d8b..cf213c9 100644 --- a/lib/srp/server.rb +++ b/lib/srp/server.rb @@ -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 |