diff --git a/README.md b/README.md index 42f7486..ca176a2 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ time.sleep(1.25) # allow the connections to open private_key = PrivateKey() event = Event(private_key.public_key.hex(), "Hello Nostr") -event.sign(private_key.hex()) +private_key.sign_event(event) relay_manager.publish_event(event) time.sleep(1) # allow the messages to send @@ -116,7 +116,7 @@ event = Event( "Hello, NIP-26!", tags=[delegation.get_tag()], ) -event.sign(delegatee_pk.hex()) +delegatee_pk.sign_event(event) # ...normal broadcast steps... ``` diff --git a/nostr/event.py b/nostr/event.py index 4d0bf1b..0d36f4a 100644 --- a/nostr/event.py +++ b/nostr/event.py @@ -47,11 +47,6 @@ class Event(): def compute_id(public_key: str, created_at: int, kind: int, tags: "list[list[str]]", content: str) -> str: return sha256(Event.serialize(public_key, created_at, kind, tags, content)).hexdigest() - def sign(self, private_key_hex: str) -> None: - sk = PrivateKey(bytes.fromhex(private_key_hex)) - sig = sk.schnorr_sign(bytes.fromhex(self.id), None, raw=True) - self.signature = sig.hex() - def verify(self) -> bool: pub_key = PublicKey(bytes.fromhex("02" + self.public_key), True) # add 02 for schnorr (bip340) event_id = Event.compute_id(self.public_key, self.created_at, self.kind, self.tags, self.content) diff --git a/nostr/key.py b/nostr/key.py index 2521f70..17cf537 100644 --- a/nostr/key.py +++ b/nostr/key.py @@ -7,6 +7,7 @@ from cryptography.hazmat.primitives import padding from hashlib import sha256 from nostr.delegation import Delegation +from nostr.event import Event from . import bech32 @@ -97,7 +98,10 @@ class PrivateKey: sk = secp256k1.PrivateKey(self.raw_secret) sig = sk.schnorr_sign(hash, None, raw=True) return sig.hex() - + + def sign_event(self, event: Event) -> None: + event.signature = self.sign_message_hash(bytes.fromhex(event.id)) + def sign_delegation(self, delegation: Delegation) -> None: delegation.signature = self.sign_message_hash(sha256(delegation.delegation_token.encode()).digest()) diff --git a/test/test_relay_manager.py b/test/test_relay_manager.py index c6e838a..893fc11 100644 --- a/test/test_relay_manager.py +++ b/test/test_relay_manager.py @@ -26,5 +26,5 @@ def test_only_relay_valid_events(): assert "failed to verify" in str(e) # Properly signed Event can be relayed - event.sign(pk.hex()) + pk.sign_event(event) relay_manager.publish_event(event)