biscuit_auth/format/
schema.rs

1#[derive(Clone, PartialEq, ::prost::Message)]
2pub struct Biscuit {
3    #[prost(uint32, optional, tag="1")]
4    pub root_key_id: ::core::option::Option<u32>,
5    #[prost(message, required, tag="2")]
6    pub authority: SignedBlock,
7    #[prost(message, repeated, tag="3")]
8    pub blocks: ::prost::alloc::vec::Vec<SignedBlock>,
9    #[prost(message, required, tag="4")]
10    pub proof: Proof,
11}
12#[derive(Clone, PartialEq, ::prost::Message)]
13pub struct SignedBlock {
14    #[prost(bytes="vec", required, tag="1")]
15    pub block: ::prost::alloc::vec::Vec<u8>,
16    #[prost(message, required, tag="2")]
17    pub next_key: PublicKey,
18    #[prost(bytes="vec", required, tag="3")]
19    pub signature: ::prost::alloc::vec::Vec<u8>,
20    #[prost(message, optional, tag="4")]
21    pub external_signature: ::core::option::Option<ExternalSignature>,
22    #[prost(uint32, optional, tag="5")]
23    pub version: ::core::option::Option<u32>,
24}
25#[derive(Clone, PartialEq, ::prost::Message)]
26pub struct ExternalSignature {
27    #[prost(bytes="vec", required, tag="1")]
28    pub signature: ::prost::alloc::vec::Vec<u8>,
29    #[prost(message, required, tag="2")]
30    pub public_key: PublicKey,
31}
32#[derive(Clone, PartialEq, ::prost::Message)]
33pub struct PublicKey {
34    #[prost(enumeration="public_key::Algorithm", required, tag="1")]
35    pub algorithm: i32,
36    #[prost(bytes="vec", required, tag="2")]
37    pub key: ::prost::alloc::vec::Vec<u8>,
38}
39/// Nested message and enum types in `PublicKey`.
40pub mod public_key {
41    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
42    #[repr(i32)]
43    pub enum Algorithm {
44        Ed25519 = 0,
45        Secp256r1 = 1,
46    }
47}
48#[derive(Clone, PartialEq, ::prost::Message)]
49pub struct Proof {
50    #[prost(oneof="proof::Content", tags="1, 2")]
51    pub content: ::core::option::Option<proof::Content>,
52}
53/// Nested message and enum types in `Proof`.
54pub mod proof {
55    #[derive(Clone, PartialEq, ::prost::Oneof)]
56    pub enum Content {
57        #[prost(bytes, tag="1")]
58        NextSecret(::prost::alloc::vec::Vec<u8>),
59        #[prost(bytes, tag="2")]
60        FinalSignature(::prost::alloc::vec::Vec<u8>),
61    }
62}
63#[derive(Clone, PartialEq, ::prost::Message)]
64pub struct Block {
65    #[prost(string, repeated, tag="1")]
66    pub symbols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
67    #[prost(string, optional, tag="2")]
68    pub context: ::core::option::Option<::prost::alloc::string::String>,
69    #[prost(uint32, optional, tag="3")]
70    pub version: ::core::option::Option<u32>,
71    #[prost(message, repeated, tag="4")]
72    pub facts: ::prost::alloc::vec::Vec<Fact>,
73    #[prost(message, repeated, tag="5")]
74    pub rules: ::prost::alloc::vec::Vec<Rule>,
75    #[prost(message, repeated, tag="6")]
76    pub checks: ::prost::alloc::vec::Vec<Check>,
77    #[prost(message, repeated, tag="7")]
78    pub scope: ::prost::alloc::vec::Vec<Scope>,
79    #[prost(message, repeated, tag="8")]
80    pub public_keys: ::prost::alloc::vec::Vec<PublicKey>,
81}
82#[derive(Clone, PartialEq, ::prost::Message)]
83pub struct Scope {
84    #[prost(oneof="scope::Content", tags="1, 2")]
85    pub content: ::core::option::Option<scope::Content>,
86}
87/// Nested message and enum types in `Scope`.
88pub mod scope {
89    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
90    #[repr(i32)]
91    pub enum ScopeType {
92        Authority = 0,
93        Previous = 1,
94    }
95    #[derive(Clone, PartialEq, ::prost::Oneof)]
96    pub enum Content {
97        #[prost(enumeration="ScopeType", tag="1")]
98        ScopeType(i32),
99        #[prost(int64, tag="2")]
100        PublicKey(i64),
101    }
102}
103#[derive(Clone, PartialEq, ::prost::Message)]
104pub struct Fact {
105    #[prost(message, required, tag="1")]
106    pub predicate: Predicate,
107}
108#[derive(Clone, PartialEq, ::prost::Message)]
109pub struct Rule {
110    #[prost(message, required, tag="1")]
111    pub head: Predicate,
112    #[prost(message, repeated, tag="2")]
113    pub body: ::prost::alloc::vec::Vec<Predicate>,
114    #[prost(message, repeated, tag="3")]
115    pub expressions: ::prost::alloc::vec::Vec<Expression>,
116    #[prost(message, repeated, tag="4")]
117    pub scope: ::prost::alloc::vec::Vec<Scope>,
118}
119#[derive(Clone, PartialEq, ::prost::Message)]
120pub struct Check {
121    #[prost(message, repeated, tag="1")]
122    pub queries: ::prost::alloc::vec::Vec<Rule>,
123    #[prost(enumeration="check::Kind", optional, tag="2")]
124    pub kind: ::core::option::Option<i32>,
125}
126/// Nested message and enum types in `Check`.
127pub mod check {
128    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
129    #[repr(i32)]
130    pub enum Kind {
131        One = 0,
132        All = 1,
133        Reject = 2,
134    }
135}
136#[derive(Clone, PartialEq, ::prost::Message)]
137pub struct Predicate {
138    #[prost(uint64, required, tag="1")]
139    pub name: u64,
140    #[prost(message, repeated, tag="2")]
141    pub terms: ::prost::alloc::vec::Vec<Term>,
142}
143#[derive(Clone, PartialEq, ::prost::Message)]
144pub struct Term {
145    #[prost(oneof="term::Content", tags="1, 2, 3, 4, 5, 6, 7, 8, 9, 10")]
146    pub content: ::core::option::Option<term::Content>,
147}
148/// Nested message and enum types in `Term`.
149pub mod term {
150    #[derive(Clone, PartialEq, ::prost::Oneof)]
151    pub enum Content {
152        #[prost(uint32, tag="1")]
153        Variable(u32),
154        #[prost(int64, tag="2")]
155        Integer(i64),
156        #[prost(uint64, tag="3")]
157        String(u64),
158        #[prost(uint64, tag="4")]
159        Date(u64),
160        #[prost(bytes, tag="5")]
161        Bytes(::prost::alloc::vec::Vec<u8>),
162        #[prost(bool, tag="6")]
163        Bool(bool),
164        #[prost(message, tag="7")]
165        Set(super::TermSet),
166        #[prost(message, tag="8")]
167        Null(super::Empty),
168        #[prost(message, tag="9")]
169        Array(super::Array),
170        #[prost(message, tag="10")]
171        Map(super::Map),
172    }
173}
174#[derive(Clone, PartialEq, ::prost::Message)]
175pub struct TermSet {
176    #[prost(message, repeated, tag="1")]
177    pub set: ::prost::alloc::vec::Vec<Term>,
178}
179#[derive(Clone, PartialEq, ::prost::Message)]
180pub struct Array {
181    #[prost(message, repeated, tag="1")]
182    pub array: ::prost::alloc::vec::Vec<Term>,
183}
184#[derive(Clone, PartialEq, ::prost::Message)]
185pub struct Map {
186    #[prost(message, repeated, tag="1")]
187    pub entries: ::prost::alloc::vec::Vec<MapEntry>,
188}
189#[derive(Clone, PartialEq, ::prost::Message)]
190pub struct MapEntry {
191    #[prost(message, required, tag="1")]
192    pub key: MapKey,
193    #[prost(message, required, tag="2")]
194    pub value: Term,
195}
196#[derive(Clone, PartialEq, ::prost::Message)]
197pub struct MapKey {
198    #[prost(oneof="map_key::Content", tags="1, 2")]
199    pub content: ::core::option::Option<map_key::Content>,
200}
201/// Nested message and enum types in `MapKey`.
202pub mod map_key {
203    #[derive(Clone, PartialEq, ::prost::Oneof)]
204    pub enum Content {
205        #[prost(int64, tag="1")]
206        Integer(i64),
207        #[prost(uint64, tag="2")]
208        String(u64),
209    }
210}
211#[derive(Clone, PartialEq, ::prost::Message)]
212pub struct Expression {
213    #[prost(message, repeated, tag="1")]
214    pub ops: ::prost::alloc::vec::Vec<Op>,
215}
216#[derive(Clone, PartialEq, ::prost::Message)]
217pub struct Op {
218    #[prost(oneof="op::Content", tags="1, 2, 3, 4")]
219    pub content: ::core::option::Option<op::Content>,
220}
221/// Nested message and enum types in `Op`.
222pub mod op {
223    #[derive(Clone, PartialEq, ::prost::Oneof)]
224    pub enum Content {
225        #[prost(message, tag="1")]
226        Value(super::Term),
227        #[prost(message, tag="2")]
228        Unary(super::OpUnary),
229        #[prost(message, tag="3")]
230        Binary(super::OpBinary),
231        #[prost(message, tag="4")]
232        Closure(super::OpClosure),
233    }
234}
235#[derive(Clone, PartialEq, ::prost::Message)]
236pub struct OpUnary {
237    #[prost(enumeration="op_unary::Kind", required, tag="1")]
238    pub kind: i32,
239    #[prost(uint64, optional, tag="2")]
240    pub ffi_name: ::core::option::Option<u64>,
241}
242/// Nested message and enum types in `OpUnary`.
243pub mod op_unary {
244    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
245    #[repr(i32)]
246    pub enum Kind {
247        Negate = 0,
248        Parens = 1,
249        Length = 2,
250        TypeOf = 3,
251        Ffi = 4,
252    }
253}
254#[derive(Clone, PartialEq, ::prost::Message)]
255pub struct OpBinary {
256    #[prost(enumeration="op_binary::Kind", required, tag="1")]
257    pub kind: i32,
258    #[prost(uint64, optional, tag="2")]
259    pub ffi_name: ::core::option::Option<u64>,
260}
261/// Nested message and enum types in `OpBinary`.
262pub mod op_binary {
263    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
264    #[repr(i32)]
265    pub enum Kind {
266        LessThan = 0,
267        GreaterThan = 1,
268        LessOrEqual = 2,
269        GreaterOrEqual = 3,
270        Equal = 4,
271        Contains = 5,
272        Prefix = 6,
273        Suffix = 7,
274        Regex = 8,
275        Add = 9,
276        Sub = 10,
277        Mul = 11,
278        Div = 12,
279        And = 13,
280        Or = 14,
281        Intersection = 15,
282        Union = 16,
283        BitwiseAnd = 17,
284        BitwiseOr = 18,
285        BitwiseXor = 19,
286        NotEqual = 20,
287        HeterogeneousEqual = 21,
288        HeterogeneousNotEqual = 22,
289        LazyAnd = 23,
290        LazyOr = 24,
291        All = 25,
292        Any = 26,
293        Get = 27,
294        Ffi = 28,
295        TryOr = 29,
296    }
297}
298#[derive(Clone, PartialEq, ::prost::Message)]
299pub struct OpClosure {
300    #[prost(uint32, repeated, packed="false", tag="1")]
301    pub params: ::prost::alloc::vec::Vec<u32>,
302    #[prost(message, repeated, tag="2")]
303    pub ops: ::prost::alloc::vec::Vec<Op>,
304}
305#[derive(Clone, PartialEq, ::prost::Message)]
306pub struct Policy {
307    #[prost(message, repeated, tag="1")]
308    pub queries: ::prost::alloc::vec::Vec<Rule>,
309    #[prost(enumeration="policy::Kind", required, tag="2")]
310    pub kind: i32,
311}
312/// Nested message and enum types in `Policy`.
313pub mod policy {
314    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
315    #[repr(i32)]
316    pub enum Kind {
317        Allow = 0,
318        Deny = 1,
319    }
320}
321#[derive(Clone, PartialEq, ::prost::Message)]
322pub struct AuthorizerPolicies {
323    #[prost(string, repeated, tag="1")]
324    pub symbols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
325    #[prost(uint32, optional, tag="2")]
326    pub version: ::core::option::Option<u32>,
327    #[prost(message, repeated, tag="3")]
328    pub facts: ::prost::alloc::vec::Vec<Fact>,
329    #[prost(message, repeated, tag="4")]
330    pub rules: ::prost::alloc::vec::Vec<Rule>,
331    #[prost(message, repeated, tag="5")]
332    pub checks: ::prost::alloc::vec::Vec<Check>,
333    #[prost(message, repeated, tag="6")]
334    pub policies: ::prost::alloc::vec::Vec<Policy>,
335}
336#[derive(Clone, PartialEq, ::prost::Message)]
337pub struct ThirdPartyBlockRequest {
338    #[prost(message, optional, tag="1")]
339    pub legacy_previous_key: ::core::option::Option<PublicKey>,
340    #[prost(message, repeated, tag="2")]
341    pub legacy_public_keys: ::prost::alloc::vec::Vec<PublicKey>,
342    #[prost(bytes="vec", required, tag="3")]
343    pub previous_signature: ::prost::alloc::vec::Vec<u8>,
344}
345#[derive(Clone, PartialEq, ::prost::Message)]
346pub struct ThirdPartyBlockContents {
347    #[prost(bytes="vec", required, tag="1")]
348    pub payload: ::prost::alloc::vec::Vec<u8>,
349    #[prost(message, required, tag="2")]
350    pub external_signature: ExternalSignature,
351}
352#[derive(Clone, PartialEq, ::prost::Message)]
353pub struct AuthorizerSnapshot {
354    #[prost(message, required, tag="1")]
355    pub limits: RunLimits,
356    #[prost(uint64, required, tag="2")]
357    pub execution_time: u64,
358    #[prost(message, required, tag="3")]
359    pub world: AuthorizerWorld,
360}
361#[derive(Clone, PartialEq, ::prost::Message)]
362pub struct RunLimits {
363    #[prost(uint64, required, tag="1")]
364    pub max_facts: u64,
365    #[prost(uint64, required, tag="2")]
366    pub max_iterations: u64,
367    #[prost(uint64, required, tag="3")]
368    pub max_time: u64,
369}
370#[derive(Clone, PartialEq, ::prost::Message)]
371pub struct AuthorizerWorld {
372    #[prost(uint32, optional, tag="1")]
373    pub version: ::core::option::Option<u32>,
374    #[prost(string, repeated, tag="2")]
375    pub symbols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
376    #[prost(message, repeated, tag="3")]
377    pub public_keys: ::prost::alloc::vec::Vec<PublicKey>,
378    #[prost(message, repeated, tag="4")]
379    pub blocks: ::prost::alloc::vec::Vec<SnapshotBlock>,
380    #[prost(message, required, tag="5")]
381    pub authorizer_block: SnapshotBlock,
382    #[prost(message, repeated, tag="6")]
383    pub authorizer_policies: ::prost::alloc::vec::Vec<Policy>,
384    #[prost(message, repeated, tag="7")]
385    pub generated_facts: ::prost::alloc::vec::Vec<GeneratedFacts>,
386    #[prost(uint64, required, tag="8")]
387    pub iterations: u64,
388}
389#[derive(Clone, PartialEq, ::prost::Message)]
390pub struct Origin {
391    #[prost(oneof="origin::Content", tags="1, 2")]
392    pub content: ::core::option::Option<origin::Content>,
393}
394/// Nested message and enum types in `Origin`.
395pub mod origin {
396    #[derive(Clone, PartialEq, ::prost::Oneof)]
397    pub enum Content {
398        #[prost(message, tag="1")]
399        Authorizer(super::Empty),
400        #[prost(uint32, tag="2")]
401        Origin(u32),
402    }
403}
404#[derive(Clone, PartialEq, ::prost::Message)]
405pub struct Empty {
406}
407#[derive(Clone, PartialEq, ::prost::Message)]
408pub struct GeneratedFacts {
409    #[prost(message, repeated, tag="1")]
410    pub origins: ::prost::alloc::vec::Vec<Origin>,
411    #[prost(message, repeated, tag="2")]
412    pub facts: ::prost::alloc::vec::Vec<Fact>,
413}
414#[derive(Clone, PartialEq, ::prost::Message)]
415pub struct SnapshotBlock {
416    #[prost(string, optional, tag="1")]
417    pub context: ::core::option::Option<::prost::alloc::string::String>,
418    #[prost(uint32, optional, tag="2")]
419    pub version: ::core::option::Option<u32>,
420    #[prost(message, repeated, tag="3")]
421    pub facts: ::prost::alloc::vec::Vec<Fact>,
422    #[prost(message, repeated, tag="4")]
423    pub rules: ::prost::alloc::vec::Vec<Rule>,
424    #[prost(message, repeated, tag="5")]
425    pub checks: ::prost::alloc::vec::Vec<Check>,
426    #[prost(message, repeated, tag="6")]
427    pub scope: ::prost::alloc::vec::Vec<Scope>,
428    #[prost(message, optional, tag="7")]
429    pub external_key: ::core::option::Option<PublicKey>,
430}