diff --git a/lib/sirp/client.rb b/lib/sirp/client.rb index 6a53816..630143a 100644 --- a/lib/sirp/client.rb +++ b/lib/sirp/client.rb @@ -22,13 +22,13 @@ def process_challenge(username, password, xsalt, xbb) bb = xbb.to_i(16) # SRP-6a safety check - return false if (bb % @N) == 0 + return false if (bb % @N).zero? x = calc_x(username, password, xsalt, hash) u = calc_u(@A, xbb, @N, hash) # SRP-6a safety check - return false if u == 0 + return false if u.zero? # calculate session key @S = num_to_hex(calc_client_S(bb, @a, @k, x, u, @N, @g)) diff --git a/lib/sirp/sirp.rb b/lib/sirp/sirp.rb index 65b15a1..20a35fe 100644 --- a/lib/sirp/sirp.rb +++ b/lib/sirp/sirp.rb @@ -58,7 +58,7 @@ def H(hash_klass, n, *a) hashin = a.map do |s| next unless s - shex = (s.class == String) ? s : num_to_hex(s) + shex = s.is_a?(String) ? s : num_to_hex(s) if shex.length > nlen raise 'Bit width does not match - client uses different prime' end diff --git a/lib/sirp/verifier.rb b/lib/sirp/verifier.rb index 7509084..9e4c61f 100644 --- a/lib/sirp/verifier.rb +++ b/lib/sirp/verifier.rb @@ -24,7 +24,8 @@ def generate_userauth(username, password) # Parameters should be given in hex. def get_challenge_and_proof(username, xverifier, xsalt, xaa) # SRP-6a safety check - return false if (xaa.to_i(16) % @N) == 0 + return false if (xaa.to_i(16) % @N).zero? + generate_B(xverifier) { @@ -45,7 +46,7 @@ def verify_session(proof, client_M) u = calc_u(@A, @B, @N, hash) # SRP-6a safety check - return false if u == 0 + return false if u.zero? # calculate session key @S = num_to_hex(calc_server_S(@A.to_i(16), @b, v, u, @N))