Current section

Files

Jump to
nostr_lib lib nostr event validator.ex
Raw

lib/nostr/event/validator.ex

defmodule Nostr.Event.Validator do
@moduledoc false
def valid?(%Nostr.Event{} = event) do
valid_id?(event) and valid_sig?(event)
end
defp valid_id?(%Nostr.Event{id: id} = event) do
Nostr.Event.compute_id(event) == id
end
defp valid_sig?(%Nostr.Event{id: id, sig: sig, pubkey: pubkey}) do
Secp256k1.schnorr_valid?(
Base.decode16!(sig, case: :lower),
Base.decode16!(id, case: :lower),
Base.decode16!(pubkey, case: :lower)
)
end
end