Improves singing and verification procedures.

This commit is contained in:
Vitor Pamplona 2024-01-03 13:54:10 -05:00
parent f2e016fadd
commit 6feac3ef8c

8
01.md
View File

@ -34,7 +34,7 @@ Each user has a keypair and is identified by their public key.
Signatures and encodings are done according to the [Schnorr signatures standard for the curve `secp256k1`](https://bips.xyz/340).
To obtain the hash `.id`, we `sha256` the UTF-8 byte array of a JSON-serialized string in the following structure:
To assemble the `.id`, hex encode the result of a `sha256` of the UTF-8 byte array of a JSON-serialized string in the following structure:
```
[
@ -58,11 +58,13 @@ The JSON serialization MUST follow these rules:
- backspace: `0x08` to `\b`
- form feed: `0x0C` to `\f`
Then proceed to sign the `.id` with the user's private key.
## Verifying
To verify an event:
1. Recalculate the hash and check against the `.id`
2. Verify if the signature is valid for the `.id`.
2. Verify if the signature is valid for the `.id` and `.pubkey`.
## Kinds
@ -138,7 +140,7 @@ To open, update, and close subscriptions, Clients MUST use the following formats
"#<tag-key2 (single-letter a-zA-Z)>": [<tag value1>, <tag value2>, ...],
"since": <an integer unix timestamp in seconds, events must be newer than this to pass>,
"until": <an integer unix timestamp in seconds, events must be older than this to pass>,
"limit": <maximum number of events to return, sorted by created_at>
"limit": <maximum number of events to return, sorted by created_at desc>
}
```