Commit Graph

40 Commits

Author SHA1 Message Date
Geoffroy Couprie
6334679466 specify the current format version number 2022-03-22 17:58:46 +01:00
Clément Delafargue
33cffbab31
spec: general v2 cleanup (#98)
- markdown fixes
- wording fixes
- grammar fixes
- removed v0 and v1 spec
2022-03-21 17:56:44 +01:00
Geoffroy Couprie
f30066559d
update the default symbol table (#96)
this removes unused symbol from the default table and adds more symbols to the list.

to allow for further growth of the default symbol table, we reserve
indexes from 0 to 1023. Any custom symbol defined in tokens or
authorizers must start from 1024
2022-03-21 16:51:34 +01:00
Clément Delafargue
cb12f09c60
Allow multiple rule bodies in checks and policies
The implementations allow having multiple rule bodies (separated with `or`): only one of them needs to match for the check / policy to match.
2022-03-09 10:27:04 +01:00
Geoffroy Couprie
cbc7aace72 add an EBNF grammar for Datalog 2021-10-29 22:25:05 +02:00
Clement Delafargue
f628f09525 describe the different kinds of biscuits in the glossary 2021-10-01 17:18:54 +02:00
Geoffroy Couprie
f38c856c78 the key is now serialized with an enum indicating its algorithm
this will open the way t other urves or algorithms, like P256
2021-09-24 23:37:28 +02:00
Geoffroy Couprie
040c204693 use the signature as revocation id 2021-09-09 21:57:10 +02:00
Geoffroy Couprie
6092bd1614 remove symbols
They complicated the Datalog, and the #authority and #ambient symbols
are not needed anymore with the scoped execution
2021-09-09 21:56:02 +02:00
Geoffroy Couprie
0175a4e3c5 implement scoped rules, remove #authority and #ambient
the scoped execution model ensures that checks and rules only
have access to facts added or generated in the current or previous
blocks. They cannot be affected by facts from later blocks. Verifier
rules, checks and policies are executed in the context of the authority
block

Since this change can prevent check from the authority block and the
verifier from being affected by facts from later block, we can remove
the #authority and #ambient symbols
2021-09-05 23:35:46 +02:00
Geoffroy Couprie
d91e055156 new cryptographic scheme 2021-09-03 18:37:09 +02:00
Geoffroy Couprie
245ab9e974 merge 1.0 2021-03-11 10:07:08 +01:00
adeinega
8298b2fe10
Mnr typos 2021-03-03 15:08:28 -08:00
Geoffroy Couprie
1c09f36934 add more expression operations
add a sample executing them
2021-02-26 17:47:03 +01:00
Geoffroy Couprie
bf3f7b26d7 add revocation ids to the specification
we generate unique revocation ids for each block of the token, that also
depend on the previous block. That way, when holding a token, we also
have valid revocation ids for each of its parent tokens.

Since they are generated from hashes of the token's data, revocation can
be added to an existing system even after tokens were created
2021-02-26 10:46:27 +01:00
Geoffroy Couprie
c32e567777 more info about versioning 2021-02-16 16:13:27 +01:00
Geoffroy Couprie
6be17b92d8 add more info to the spec 2021-02-16 15:27:33 +01:00
Alexis Guéganno
7aafe71893 chore: fix some typo and markdown formatting problems 2021-02-12 16:59:14 +01:00
Geoffroy Couprie
ec99146e46 replace constraints with expressions
Expressions are a superset of constraints, they can support multiple
variables, and other operations like additions
2021-01-22 16:00:19 +01:00
Geoffroy Couprie
f5169d225f add the set type 2021-01-08 16:43:35 +01:00
Geoffroy Couprie
0954e32224 add boolean type 2021-01-08 15:30:13 +01:00
Geoffroy Couprie
cc6d55e0bd remove the * from rule heads
this made the syntax confusing
2020-12-22 10:31:21 +01:00
Geoffroy Couprie
828f4c3879 the text representation now allows variable names
having only numbers as variable names was not making rules easy to
follow. Thanks to the symbol table, we have a mechanism to convert
between a string and a number, so we can use it to convert from a name
to an id when adding to the token, but also when printing it, so the
rule would be read the same way on both ends.

Since we're only adding more entries to the symbol table, and integer
ids are still used, tokens generated with the new variable names should
be usable directly with older implementations
2020-11-19 12:27:52 +01:00
Geoffroy Couprie
1529a2e5df Add the byte array type
this will be useful to transport arbitrary data in the token without
encoding it in base 64
2020-09-11 16:53:57 +02:00
Geoffroy Couprie
556f7d83b6
update the text format 2020-08-19 17:54:37 +02:00
Geoffroy Couprie
8893505ab8 text format 2019-12-19 11:07:43 +01:00
Geoffroy Couprie
db71970d06 update the spec
- context
- verifier caveats
- merging blocks data instead of verifying each block separately
- verifier queries
2019-12-19 10:57:45 +01:00
Geoffroy Couprie
be9c40fdde move caveat language examples 2019-12-19 09:58:28 +01:00
Geoffroy Couprie
f82fb6513f mention regular expression string constraints 2019-12-19 09:51:14 +01:00
Geoffroy Couprie
a0c6952123 format modification: every block can have rules and facts
before:
- rules in an authority block are authority facts generation rules
- rules in other blocks are caveats

now:
- rules in an authority block are authority facts generation rules
- rules in other block are facts generation rules for this block's validation
- caveats in the authority block are tested once at the beginning of
the validation
- caveats in an other block are specific to that block's validation
2019-10-29 11:57:13 +01:00
Geoffroy Couprie
6c72c8357f
blocks and symbol tables 2019-09-17 17:00:30 +02:00
Geoffroy Couprie
772e457ef3
storage format and crypto operations 2019-09-17 16:39:46 +02:00
Geoffroy Couprie
5454c48035
Update SPECIFICATIONS.md 2019-09-17 15:47:33 +02:00
Geoffroy Couprie
68cfd6f340 move to protobuf 2019-04-01 17:41:20 +02:00
Geoffroy Couprie
62a1b24d75 more info on caveats 2019-03-20 15:44:40 +01:00
Geoffroy Couprie
319ecc2165 add the logic language's description 2019-03-20 15:28:54 +01:00
Geoffroy Couprie
0fc3c7bebf specs structure and introduction 2019-03-20 15:22:02 +01:00
Geoffroy Couprie
a73976a527 start specifications 2019-03-19 10:42:39 +01:00
Geoffroy Couprie
df6e69c7ba fix links 2019-03-19 10:41:32 +01:00
Geoffroy Couprie
20955862c4 specifications placeholder 2019-03-19 10:38:21 +01:00