ruby-srp 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/lib/srp/session.rb CHANGED
@@ -27,12 +27,24 @@ module SRP
27
27
 
28
28
  def authenticate(m)
29
29
  if(m == calculate_m(server_secret))
30
- return calculate_m2
30
+ return @m2 = calculate_m2
31
+ end
32
+ end
33
+
34
+ def to_json(options={})
35
+ if @m2
36
+ { :M2 => @m2.to_s(16) }.to_json(options)
37
+ else
38
+ { :B => bb.to_s(16),
39
+ # :b => @b.to_s(16), # only use for debugging
40
+ :salt => @user.salt.to_s(16)
41
+ }.to_json(options)
31
42
  end
32
43
  end
33
44
 
34
45
  protected
35
46
 
47
+
36
48
  # only seed b for testing purposes.
37
49
  def initialize_server(aa, b = nil)
38
50
  @aa = aa
@@ -80,6 +92,7 @@ module SRP
80
92
  def calculate_u
81
93
  sha256_int(@aa, @bb).hex
82
94
  end
95
+
83
96
  end
84
97
  end
85
98
 
data/lib/srp/util.rb CHANGED
@@ -41,7 +41,7 @@ d15dc7d7b46154d6b6ce8ef4ad69b15d4982559b297bcf1885c529f566660e5
41
41
 
42
42
  # Hashes the hex args
43
43
  def sha256_hex(*args)
44
- h = args.join('')
44
+ h = args.map{|a| a.length.odd? ? "0#{a}" : a }.join('')
45
45
  sha256_str([h].pack('H*'))
46
46
  end
47
47
 
data/ruby-srp.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "ruby-srp"
3
- s.version = "0.1.0"
3
+ s.version = "0.1.1"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.authors = ["Azul"]
6
6
  s.email = ["azul@leap.se"]
data/test/session_test.rb CHANGED
@@ -24,5 +24,20 @@ class SessionTest < Test::Unit::TestCase
24
24
  assert_equal m2, session.authenticate(m)
25
25
  end
26
26
 
27
-
27
+ def test_zero_padded_salt
28
+ @username = "RLNFB7"
29
+ password = "NRH9NRT958BO"
30
+ @salt = "0401b02e".hex
31
+ @verifier = "943c7bf983b9afd0e08ba7d9c9da68cbf8bc88f05d564f002bd669130bb66ceb2b5aafa5c4a9cac09f42a17f7079b67a964365022283cc249446a165ca9e02855d188ca193bf0b4703d0d83254623e3e91576ba1f3b353981836226f3e9c36b7592a6a0daa608018273e7d3a3cb8615eee3606af9eec4a83e1947c8717f9415e".hex
32
+ aa = "ea40a95b4ccf1934767e9098f0f5639f5b83321eb77137f3c7b50bb90323651ebbe14b08956e471d4b96ae12c96814fbc56bfe408afd4cffca17d53dc30653a2e9e0e57f5b97e8736a5a90470708a32f63e6417651303e331d6c3bf3d229379dd746fb9f47220ee52b6da008ce88710de27c058841d56644d58e98e1c8795371".hex
33
+ b = "78e12fc099be1409e0fce3bf84484d89d58710bcc3d8a0e05227fb291be3fb28".hex
34
+ bb = "d8d50a862b7e8a897f8b0554c4a474e8aa152bd08f23436773fbb977e81cbf5e8262937ffb7ad6b72e3aa7f72deec947cdb286ab466e490d7c544bf443331ad12657c8f9bb2aabf508b73ea1ed29d03a060f5f2a70baef858bdb79c5c878844c058fe10c2cc746b0fb701e98d8d6405ab7d0b65bb4f87cf8e47b25ae4ee6e53b".hex
35
+ m = "d5cbec7254ce66f421ceddbfe8a0a8991b5be2aa9c25d868f073f4459dfc358b".hex
36
+ client = SRP::Client.new(@username, password, @salt)
37
+ assert_equal @verifier.to_s(16), client.verifier.to_s(16)
38
+ session = SRP::Session.new(self, aa)
39
+ session.send(:initialize_server, aa, b) # seeding b to compare to py_srp
40
+ assert_equal bb.to_s(16), session.bb.to_s(16)
41
+ assert session.authenticate(m)
42
+ end
28
43
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-srp
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Azul