11import http_ece as ece
2- import base64
32import os
43import struct
54import sys
1413
1514def log (arg ):
1615 if (count == 1 ):
17- print arg
16+ print (arg )
17+ def b64e (arg ):
18+ import base64
19+ return base64 .urlsafe_b64encode (arg ).decode ()
1820
1921def rlen ():
2022 return struct .unpack_from ('=H' , os .urandom (2 ))[0 ]
2123
2224def encryptDecrypt (length , encryptParams , decryptParams = None ):
2325 if decryptParams is None :
2426 decryptParams = encryptParams
25- log ('Salt: ' + base64 . urlsafe_b64encode (encryptParams ['salt' ]))
27+ log ('Salt: ' + b64e (encryptParams ['salt' ]))
2628 input = os .urandom (min (length , maxLen ))
2729 # input = new Buffer('I am the walrus')
28- log ('Input: ' + base64 .urlsafe_b64encode (input ))
29- encrypted = ece .encrypt (input , salt = encryptParams .get ('salt' ), key = encryptParams .get ('key' ), keyid = encryptParams .get ('keyid' ), dh = encryptParams .get ('dh' ), rs = encryptParams .get ('rs' ))
30- log ('Encrypted: ' + base64 .urlsafe_b64encode (encrypted ))
31- decrypted = ece .decrypt (encrypted , salt = decryptParams .get ('salt' ), key = decryptParams .get ('key' ), keyid = decryptParams .get ('keyid' ), dh = decryptParams .get ('dh' ), rs = decryptParams .get ('rs' ))
32- log ('Decrypted: ' + base64 .urlsafe_b64encode (decrypted ))
30+ log ('Input: ' + b64e (input ))
31+ encrypted = ece .encrypt (input , salt = encryptParams .get ('salt' ),
32+ key = encryptParams .get ('key' ),
33+ keyid = encryptParams .get ('keyid' ),
34+ dh = encryptParams .get ('dh' ),
35+ rs = encryptParams .get ('rs' ))
36+ log ('Encrypted: ' + b64e (encrypted ))
37+ decrypted = ece .decrypt (encrypted , salt = decryptParams .get ('salt' ),
38+ key = decryptParams .get ('key' ),
39+ keyid = decryptParams .get ('keyid' ),
40+ dh = decryptParams .get ('dh' ),
41+ rs = decryptParams .get ('rs' ))
42+ log ('Decrypted: ' + b64e (decrypted ))
3343 assert input == decrypted
3444 log ("----- OK" );
3545
@@ -40,7 +50,7 @@ def useExplicitKey():
4050 'salt' : os .urandom (16 ),
4151 'rs' : rlen () + 1
4252 }
43- log ('Key: ' + base64 . urlsafe_b64encode (params ['key' ]))
53+ log ('Key: ' + b64e (params ['key' ]))
4454 encryptDecrypt (rlen () + 1 , params )
4555
4656
@@ -75,7 +85,7 @@ def detectTruncation():
7585
7686
7787def useKeyId ():
78- keyid = base64 . urlsafe_b64encode (os .urandom (16 ))
88+ keyid = b64e (os .urandom (16 ))
7989 key = os .urandom (16 )
8090 ece .keys [keyid ] = key
8191 params = {
@@ -90,26 +100,26 @@ def useKeyId():
90100# doesn't even do ECDH; so this doesn't actually work
91101def useDH ():
92102 def isUncompressed (k ):
93- b1 = k .get_pubkey ()[0 ]
103+ b1 = k .get_pubkey ()[0 : 1 ]
94104 assert struct .unpack ("B" , b1 )[0 ] == 4 , 'is an uncompressed point'
95105
96106 # the static key is used by the receiver
97107 staticKey = pyelliptic .ECC (curve = 'prime256v1' )
98108 isUncompressed (staticKey )
99- staticKeyId = base64 . urlsafe_b64encode (staticKey .get_pubkey ()[1 :])
109+ staticKeyId = b64e (staticKey .get_pubkey ()[1 :])
100110 ece .keys [staticKeyId ] = staticKey
101111
102- log ('Receiver private: ' + base64 . urlsafe_b64encode (staticKey .get_privkey ()))
103- log ('Receiver public: ' + base64 . urlsafe_b64encode (staticKey .get_pubkey ()))
112+ log ('Receiver private: ' + b64e (staticKey .get_privkey ()))
113+ log ('Receiver public: ' + b64e (staticKey .get_pubkey ()))
104114
105115 # the ephemeral key is used by the sender
106116 ephemeralKey = pyelliptic .ECC (curve = 'prime256v1' )
107117 isUncompressed (ephemeralKey )
108- ephemeralKeyId = base64 . urlsafe_b64encode (ephemeralKey .get_pubkey ()[1 :])
118+ ephemeralKeyId = b64e (ephemeralKey .get_pubkey ()[1 :])
109119 ece .keys [ephemeralKeyId ] = ephemeralKey
110120
111- log ('Sender private: ' + base64 . urlsafe_b64encode (ephemeralKey .get_privkey ()))
112- log ('Sender public: ' + base64 . urlsafe_b64encode (ephemeralKey .get_pubkey ()))
121+ log ('Sender private: ' + b64e (ephemeralKey .get_privkey ()))
122+ log ('Sender public: ' + b64e (ephemeralKey .get_pubkey ()))
113123
114124 encryptParams = {
115125 'keyid' : ephemeralKeyId ,
@@ -127,11 +137,11 @@ def isUncompressed(k):
127137 encryptDecrypt (rlen (), encryptParams , decryptParams )
128138
129139if __name__ == '__main__' :
130- for i in range (0 ,count ):
140+ for i in list ( range (0 ,count ) ):
131141 useExplicitKey ()
132142 exactlyOneRecord ()
133143 detectTruncation ()
134144 useKeyId ()
135145 useDH ()
136146
137- print 'All tests passed.'
147+ print ( 'All tests passed.' )
0 commit comments