1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
require 'test/unit'
require 'openid/dh'
require 'testutil'
module OpenID
class DiffieHellmanExposed < OpenID::DiffieHellman
def DiffieHellmanExposed.strxor_for_testing(a, b)
return DiffieHellmanExposed.strxor(a, b)
end
end
class DiffieHellmanTestCase < Test::Unit::TestCase
include OpenID::TestDataMixin
NUL = "\x00"
def test_strxor_success
[#input 1 input 2 expected
[NUL, NUL, NUL ],
["\x01", NUL, "\x01" ],
["a", "a", NUL ],
["a", NUL, "a" ],
["abc", NUL * 3, "abc" ],
["x" * 10, NUL * 10, "x" * 10],
["\x01", "\x02", "\x03" ],
["\xf0", "\x0f", "\xff" ],
["\xff", "\x0f", "\xf0" ],
].each do |input1, input2, expected|
actual = DiffieHellmanExposed.strxor_for_testing(input1, input2)
assert_equal(expected, actual)
end
end
def test_strxor_failure
[
['', 'a' ],
['foo', 'ba' ],
[NUL * 3, NUL * 4],
[255, 127 ].map{|h| (0..h).map{|i|i.chr}.join('')},
].each do |aa, bb|
assert_raises(ArgumentError) {
DiffieHellmanExposed.strxor(aa, bb)
}
end
end
def test_simple_exchange
dh1 = DiffieHellman.from_defaults()
dh2 = DiffieHellman.from_defaults()
secret1 = dh1.get_shared_secret(dh2.public)
secret2 = dh2.get_shared_secret(dh1.public)
assert_equal(secret1, secret2)
end
def test_xor_secret
dh1 = DiffieHellman.from_defaults()
dh2 = DiffieHellman.from_defaults()
secret = "Shhhhhh! don't tell!"
encrypted = dh1.xor_secret((CryptUtil.method :sha1), dh2.public, secret)
decrypted = dh2.xor_secret((CryptUtil.method :sha1), dh1.public, encrypted)
assert_equal(secret, decrypted)
end
def test_dh
dh = DiffieHellman.from_defaults()
class << dh
def set_private_test(priv)
set_private(priv)
end
end
read_data_file('dh.txt', true).each do |line|
priv, pub = line.split(' ').map {|x| x.to_i}
dh.set_private_test(priv)
assert_equal(dh.public, pub)
end
end
def test_using_defaults
dh = DiffieHellman.from_defaults()
assert(dh.using_default_values?)
dh = DiffieHellman.new(3, 2750161)
assert(!dh.using_default_values?)
end
end
end
|