shithub: mc

ref: b3526b5e8cc2f28b17096115524731afc254e02b
dir: /lib/crypto/clear.myr/

View raw version
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)
}