Commit Graph

209 Commits

Author SHA1 Message Date
Geoffroy Couprie
8197ec6182 update the version 2022-11-07 18:27:09 +01:00
Geoffroy Couprie
26574ddf36 realign 2022-11-07 13:49:16 +01:00
Geoffroy Couprie
92253ac16f remove v3 samples 2022-11-07 13:48:20 +01:00
Geoffroy Couprie
fbdb9cb46e
Merge branch 'master' into geal/check-all 2022-11-07 13:47:19 +01:00
Clément Delafargue
91262a5ff4
Merge pull request #103 from divarvel/3rd-party
Spec for third-party blocks
2022-11-07 12:27:27 +01:00
Geoffroy Couprie
0bcd053181
samples 2022-11-07 10:00:14 +01:00
Clément Delafargue
38f0d3b0fa
3rd-party: previous cannot be used in the authorizer 2022-11-07 09:58:21 +01:00
Clément Delafargue
b9bbdeaabc
3rd-party: pin the external signature in the payload of the regular signature
The presence of an external signature changes the semantics of the serialized
payload (specifically how symbol ids are resolved), so it needs to be part of
the signature.
2022-11-07 09:58:20 +01:00
Clément Delafargue
de3d6e16bc
3rd-party: expand on the block versionning strategy
In some cases, we want implemenations to not use the highest block version
available, for backwards compatibility.
2022-11-07 09:58:20 +01:00
Clément Delafargue
dba36c52ad
3rd-party: authorizer facts & rules are separate from authority 2022-11-07 09:58:20 +01:00
Clement Delafargue
e4c598f4d9
3rd party: improve Scope pb definition
The stored value is the index of a public key,
not a block index
2022-11-07 09:58:20 +01:00
Clement Delafargue
15f375513c
3rd-party: describe third-party block request / contents messages 2022-11-07 09:58:20 +01:00
Clement Delafargue
80afed104e
3rd-party: describe specific rules for public keys and symbol interning 2022-11-07 09:58:20 +01:00
Clement Delafargue
71c63b9b5d
3rd-party: describe datalog evaluation changes 2022-11-07 09:58:20 +01:00
Clement Delafargue
9725343b36
3rd-party: specify external signatures in the cryptography section 2022-11-07 09:58:19 +01:00
Clement Delafargue
634cf46aca
3rd-party: add new protobuf fields and messages
- externalSignature allows to attach an optional signature (from a non-ephemeral private key)
  to biscuit blocks
- scope lets blocks and rules specify which facts can be loaded (either through keywords
  for selecting groups of blocks, or through public keys for blocks signed by a specific
  key)
- publicKeys provides a way to intern public keys in a way similar to symbols. Only public
  keys referenced in datalog elements can be interned
- ThirdPartyBlockRequest / ThirdPartyBlockContents provide a way to add a signed 3rd party block
  to a given biscuit token without disclosing the token itself. For that, the request needs to
  provide:
    - the public key of the last block (needed to pin the signature to a specific biscuit token)
    - the list of already interned public keys (needed to properly generate the datalog ast).
      Contrary to public keys, interned symbols are not shared to 3rd party blocks to prevent
      information leaks.
  The response provides the serialized block, as well as the associated signature.
