const export_fn = @import("util.zig").export_fn;
const ReprCSlice = @import("util.zig").ReprCSlice;
const std_crypto = @import("std").crypto;
const pwhash = @import("crypto/pwhash.zig");
comptime {
_ = pwhash;
export_fn(secure_zero_u8, "zig_std_rs__crypto__secure_zero_u8");
export_fn(secure_zero_u16, "zig_std_rs__crypto__secure_zero_u16");
export_fn(secure_zero_u32, "zig_std_rs__crypto__secure_zero_u32");
export_fn(secure_zero_u64, "zig_std_rs__crypto__secure_zero_u64");
export_fn(secure_zero_u128, "zig_std_rs__crypto__secure_zero_u128");
}
fn secure_zero(comptime T: type) *const fn(ptr: ReprCSlice(T)) callconv(.c) void {
return struct {
fn impl(ptr: ReprCSlice(T)) callconv(.c) void {
std_crypto.secureZero(T, ptr.to_slice().?);
}
}.impl;
}
pub const secure_zero_u8 = secure_zero(u8);
pub const secure_zero_u16 = secure_zero(u16);
pub const secure_zero_u32 = secure_zero(u32);
pub const secure_zero_u64 = secure_zero(u64);
pub const secure_zero_u128 = secure_zero(u128);
test "smoke tests" {
var slice_u8 = [_]u8 { 247 };
_ = secure_zero_u8(ReprCSlice(u8).from_slice(&slice_u8));
var slice_u16 = [_]u16 { 247 };
_ = secure_zero_u16(ReprCSlice(u16).from_slice(&slice_u16));
var slice_u32 = [_]u32 { 247 };
_ = secure_zero_u32(ReprCSlice(u32).from_slice(&slice_u32));
var slice_u64 = [_]u64 { 247 };
_ = secure_zero_u64(ReprCSlice(u64).from_slice(&slice_u64));
var slice_u128 = [_]u128 { 247 };
_ = secure_zero_u128(ReprCSlice(u128).from_slice(&slice_u128));
}