zig_std/crypto/pwhash/
argon2.rs1use crate::util::{ ReprCSlice, sys };
2
3sys! {
4 pub fn zig_std_rs__crypto__pwhash__argon2__calc_size(params: Params) -> usize;
5}
6
7#[repr(u8)]
8pub enum Mode {
9 Argon2d = 0,
10 Argon2i = 1,
11 Argon2id = 2
12}
13
14#[repr(C)]
15pub struct Params {
16 t: u32,
17 m: u32,
18 p: u32,
19
20 secret: ReprCSlice<u8>,
21 ad: ReprCSlice<u8>
22}
23
24#[inline]
25pub fn calc_size(params: Params) -> usize {
26 unsafe { sys::zig_std_rs__crypto__pwhash__argon2__calc_size(params) }
27}
28
29const _: () = {
31 assert!(size_of::<Mode>() == 1);
32 assert!(align_of::<Mode>() == 1);
33 assert!(size_of::<Params>() == (4 * size_of::<u32>()) + (4 * size_of::<usize>()));
36 assert!(align_of::<Params>() == align_of::<usize>());
37};
38
39#[cfg(test)]
40mod tests {
41 use super::*;
42
43 #[test]
44 fn test_calc_size() {
45 let params = Params {
48 t: 4,
49 m: 0x10000,
50 p: 2,
51 secret: ReprCSlice::null(),
52 ad: ReprCSlice::null()
53 };
54 let expected = 67108864;
55 let size = calc_size(params);
56
57 assert_eq!(expected, size);
58 }
59}