2022-11-07 09:58:19 +01:00
Geoffroy Couprie
70db241f4c update samples 2022-11-04 23:48:01 +01:00
Geoffroy Couprie
2c8e67aafd Merge branch 'master' into geal/check-all 2022-11-04 23:15:17 +01:00
Geoffroy Couprie
e317bd66d0
reorganize the samples folder (#115) 2022-11-04 22:47:55 +01:00
Geoffroy Couprie
561ca691ac v3 samples 2022-11-02 23:43:52 +01:00
Geoffroy Couprie
c861db415b Merge branch 'master' into geal/check-all 2022-10-28 18:59:28 +02:00
Geoffroy Couprie
f31e9b8804 grammar 2022-10-28 18:56:25 +02:00
Geoffroy Couprie
f56fffaa4c specification for check all 2022-10-28 18:54:41 +02:00
Clément Delafargue
e92bbc7c60
Merge pull request #108 from urbainy/fixtypo
Fix typos for SPECIFICATIONS.md
2022-10-26 10:49:22 +02:00
Mathieu Jolivet
07894dd1ca
fix typo in set specification (#111) 2022-10-25 00:24:27 +02:00
Urbain YANG
4cf72faf35 Fix typos for SPECIFICATIONS.md 2022-08-26 17:19:36 +08:00
Clément Delafargue
b6a9db58ee
Fix typo in grammar (#104) 2022-05-17 22:14:29 +02:00
Geoffroy Couprie
10863a0789
Bump format version (#102)
* bump the format version to 3

* revocation ids in samples are now available outside of datalog

* specify the current format version number
2022-03-23 13:19:33 +01:00
Clément Delafargue
e08d8e758d
proto: remove now-unused constraints (#101) 2022-03-22 12:41:55 +01:00
Geoffroy Couprie
c8314a73b1
restrict the execution scope to the authority and current block (#99)
* add read, write and time to the default symbol table

remove authority an ambient from the symbol table, as they are not used
anymore

* restrict the execution scope to the authority and current block

previously when evaluating a block, we used facts from the authorizer
and all previous blocks. This changes the execution scope to use only
the authority block, authorizer and the current block, which is a much
safer default and aligns more with expectations.

Execution using all previous blocks will be accessible again in the
future through an option
2022-03-22 11:55:52 +01:00
Geoffroy Couprie
4e1b7fb399
implement concatenation and substring matching for strings (#100) 2022-03-22 09:11:02 +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
Geoffroy Couprie
098ce26b9f
Merge pull request #92 from divarvel/patch-3
Allow multiple rule bodies in checks and policies
2022-03-09 17:28:49 +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
43369593bc
fix link 2022-01-27 19:07:33 +01:00
Geoffroy Couprie
6c8b5bd7e3
Merge pull request #87 from divarvel/patch-2
Update readme
2022-01-22 13:25:32 +01:00
Geoffroy Couprie
fd26ef0863
add the matrix URL 2022-01-22 13:25:04 +01:00
Clément Delafargue
99d6b07e25
Update readme
Now that v2 is done in rust and haskell and biscuitsec.org is live
2022-01-13 21:23:25 +01:00
Geoffroy Couprie
70e6d21c42
Merge pull request #83 from jdtw/patch-1
Fix a few minor typos
2022-01-12 19:02:29 +01:00
Geoffroy Couprie
c04f766119
Merge branch 'master' into patch-1 2022-01-12 19:02:22 +01:00
Geoffroy Couprie
3a200b4170
Merge pull request #77 from biscuit-auth/2.0
[WIP] Biscuit 2.0 specification and samples
2022-01-12 18:55:34 +01:00
Geoffroy Couprie
e8f575ed61 show which policy matched even if some checks failed 2021-12-30 18:04:14 +01:00
Geoffroy Couprie
2d2e03ff09 serialize errors to JSON
implementations will be able to compare the returned errors
2021-12-24 13:15:45 +01:00
Geoffroy Couprie
4dff10995d origin mentions 2021-12-02 21:50:18 +01:00
John Wood
6169fbde0d
Fix a few minor typos 2021-10-31 10:28:42 -07:00
Geoffroy Couprie
cbc7aace72 add an EBNF grammar for Datalog 2021-10-29 22:25:05 +02:00
Geoffroy Couprie
a45093843d add a testcase for characters used in strings and fact names 2021-10-11 23:45:06 +02:00
Geoffroy Couprie
16357ce0fd rename verifier to authorizer 2021-10-05 23:45:38 +02:00
Geoffroy Couprie
a4cddcec8e
Merge pull request #81 from divarvel/clarify-vocabulary
Clarify vocabulary
2021-10-01 17:22:42 +02:00