ssi_data_integrity/any/suite/
mod.rs1mod unknown;
2use ssi_claims_core::ResolverProvider;
3use ssi_eip712::Eip712TypesLoaderProvider;
4use ssi_json_ld::JsonLdLoaderProvider;
5pub use unknown::*;
6
7use crate::{macros, AnyResolver, AnySignatureOptions};
8
9mod pick;
10
11macros::crypto_suites! {
12 #[cfg(all(feature = "w3c", feature = "rsa"))]
16 rsa_signature_2018: RsaSignature2018,
17
18 #[cfg(all(feature = "w3c", feature = "ed25519"))]
22 ed25519_signature_2018: Ed25519Signature2018,
23
24 #[cfg(all(feature = "w3c", feature = "ed25519"))]
28 ed25519_signature_2020: Ed25519Signature2020,
29
30 #[cfg(all(feature = "w3c", feature = "ed25519"))]
35 eddsa_2022: EdDsa2022,
36
37 #[cfg(all(feature = "w3c", feature = "ed25519"))]
41 eddsa_rdfc_2022: EdDsaRdfc2022,
42
43 #[cfg(all(feature = "w3c", feature = "secp256k1"))]
47 ecdsa_secp_256k1_signature2019: EcdsaSecp256k1Signature2019,
48
49 #[cfg(all(feature = "w3c", feature = "secp256r1"))]
53 ecdsa_secp_256r1_signature2019: EcdsaSecp256r1Signature2019,
54
55 #[cfg(all(feature = "w3c", any(feature = "secp256r1", feature = "secp384r1")))]
56 ecdsa_rdfc_2019: EcdsaRdfc2019,
57
58 #[cfg(all(feature = "w3c", feature = "secp256r1"))]
59 ecdsa_sd_2023: EcdsaSd2023,
60
61 #[cfg(feature = "w3c")]
65 json_web_signature_2020: JsonWebSignature2020,
66
67 #[cfg(all(feature = "w3c", feature = "eip712"))]
68 ethereum_eip712_signature_2021: EthereumEip712Signature2021,
69
70 #[cfg(all(feature = "w3c", feature = "eip712"))]
71 ethereum_eip712_signature_2021_v0_1: EthereumEip712Signature2021v0_1,
72
73 #[cfg(all(feature = "w3c", feature = "bbs"))]
74 bbs_2023: Bbs2023,
75
76 #[cfg(all(feature = "dif", feature = "secp256k1"))]
80 ecdsa_secp256k1_recovery_signature2020: EcdsaSecp256k1RecoverySignature2020,
81
82 #[cfg(feature = "solana")]
84 solana_signature_2021: SolanaSignature2021,
85
86 #[cfg(feature = "aleo")]
88 aleo_signature_2021: AleoSignature2021,
89
90 #[cfg(all(feature = "tezos", feature = "ed25519"))]
92 ed25519_blake2b_digest_size20_base58_check_encoded_signature_2021: Ed25519BLAKE2BDigestSize20Base58CheckEncodedSignature2021,
93
94 #[cfg(all(feature = "tezos", feature = "secp256r1"))]
96 p256_blake2b_digest_size20_base58_check_encoded_signature_2021: P256BLAKE2BDigestSize20Base58CheckEncodedSignature2021,
97
98 #[cfg(feature = "tezos")]
100 tezos_jcs_signature_2021: TezosJcsSignature2021,
101
102 #[cfg(feature = "tezos")]
104 tezos_signature_2021: TezosSignature2021,
105
106 #[cfg(all(feature = "ethereum", feature = "eip712"))]
107 eip712_signature_2021: Eip712Signature2021,
108
109 #[cfg(all(feature = "ethereum", feature = "secp256k1"))]
110 ethereum_personal_signature_2021: EthereumPersonalSignature2021,
111
112 #[cfg(all(feature = "ethereum", feature = "secp256k1"))]
113 ethereum_personal_signature_2021_v0_1: EthereumPersonalSignature2021v0_1
114}
115
116impl AnyProofOptions {
117 #[cfg(all(feature = "w3c", feature = "eip712"))]
118 pub fn eip712(
119 &self,
120 ) -> Option<&ssi_data_integrity_suites::ethereum_eip712_signature_2021::Eip712Options> {
121 match self {
122 Self::EthereumEip712Signature2021(o) => o.eip712.as_ref(),
123 _ => None,
124 }
125 }
126
127 #[cfg(all(feature = "w3c", feature = "eip712"))]
128 pub fn eip712_mut(
129 &mut self,
130 ) -> Option<&mut ssi_data_integrity_suites::ethereum_eip712_signature_2021::Eip712Options> {
131 match self {
132 Self::EthereumEip712Signature2021(o) => o.eip712.as_mut(),
133 _ => None,
134 }
135 }
136
137 #[cfg(all(feature = "w3c", feature = "eip712"))]
138 pub fn eip712_v0_1(
139 &self,
140 ) -> Option<&ssi_data_integrity_suites::ethereum_eip712_signature_2021::v0_1::Eip712Options>
141 {
142 match self {
143 Self::EthereumEip712Signature2021v0_1(o) => o.eip712.as_ref(),
144 _ => None,
145 }
146 }
147
148 #[cfg(all(feature = "w3c", feature = "eip712"))]
149 pub fn eip712_v0_1_mut(
150 &mut self,
151 ) -> Option<&mut ssi_data_integrity_suites::ethereum_eip712_signature_2021::v0_1::Eip712Options>
152 {
153 match self {
154 Self::EthereumEip712Signature2021v0_1(o) => o.eip712.as_mut(),
155 _ => None,
156 }
157 }
158}
159
160pub struct AnyVerifier<R, M, L1, L2> {
161 pub resolver: AnyResolver<R, M>,
162 pub json_ld_loader: L1,
163 pub eip712_loader: L2,
164}
165
166impl<R, M, L1, L2> ResolverProvider for AnyVerifier<R, M, L1, L2> {
167 type Resolver = AnyResolver<R, M>;
168
169 fn resolver(&self) -> &Self::Resolver {
170 &self.resolver
171 }
172}
173
174impl<R, M, L1: ssi_json_ld::Loader, L2> JsonLdLoaderProvider for AnyVerifier<R, M, L1, L2> {
175 type Loader = L1;
176
177 fn loader(&self) -> &Self::Loader {
178 &self.json_ld_loader
179 }
180}
181
182impl<R, M, L1, L2: ssi_eip712::TypesLoader> Eip712TypesLoaderProvider
183 for AnyVerifier<R, M, L1, L2>
184{
185 type Loader = L2;
186
187 fn eip712_types(&self) -> &Self::Loader {
188 &self.eip712_loader
189 }
190}