refactor: get rid of secp lib (#40)
This commit is contained in:
parent
35584a230f
commit
a53d2d7767
4 changed files with 14 additions and 14 deletions
|
|
@ -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 = [
|
||||||
|
|
|
||||||
|
|
@ -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}'")
|
||||||
|
|
|
||||||
|
|
@ -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")
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue