1#![forbid(unsafe_code, clippy::expect_used, clippy::panic)]
5#![deny(
6 clippy::all,
7 absolute_paths_not_starting_with_crate,
8 deprecated_in_future,
9 missing_copy_implementations,
10 missing_debug_implementations,
11 noop_method_call,
12 rust_2018_compatibility,
13 rust_2018_idioms,
14 rust_2021_compatibility,
15 single_use_lifetimes,
16 trivial_bounds,
17 trivial_casts,
18 trivial_numeric_casts,
19 unreachable_code,
20 unreachable_patterns,
21 unreachable_pub,
22 unstable_features,
23 unused,
24 unused_crate_dependencies,
25 unused_import_braces,
26 unused_lifetimes,
27 unused_qualifications,
28 unused_results,
29 variant_size_differences
30)]
31
32pub mod b64;
33pub mod jwk;
34pub mod jws;
35
36use b64::Bytes;
37use serde::{Deserialize, Serialize};
38
39pub trait MediaTyped {
40 const TYPE: &'static str;
41}
42
43#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
44pub struct Thumbprint {
45 #[serde(skip_serializing_if = "Option::is_none", default, rename = "x5t")]
46 s1: Option<Bytes>,
47
48 #[serde(skip_serializing_if = "Option::is_none", default, rename = "x5t#S256")]
49 s256: Option<Bytes>,
50}