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}