Skip to main content

botan_sys/
spake2p.rs

1use crate::ec_group::botan_ec_group_t;
2use crate::ffi_types::{botan_view_bin_fn, botan_view_ctx, c_char, c_int};
3use crate::rng::botan_rng_t;
4
5pub enum botan_spake2p_params_struct {}
6pub type botan_spake2p_params_t = *mut botan_spake2p_params_struct;
7
8pub enum botan_spake2p_prover_struct {}
9pub type botan_spake2p_prover_t = *mut botan_spake2p_prover_struct;
10
11pub enum botan_spake2p_verifier_struct {}
12pub type botan_spake2p_verifier_t = *mut botan_spake2p_verifier_struct;
13
14botan_ffi_functions! {
15    #[cfg(botan_ffi_20260811)]
16    pub fn botan_spake2p_params_init(
17        params: *mut botan_spake2p_params_t,
18        ciphersuite: *const c_char,
19    ) -> c_int;
20
21    #[cfg(botan_ffi_20260811)]
22    pub fn botan_spake2p_params_init_custom(
23        params: *mut botan_spake2p_params_t,
24        group: botan_ec_group_t,
25        seed: *const u8,
26        seed_len: usize,
27        hash_fn: *const c_char,
28    ) -> c_int;
29
30    #[cfg(botan_ffi_20260811)]
31    pub fn botan_spake2p_params_destroy(params: botan_spake2p_params_t) -> c_int;
32
33    #[cfg(botan_ffi_20260811)]
34    pub fn botan_spake2p_params_share_size(
35        params: botan_spake2p_params_t,
36        share_size: *mut usize,
37    ) -> c_int;
38
39    #[cfg(botan_ffi_20260811)]
40    pub fn botan_spake2p_params_confirmation_size(
41        params: botan_spake2p_params_t,
42        confirmation_size: *mut usize,
43    ) -> c_int;
44
45    #[cfg(botan_ffi_20260811)]
46    pub fn botan_spake2p_derive_secret(
47        params: botan_spake2p_params_t,
48        password: *const c_char,
49        prover_id: *const u8,
50        prover_id_len: usize,
51        verifier_id: *const u8,
52        verifier_id_len: usize,
53        salt: *const u8,
54        salt_len: usize,
55        ctx: botan_view_ctx,
56        view: botan_view_bin_fn,
57    ) -> c_int;
58
59    #[cfg(botan_ffi_20260811)]
60    pub fn botan_spake2p_registration_record(
61        params: botan_spake2p_params_t,
62        rng: botan_rng_t,
63        secret: *const u8,
64        secret_len: usize,
65        ctx: botan_view_ctx,
66        view: botan_view_bin_fn,
67    ) -> c_int;
68
69    #[cfg(botan_ffi_20260811)]
70    pub fn botan_spake2p_prover_init(
71        prover: *mut botan_spake2p_prover_t,
72        params: botan_spake2p_params_t,
73        secret: *const u8,
74        secret_len: usize,
75        prover_id: *const u8,
76        prover_id_len: usize,
77        verifier_id: *const u8,
78        verifier_id_len: usize,
79        context: *const u8,
80        context_len: usize,
81    ) -> c_int;
82
83    #[cfg(botan_ffi_20260811)]
84    pub fn botan_spake2p_prover_destroy(prover: botan_spake2p_prover_t) -> c_int;
85
86    #[cfg(botan_ffi_20260811)]
87    pub fn botan_spake2p_prover_generate_message(
88        prover: botan_spake2p_prover_t,
89        rng: botan_rng_t,
90        ctx: botan_view_ctx,
91        view: botan_view_bin_fn,
92    ) -> c_int;
93
94    #[cfg(botan_ffi_20260811)]
95    pub fn botan_spake2p_prover_process_message(
96        prover: botan_spake2p_prover_t,
97        rng: botan_rng_t,
98        peer_message: *const u8,
99        peer_message_len: usize,
100        ctx: botan_view_ctx,
101        view: botan_view_bin_fn,
102    ) -> c_int;
103
104    #[cfg(botan_ffi_20260811)]
105    pub fn botan_spake2p_prover_shared_secret(
106        prover: botan_spake2p_prover_t,
107        ctx: botan_view_ctx,
108        view: botan_view_bin_fn,
109    ) -> c_int;
110
111    #[cfg(botan_ffi_20260811)]
112    pub fn botan_spake2p_verifier_init(
113        verifier: *mut botan_spake2p_verifier_t,
114        params: botan_spake2p_params_t,
115        record: *const u8,
116        record_len: usize,
117        prover_id: *const u8,
118        prover_id_len: usize,
119        verifier_id: *const u8,
120        verifier_id_len: usize,
121        context: *const u8,
122        context_len: usize,
123    ) -> c_int;
124
125    #[cfg(botan_ffi_20260811)]
126    pub fn botan_spake2p_verifier_destroy(verifier: botan_spake2p_verifier_t) -> c_int;
127
128    #[cfg(botan_ffi_20260811)]
129    pub fn botan_spake2p_verifier_process_message(
130        verifier: botan_spake2p_verifier_t,
131        rng: botan_rng_t,
132        peer_message: *const u8,
133        peer_message_len: usize,
134        ctx: botan_view_ctx,
135        view: botan_view_bin_fn,
136    ) -> c_int;
137
138    #[cfg(botan_ffi_20260811)]
139    pub fn botan_spake2p_verifier_verify_confirmation(
140        verifier: botan_spake2p_verifier_t,
141        confirmation: *const u8,
142        confirmation_len: usize,
143    ) -> c_int;
144
145    #[cfg(botan_ffi_20260811)]
146    pub fn botan_spake2p_verifier_skip_confirmation(verifier: botan_spake2p_verifier_t) -> c_int;
147
148    #[cfg(botan_ffi_20260811)]
149    pub fn botan_spake2p_verifier_shared_secret(
150        verifier: botan_spake2p_verifier_t,
151        ctx: botan_view_ctx,
152        view: botan_view_bin_fn,
153    ) -> c_int;
154}