refactor: get rid of secp lib (#40)

This commit is contained in:
dni ⚡ 2025-11-04 09:30:43 +01:00 committed by GitHub
parent 35584a230f
commit a53d2d7767
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 14 additions and 14 deletions

View file

@ -30,12 +30,6 @@ init_typed = true
warn_required_dynamic_aliases = true warn_required_dynamic_aliases = true
warn_untyped_fields = true warn_untyped_fields = true
[[tool.mypy.overrides]]
module = [
"secp256k1.*",
]
ignore_missing_imports = "True"
[tool.pytest.ini_options] [tool.pytest.ini_options]
log_cli = false log_cli = false
testpaths = [ testpaths = [

View file

@ -2,8 +2,8 @@ import hashlib
import json import json
from enum import Enum from enum import Enum
from coincurve import PublicKeyXOnly
from pydantic import BaseModel, Field from pydantic import BaseModel, Field
from secp256k1 import PublicKey
class NostrEventType(str, Enum): class NostrEventType(str, Enum):
@ -82,14 +82,15 @@ class NostrEvent(BaseModel):
f"Invalid event id. Expected: '{event_id}' got '{self.id}'" f"Invalid event id. Expected: '{event_id}' got '{self.id}'"
) )
try: try:
pub_key = PublicKey(bytes.fromhex("02" + self.pubkey), True) pub_key = PublicKeyXOnly(bytes.fromhex(self.pubkey))
except Exception as exc: except Exception as exc:
raise ValueError( raise ValueError(
f"Invalid public key: '{self.pubkey}' for event '{self.id}'" f"Invalid public key: '{self.pubkey}' for event '{self.id}'"
) from exc ) from exc
valid_signature = pub_key.schnorr_verify( valid_signature = pub_key.verify(
bytes.fromhex(event_id), bytes.fromhex(self.sig), None, raw=True bytes.fromhex(self.sig),
bytes.fromhex(event_id),
) )
if not valid_signature: if not valid_signature:
raise ValueError(f"Invalid signature: '{self.sig}' for event '{self.id}'") raise ValueError(f"Invalid signature: '{self.sig}' for event '{self.id}'")

View file

@ -27,13 +27,18 @@ def event_loop():
@pytest_asyncio.fixture(scope="session", autouse=True) @pytest_asyncio.fixture(scope="session", autouse=True)
async def migrate_db(): async def migrate_db():
print("#### 999")
db = Database("ext_nostrrelay") db = Database("ext_nostrrelay")
await db.execute("DROP TABLE IF EXISTS nostrrelay.events;")
await db.execute("DROP TABLE IF EXISTS nostrrelay.relays;")
await db.execute("DROP TABLE IF EXISTS nostrrelay.event_tags;")
await db.execute("DROP TABLE IF EXISTS nostrrelay.accounts;")
# check if exists else skip migrations
for key, migrate in inspect.getmembers(migrations, inspect.isfunction): for key, migrate in inspect.getmembers(migrations, inspect.isfunction):
print("### 1000")
logger.info(f"Running migration '{key}'.") logger.info(f"Running migration '{key}'.")
await migrate(db) await migrate(db)
return db
yield db
@pytest.fixture(scope="session") @pytest.fixture(scope="session")

View file

@ -20,7 +20,7 @@ def test_valid_event_id_and_signature(valid_events: list[EventFixture]):
try: try:
f.data.check_signature() f.data.check_signature()
except Exception as e: except Exception as e:
logger.error(f"Invalid 'id' ot 'signature' for fixture: '{f.name}'") logger.error(f"Invalid 'id' of 'signature' for fixture: '{f.name}'")
raise e raise e