core_crypto_ffi/e2ei/
acme_challenge.rs

1#[cfg(target_family = "wasm")]
2use wasm_bindgen::prelude::*;
3
4/// For creating a challenge.
5///
6/// - See https://www.rfc-editor.org/rfc/rfc8555.html#section-7.5.1
7/// - See [core_crypto::e2e_identity::types::E2eiAcmeChallenge]
8#[derive(Debug, Clone)]
9#[cfg_attr(
10    target_family = "wasm",
11    wasm_bindgen(getter_with_clone),
12    derive(serde::Serialize, serde::Deserialize)
13)]
14#[cfg_attr(not(target_family = "wasm"), derive(uniffi::Record))]
15pub struct AcmeChallenge {
16    /// Contains raw JSON data of this challenge. This is parsed by the underlying Rust library hence should not be accessed
17    #[cfg_attr(target_family = "wasm", wasm_bindgen(readonly))]
18    pub delegate: Vec<u8>,
19    /// URL of this challenge
20    #[cfg_attr(target_family = "wasm", wasm_bindgen(readonly))]
21    pub url: String,
22    /// Non-standard, Wire specific claim. Indicates the consumer from where it should get the challenge proof.
23    /// Either from wire-server "/access-token" endpoint in case of a DPoP challenge, or from an OAuth token endpoint for an OIDC challenge
24    #[cfg_attr(target_family = "wasm", wasm_bindgen(readonly))]
25    pub target: String,
26}
27
28impl From<core_crypto::prelude::E2eiAcmeChallenge> for AcmeChallenge {
29    fn from(chall: core_crypto::prelude::E2eiAcmeChallenge) -> Self {
30        Self {
31            delegate: chall.delegate,
32            url: chall.url,
33            target: chall.target,
34        }
35    }
36}
37
38impl From<AcmeChallenge> for core_crypto::prelude::E2eiAcmeChallenge {
39    fn from(chall: AcmeChallenge) -> Self {
40        Self {
41            delegate: chall.delegate,
42            url: chall.url,
43            target: chall.target,
44        }
45    }
46}