17
17
import unittest
18
18
import struct
19
19
20
- from rsa ._compat import byte , is_bytes , range
20
+ from rsa ._compat import byte , is_bytes , range , xor_bytes
21
21
22
22
23
23
class TestByte (unittest .TestCase ):
24
+ """Tests for single bytes."""
25
+
24
26
def test_byte (self ):
25
27
for i in range (256 ):
26
28
byt = byte (i )
@@ -33,3 +35,46 @@ def test_raises_StructError_on_overflow(self):
33
35
34
36
def test_byte_literal (self ):
35
37
self .assertIsInstance (b'abc' , bytes )
38
+
39
+
40
+ class TestBytes (unittest .TestCase ):
41
+ """Tests for bytes objects."""
42
+
43
+ def setUp (self ):
44
+ self .b1 = b'\xff \xff \xff \xff '
45
+ self .b2 = b'\x00 \x00 \x00 \x00 '
46
+ self .b3 = b'\xf0 \xf0 \xf0 \xf0 '
47
+ self .b4 = b'\x4d \x23 \xca \xe2 '
48
+ self .b5 = b'\x9b \x61 \x3b \xdc '
49
+ self .b6 = b'\xff \xff '
50
+
51
+ self .byte_strings = (self .b1 , self .b2 , self .b3 , self .b4 , self .b5 , self .b6 )
52
+
53
+ def test_xor_bytes (self ):
54
+ self .assertEqual (xor_bytes (self .b1 , self .b2 ), b'\xff \xff \xff \xff ' )
55
+ self .assertEqual (xor_bytes (self .b1 , self .b3 ), b'\x0f \x0f \x0f \x0f ' )
56
+ self .assertEqual (xor_bytes (self .b1 , self .b4 ), b'\xb2 \xdc \x35 \x1d ' )
57
+ self .assertEqual (xor_bytes (self .b1 , self .b5 ), b'\x64 \x9e \xc4 \x23 ' )
58
+ self .assertEqual (xor_bytes (self .b2 , self .b3 ), b'\xf0 \xf0 \xf0 \xf0 ' )
59
+ self .assertEqual (xor_bytes (self .b2 , self .b4 ), b'\x4d \x23 \xca \xe2 ' )
60
+ self .assertEqual (xor_bytes (self .b2 , self .b5 ), b'\x9b \x61 \x3b \xdc ' )
61
+ self .assertEqual (xor_bytes (self .b3 , self .b4 ), b'\xbd \xd3 \x3a \x12 ' )
62
+ self .assertEqual (xor_bytes (self .b3 , self .b5 ), b'\x6b \x91 \xcb \x2c ' )
63
+ self .assertEqual (xor_bytes (self .b4 , self .b5 ), b'\xd6 \x42 \xf1 \x3e ' )
64
+
65
+ def test_xor_bytes_length (self ):
66
+ self .assertEqual (xor_bytes (self .b1 , self .b6 ), b'\x00 \x00 ' )
67
+ self .assertEqual (xor_bytes (self .b2 , self .b6 ), b'\xff \xff ' )
68
+ self .assertEqual (xor_bytes (self .b3 , self .b6 ), b'\x0f \x0f ' )
69
+ self .assertEqual (xor_bytes (self .b4 , self .b6 ), b'\xb2 \xdc ' )
70
+ self .assertEqual (xor_bytes (self .b5 , self .b6 ), b'\x64 \x9e ' )
71
+ self .assertEqual (xor_bytes (self .b6 , b'' ), b'' )
72
+
73
+ def test_xor_bytes_commutative (self ):
74
+ for first in self .byte_strings :
75
+ for second in self .byte_strings :
76
+ min_length = min (len (first ), len (second ))
77
+ result = xor_bytes (first , second )
78
+
79
+ self .assertEqual (result , xor_bytes (second , first ))
80
+ self .assertEqual (len (result ), min_length )
0 commit comments