1use crate::ffi_types::{c_char, c_int};
2use crate::rng::botan_rng_t;
3
4pub enum botan_srp6_server_session_struct {}
5pub type botan_srp6_server_session_t = *mut botan_srp6_server_session_struct;
6
7#[cfg(botan_ffi_20230403)]
8unsafe extern "C" {
9 pub fn botan_srp6_server_session_init(srp6: *mut botan_srp6_server_session_t) -> c_int;
10
11 pub fn botan_srp6_server_session_destroy(srp6: botan_srp6_server_session_t) -> c_int;
12
13 pub fn botan_srp6_server_session_step1(
14 srp6: botan_srp6_server_session_t,
15 verifier: *const u8,
16 verifier_len: usize,
17 group_id: *const c_char,
18 hash_id: *const c_char,
19 rng_obj: botan_rng_t,
20 B_pub: *mut u8,
21 B_pub_len: *mut usize,
22 ) -> c_int;
23
24 pub fn botan_srp6_server_session_step2(
25 srp6: botan_srp6_server_session_t,
26 A: *const u8,
27 A_len: usize,
28 key: *mut u8,
29 key_len: *mut usize,
30 ) -> c_int;
31
32 pub fn botan_srp6_generate_verifier(
33 identifier: *const c_char,
34 password: *const c_char,
35 salt: *const u8,
36 salt_len: usize,
37 group_id: *const c_char,
38 hash_id: *const c_char,
39 verifier: *mut u8,
40 verifier_len: *mut usize,
41 ) -> c_int;
42
43 pub fn botan_srp6_client_agree(
44 username: *const c_char,
45 password: *const c_char,
46 group_id: *const c_char,
47 hash_id: *const c_char,
48 salt: *const u8,
49 salt_len: usize,
50 B: *const u8,
51 B_len: usize,
52 rng_obj: botan_rng_t,
53 A: *mut u8,
54 A_len: *mut usize,
55 K: *mut u8,
56 K_len: *mut usize,
57 ) -> c_int;
58
59 pub fn botan_srp6_group_size(group_id: *const c_char, group_p_bytes: *mut usize) -> c_int;
60}