summaryrefslogtreecommitdiff
path: root/lib/crypto/clear.myr
blob: 5345f2b3360f757e1ce6e3ce8cf235603452fe76 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use std

pkg crypto =
	/* designed to facilitating freeing sensitive data */
	generic	clear	: (p : @a# -> void)
	generic	slclear	: (sl : @a[:] -> void)
	generic free	: (p : @a# -> void)
	generic slfree	: (sl : @a[:] -> void)
;;

generic clear = {p : @a#
	std.memfill((p : byte#), 0, sizeof(@a))
}

generic slclear = {sl : @a[:]
	std.memfill((sl : byte#), 0, sizeof(@a)*sl.len)
}

generic free = {p : @a#
	clear(p)
	std.free(p)
}

generic slfree = {sl : @a[:]
	slclear(sl)
	std.slfree(sl)
}