These 54 commits are when the Protocol Buffers files have changed:
Commit: | 85cf98e | |
---|---|---|
Author: | Clement Delafargue | |
Committer: | Clement Delafargue |
add missing samples - third-party block with secp256r1 signature - try operation
The documentation is generated from this commit.
Commit: | 3ac8c50 | |
---|---|---|
Author: | Clement Delafargue |
Merge branch 'main' into dev
Commit: | d1badff | |
---|---|---|
Author: | Clement Delafargue | |
Committer: | Clement Delafargue |
clarify datalog versions (3.x) improve a bit the specification for third-party block version constraints
Commit: | ed1c53d | |
---|---|---|
Author: | Geoffroy Couprie | |
Committer: | GitHub |
Support for ECDSA signatures on curve secp256r1 (#165) This adds support for ECDSA signatures based on secp256r1. This will make it easier for biscuit tokens to work in environments with FIPS requirements, or with HSMs
Commit: | db2ce5f | |
---|---|---|
Author: | Geoffroy Couprie |
Merge branch 'dev' into fipscuit
Commit: | 1c7ca0c | |
---|---|---|
Author: | Clement Delafargue | |
Committer: | Clement Delafargue |
ffi: intern function names
Commit: | 7e601cb | |
---|---|---|
Author: | Geoffroy Couprie | |
Committer: | GitHub |
Signature payload format v1 (#175) This introduces a new way to construct the payload for block signatures and external signatures: - prefixes are used to recognize each type of signature: `BLOCK` or `EXTERNAL` - prefixes are used to separate each part of the payload - external signature payloads contain the signature of the previous block instead of the current block's public key - block signatures now contain the signature of the previous block too - the previous payload format for block signatures. is deprecated Still supported, but will be removed in a future major version - the previous payload format for external signatures is not supported anymore Co-authored-by: Clément Delafargue <clement.delafargue@outscale.com>
Commit: | d9e8f7b | |
---|---|---|
Author: | Geoffroy Couprie | |
Committer: | GitHub |
Merge branch 'dev' into geal/payload-v1
Commit: | 4c92811 | |
---|---|---|
Author: | Geoffroy Couprie |
update format and samples
Commit: | 90fbea9 | |
---|---|---|
Author: | Clement Delafargue |
specifcy FFI operations
Commit: | 05a49da | |
---|---|---|
Author: | Clement Delafargue | |
Committer: | Clement Delafargue |
Update schema.proto with maps and arrays Also explictly document the `Get` binary operation
Commit: | 1514dd5 | |
---|---|---|
Author: | Clement Delafargue | |
Committer: | Clement Delafargue |
update samples and schema based on the latest v5 branch in biscuit-rust
Commit: | 336a73c | |
---|---|---|
Author: | Geoffroy Couprie |
introduce ECDSA signatures with secp256r1
Commit: | b98e7b7 | |
---|---|---|
Author: | Geoffroy Couprie | |
Committer: | GitHub |
add a new message format for authorizer snapshots (#122) * add a new message format for authorizer snapshots the fact scopes have to be transmitted if we want to replay an authorizers behaviour. AuthorizerPolicies can be kept as a way to share plicies to bootstrap the authorizer * update the format
Commit: | a1db4ba | |
---|---|---|
Author: | Geoffroy Couprie |
update the format
Commit: | c459133 | |
---|---|---|
Author: | Geoffroy Couprie |
Merge branch 'master' into authorizer-snapshot
Commit: | 08da11a | |
---|---|---|
Author: | Clement Delafargue |
Add `NotEqual` to the protobuf schema
Commit: | f8c5a86 | |
---|---|---|
Author: | Geoffroy Couprie | |
Committer: | GitHub |
missing update to the schema for "check all" (#121) Co-authored-by: Clément Delafargue <clement@delafargue.name>
Commit: | 4017f3b | |
---|---|---|
Author: | Geoffroy Couprie |
add a new message format for authorizer snapshots the fact scopes have to be transmitted if we want to replay an authorizers behaviour. AuthorizerPolicies can be kept as a way to share plicies to bootstrap the authorizer
Commit: | 98dcde0 | |
---|---|---|
Author: | Geoffroy Couprie | |
Committer: | Geoffroy Couprie |
replace None with One
Commit: | 22dc1cf | |
---|---|---|
Author: | Geoffroy Couprie | |
Committer: | GitHub |
Update schema.proto Co-authored-by: Clément Delafargue <clement@delafargue.name>
Commit: | 256677f | |
---|---|---|
Author: | Geoffroy Couprie |
missing update to the schema for "check all"
Commit: | 8c8c433 | |
---|---|---|
Author: | Clément Delafargue | |
Committer: | GitHub |
SPEC: add support for bitwise operators on booleans (#112) Such operators are only valid for v4 blocks Co-authored-by: Geoffroy Couprie <contact@geoffroycouprie.com>
Commit: | c158142 | |
---|---|---|
Author: | Geoffroy Couprie |
Merge branch 'master' into bitwise-operators
Commit: | e4c598f | |
---|---|---|
Author: | Clement Delafargue | |
Committer: | Clément Delafargue |
3rd party: improve Scope pb definition The stored value is the index of a public key, not a block index
Commit: | 634cf46 | |
---|---|---|
Author: | Clement Delafargue | |
Committer: | Clément Delafargue |
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.
Commit: | f2426ee | |
---|---|---|
Author: | Clément Delafargue | |
Committer: | Clément Delafargue |
SPEC: add support for bitwise operators on booleans Such operators are only valid for v4 blocks, but the v4 version selection part has not been merged yet (it's in the 3rd-party PR)
Commit: | 19d68b4 | |
---|---|---|
Author: | Clement Delafargue |
3rd party: improve Scope pb definition The stored value is the index of a public key, not a block index
Commit: | 9da2adf | |
---|---|---|
Author: | Clement Delafargue | |
Committer: | Clement Delafargue |
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.
Commit: | e08d8e7 | |
---|---|---|
Author: | Clément Delafargue | |
Committer: | GitHub |
proto: remove now-unused constraints (#101)
Commit: | 16357ce | |
---|---|---|
Author: | Geoffroy Couprie |
rename verifier to authorizer
Commit: | f38c856 | |
---|---|---|
Author: | Geoffroy Couprie |
the key is now serialized with an enum indicating its algorithm this will open the way t other urves or algorithms, like P256
Commit: | 6c9f12d | |
---|---|---|
Author: | Geoffroy Couprie |
rename ID to Term in the protobuf schema
Commit: | a195fb4 | |
---|---|---|
Author: | Geoffroy Couprie |
remove the symbol type symbols were a kind of strings with less available operations and some specific optimizations: they store in index into a symbol table carried by the token, to reduce size by avoiding repetitions. They were too confusing for users, and now that #authority and #ambient are gone, we can remove them completely. The symbol table was useful though, so now the symbol table is used for all predicate names and strings
Commit: | 264dbb0 | |
---|---|---|
Author: | Geoffroy Couprie | |
Committer: | Geoffroy Couprie |
start updating the schema for v2 - remove v0 compatibility - convert v1 to v2 - remove the index from blocks (now the cryptographisc design guarantees the order
Commit: | d91e055 | |
---|---|---|
Author: | Geoffroy Couprie | |
Committer: | Geoffroy Couprie |
new cryptographic scheme
Commit: | f378512 | |
---|---|---|
Author: | Geoffroy Couprie |
add a format to transport verifier state there are two use cases for this: - quickly loading verifier policies from a serialized state instead of manually adding datalog elements one by one through the verifier API. The policies could even be written in a different system then published to running instances dynamically - save the state of a verifier, including ambient data, facts, rules and checks coming from a token, to later load it into another verifier and inspect it
Commit: | e272bdd | |
---|---|---|
Author: | Geoffroy Couprie |
missing schema update
Commit: | 01ea43f | |
---|---|---|
Author: | Geoffroy Couprie |
method syntax for set and string expressions this commit introduces a method-like syntax for these operations: - .starts_with() - .ends_with() - .matches() - .contains() (replacing the In operation) There is no satisfying name to replace the "not in" operation, so it is replaced by a "contains" and negation, like this: "!set.contains($var)". The NotIn operation is removed from the V1 schema
Commit: | fedca76 | |
---|---|---|
Author: | Geoffroy Couprie |
support parenthesis in expressions it needs to be suported in the bytecode, to let us print the expressions properly
Commit: | fea8c33 | |
---|---|---|
Author: | Geoffroy Couprie |
rename caveat to check, introduce allow/deny policies and new syntax the meaning of "caveat" was not clear enough for users (outside of those already familiar with macaroons), while "check" is more obvious: in a "checklist", all items must be validated. Allow and deny policies can be added only in the verifier (not in tokens so there's no format change here). They use rules under the hood like checks, and are tested one by one until one of them matches. A default policy should be added to the verifier, otherwise it will return the NoMatchingPolicy error. To keep the current behaviour of accepting the request once all checks have been validated, we use the default policy "allow if true", that only contains the expression "true". At last, we introduce a new syntax for checks and policies: caveat1($0) <- resource(#ambient, $0), operation(#ambient, #read), right(#authority, $0, #read) is rewritten as: check if resource(#ambient, $0), operation(#ambient, #read), right(#authority, $0, #read) Similarly, allow and deny policies use "allow if" and "deny if" prefixes. If a check contains multiple rules, they are separated with "or". All of those keywords are case insensitive.
Commit: | ec99146 | |
---|---|---|
Author: | Geoffroy Couprie |
replace constraints with expressions Expressions are a superset of constraints, they can support multiple variables, and other operations like additions
Commit: | f5169d2 | |
---|---|---|
Author: | Geoffroy Couprie | |
Committer: | Geoffroy Couprie |
add the set type
Commit: | 0954e32 | |
---|---|---|
Author: | Geoffroy Couprie |
add boolean type
Commit: | 0ec07df | |
---|---|---|
Author: | Geoffroy Couprie |
use oneof in the Protobuf schema this simplifies the format, using oneof instead of a 'Kind' enum with optional fields. Additionally, it reduces token size
Commit: | 456549d | |
---|---|---|
Author: | Geoffroy Couprie |
rename integer constraints
Commit: | 51862ad | |
---|---|---|
Author: | Geoffroy Couprie |
duplicate messages for v1 currently the messages have the same structure as v0, but they will change significantly
Commit: | 43e975e | |
---|---|---|
Author: | Geoffroy Couprie | |
Committer: | Geoffroy Couprie |
version field in block format this changes the Protobuf format to add a version field to blocks, set to 0 for now. This change will ship in the 0.9 version of the Rust version. When deserializing a token, we wil check the version field. if not present, we assume the block is at version 0. A token can contain blocks with different versions, so a token generated by an old library can be attenuated by a newer one. If the version is higher than the maximum one for the library, the token will be rejected
Commit: | 1529a2e | |
---|---|---|
Author: | Geoffroy Couprie | |
Committer: | Geoffroy Couprie |
Add the byte array type this will be useful to transport arbitrary data in the token without encoding it in base 64
Commit: | 90df050 | |
---|---|---|
Author: | Geoffroy Couprie |
a Caveat can now contain multiple rules This allows us to implement "OR" for caveats: one of the provided rules has to succeed
Commit: | f638244 | |
---|---|---|
Author: | Geoffroy Couprie |
update the schema
Commit: | a0c6952 | |
---|---|---|
Author: | Geoffroy Couprie |
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
Commit: | 653f534 | |
---|---|---|
Author: | Geoffroy Couprie |
update the schema for aggregated gamma signatures the new signatures are smaller
Commit: | 68cfd6f | |
---|---|---|
Author: | Geoffroy Couprie |
move to protobuf