[tor-commits] [tor/master] Update slow_ed25519.py to work with python 3.

asn at torproject.org asn at torproject.org
Fri Oct 30 12:15:39 UTC 2020


commit 98c4e218b8cccd25e3bf003a348704e3bc9b1344
Author: Nick Mathewson <nickm at torproject.org>
Date:   Fri Oct 16 10:31:13 2020 -0400

    Update slow_ed25519.py to work with python 3.
---
 src/test/slow_ed25519.py | 25 ++++++++++++-------------
 1 file changed, 12 insertions(+), 13 deletions(-)

diff --git a/src/test/slow_ed25519.py b/src/test/slow_ed25519.py
index be4eeab857..df1456b811 100644
--- a/src/test/slow_ed25519.py
+++ b/src/test/slow_ed25519.py
@@ -24,7 +24,7 @@ def H(m):
 
 def expmod(b,e,m):
   if e == 0: return 1
-  t = expmod(b,e/2,m)**2 % m
+  t = expmod(b,e//2,m)**2 % m
   if e & 1: t = (t*b) % m
   return t
 
@@ -32,11 +32,11 @@ def inv(x):
   return expmod(x,q-2,q)
 
 d = -121665 * inv(121666)
-I = expmod(2,(q-1)/4,q)
+I = expmod(2,(q-1)//4,q)
 
 def xrecover(y):
   xx = (y*y-1) * inv(d*y*y+1)
-  x = expmod(xx,(q+3)/8,q)
+  x = expmod(xx,(q+3)//8,q)
   if (x*x - xx) % q != 0: x = (x*I) % q
   if x % 2 != 0: x = q-x
   return x
@@ -56,23 +56,23 @@ def edwards(P,Q):
 
 def scalarmult(P,e):
   if e == 0: return [0,1]
-  Q = scalarmult(P,e/2)
+  Q = scalarmult(P,e//2)
   Q = edwards(Q,Q)
   if e & 1: Q = edwards(Q,P)
   return Q
 
 def encodeint(y):
   bits = [(y >> i) & 1 for i in range(b)]
-  return ''.join([chr(sum([bits[i * 8 + j] << j for j in range(8)])) for i in range(b/8)])
+  return bytes(sum([bits[i * 8 + j] << j for j in range(8)]) for i in range(b//8))
 
 def encodepoint(P):
   x = P[0]
   y = P[1]
   bits = [(y >> i) & 1 for i in range(b - 1)] + [x & 1]
-  return ''.join([chr(sum([bits[i * 8 + j] << j for j in range(8)])) for i in range(b/8)])
+  return bytes([(sum([bits[i * 8 + j] << j for j in range(8)])) for i in range(b//8)])
 
 def bit(h,i):
-  return (ord(h[i/8]) >> (i%8)) & 1
+  return (h[i//8] >> (i%8)) & 1
 
 def publickey(sk):
   h = H(sk)
@@ -87,7 +87,7 @@ def Hint(m):
 def signature(m,sk,pk):
   h = H(sk)
   a = 2**(b-2) + sum(2**i * bit(h,i) for i in range(3,b-2))
-  r = Hint(''.join([h[i] for i in range(b/8,b/4)]) + m)
+  r = Hint(bytes([h[i] for i in range(b//8,b//4)]) + m)
   R = scalarmult(B,r)
   S = (r + Hint(encodepoint(R) + pk + m) * a) % l
   return encodepoint(R) + encodeint(S)
@@ -109,12 +109,11 @@ def decodepoint(s):
   return P
 
 def checkvalid(s,m,pk):
-  if len(s) != b/4: raise Exception("signature length is wrong")
-  if len(pk) != b/8: raise Exception("public-key length is wrong")
-  R = decodepoint(s[0:b/8])
+  if len(s) != b//4: raise Exception("signature length is wrong")
+  if len(pk) != b//8: raise Exception("public-key length is wrong")
+  R = decodepoint(s[0:b//8])
   A = decodepoint(pk)
-  S = decodeint(s[b/8:b/4])
+  S = decodeint(s[b//8:b//4])
   h = Hint(encodepoint(R) + pk + m)
   if scalarmult(B,S) != edwards(R,scalarmult(A,h)):
     raise Exception("signature does not pass verification")
-





More information about the tor-commits mailing list