ruby-srp 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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