mirror of
https://github.com/aljazceru/python-nostr.git
synced 2025-12-18 14:54:23 +01:00
refactor: PrivateKey class signs events
This commit is contained in:
@@ -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...
|
||||
```
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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())
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user