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}
39pub 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}
53pub 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}
87pub 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}
126pub 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}
148pub 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}
201pub 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}
221pub 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}
242pub 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}
261pub 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}
312pub 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}
394pub 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}