add draft code

This commit is contained in:
Thomas Farstrike
2025-05-18 16:50:01 +02:00
parent 8b132724bb
commit 93b18cf02b
2 changed files with 90 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
#import network
import socket
import ubinascii
from websocket import websocket
# Create and connect socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#sock.connect(('echo.websocket.org', 80))
sock.connect(socket.getaddrinfo('echo.websocket.org', 80)[0][-1])
#getaddrinfo('localhost', 5000)[0][-1]
# Perform WebSocket handshake
key = ubinascii.b2a_base64(b'random_bytes_here').strip()
handshake = (
'GET / HTTP/1.1\r\n'
'Host: echo.websocket.org\r\n'
'Upgrade: websocket\r\n'
'Connection: Upgrade\r\n'
'Sec-WebSocket-Key: {}\r\n'
'Sec-WebSocket-Version: 13\r\n'
'\r\n'
).format(key.decode())
sock.send(handshake.encode())
response = sock.recv(1024).decode()
print(f"reponse: {response}")
if '101 Switching Protocols' not in response:
raise Exception('Handshake failed')
# Create WebSocket object
ws = websocket(sock, True)
# Send and receive data
ws.write('Hello, WebSocket!')
data = ws.read(1024)
print('Received:', data)
# Close connection
ws.close()
+51
View File
@@ -0,0 +1,51 @@
import secp256k1
import hashlib
from binascii import hexlify
def secp256k1_example():
"""Usage example for secp256k1 usermodule"""
# randomize context from time to time
# - it helps against sidechannel attacks
# secp256k1.context_randomize(os.urandom(32))
# some random secret key
secret = hashlib.sha256(b"secret key").digest()
print("Secret key:", hexlify(secret).decode())
# Makes sense to check if secret key is valid.
# It will be ok in most cases, only if secret > N it will be invalid
if not secp256k1.ec_seckey_verify(secret):
raise ValueError("Secret key is invalid")
# computing corresponding pubkey
pubkey = secp256k1.ec_pubkey_create(secret)
# serialize the pubkey in compressed format
sec = secp256k1.ec_pubkey_serialize(pubkey, secp256k1.EC_COMPRESSED)
print("Public key:", hexlify(sec).decode())
# this is how you parse the pubkey
pubkey = secp256k1.ec_pubkey_parse(sec)
# Signature generation:
# hash of the string "hello"
msg = hashlib.sha256(b"hello").digest()
# signing
sig = secp256k1.ecdsa_sign(msg, secret)
# serialization
der = secp256k1.ecdsa_signature_serialize_der(sig)
print("Signature:", hexlify(der).decode())
# verification
if secp256k1.ecdsa_verify(sig, msg, pubkey):
print("Signature is valid")
else:
printf("Invalid signature")
if __name__ == '__main__':
secp256k1_example()