mirror of
https://github.com/aljazceru/python-nostr.git
synced 2025-12-19 15:24:19 +01:00
add tweak_add, sign, and verify functions to key.py
This commit is contained in:
15
nostr/key.py
15
nostr/key.py
@@ -23,6 +23,12 @@ def get_key_pair() -> tuple:
|
||||
public_key = private_key.pubkey.serialize().hex()
|
||||
return (private_key.serialize(), public_key[2:])
|
||||
|
||||
def tweak_add_private_key(private_key: str, scalar: bytes) -> str:
|
||||
sk = PrivateKey(bytes.fromhex(private_key))
|
||||
tweaked_secret = sk.tweak_add(scalar)
|
||||
new_sk = PrivateKey(tweaked_secret)
|
||||
return new_sk.serialize()
|
||||
|
||||
def compute_shared_secret(sender_private_key: str, receiver_public_key: str) -> str:
|
||||
public_key = PublicKey(bytes.fromhex("02" + receiver_public_key), True)
|
||||
return public_key.ecdh(bytes.fromhex(sender_private_key), copy_x).hex()
|
||||
@@ -55,6 +61,15 @@ def decrypt_message(encoded_message: str, shared_secret: str) -> str:
|
||||
|
||||
return unpadded_data.decode()
|
||||
|
||||
def sign_message(hash: str, private_key: str) -> str:
|
||||
sk = PrivateKey(bytes.fromhex(private_key))
|
||||
sig = sk.schnorr_sign(bytes.fromhex(hash), None, raw=True)
|
||||
return sig.hex()
|
||||
|
||||
def verify_message(hash: str, sig: str, public_key: str) -> bool:
|
||||
pk = PublicKey(bytes.fromhex("02" + public_key), True)
|
||||
return pk.schnorr_verify(bytes.fromhex(hash), bytes.fromhex(sig), None, True)
|
||||
|
||||
ffi = FFI()
|
||||
@ffi.callback("int (unsigned char *, const unsigned char *, const unsigned char *, void *)")
|
||||
def copy_x(output, x32, y32, data):
|
||||
|
||||
Reference in New Issue
Block a user