30 lines
724 B
Python
30 lines
724 B
Python
|
import socket
|
||
|
import pickle
|
||
|
import struct
|
||
|
import ecpy.curves
|
||
|
from otp import curve
|
||
|
|
||
|
def send_point(s: socket.socket, point: ecpy.curves.Point):
|
||
|
send(s, (point.x, point.y))
|
||
|
|
||
|
def recv_point(s: socket.socket) -> ecpy.curves.Point:
|
||
|
point = recv(s)
|
||
|
return ecpy.curves.Point(point[0], point[1], curve)
|
||
|
|
||
|
def send(s: socket.socket, data):
|
||
|
data = pickle.dumps(data, protocol=4)
|
||
|
data = struct.pack('<I', len(data)) + data
|
||
|
s.sendall(data)
|
||
|
|
||
|
def recv(s: socket.socket):
|
||
|
length = s.recv(4)
|
||
|
length, *_ = struct.unpack('<I', length)
|
||
|
|
||
|
pickled = b""
|
||
|
toread = length
|
||
|
while toread:
|
||
|
read = s.recv(toread)
|
||
|
pickled += read
|
||
|
toread -= len(pickled)
|
||
|
return pickle.loads(pickled)
|