[master] timing safe memory comparisons

4183.	[cleanup]	Use timing-safe memory comparisons in cryptographic
			code. Also, the timing-safe comparison functions have
			been renamed to avoid possible confusion with
			memcmp(). [RT #40148]
This commit is contained in:
Evan Hunt
2015-08-17 18:26:44 -07:00
parent 486c763015
commit 420a43c8d8
21 changed files with 175 additions and 97 deletions

View File

@@ -28,25 +28,46 @@
#include <isc/safe.h>
#include <isc/util.h>
ATF_TC(isc_safe_memcmp);
ATF_TC_HEAD(isc_safe_memcmp, tc) {
atf_tc_set_md_var(tc, "descr", "safe memcmp()");
ATF_TC(isc_safe_memequal);
ATF_TC_HEAD(isc_safe_memequal, tc) {
atf_tc_set_md_var(tc, "descr", "safe memequal()");
}
ATF_TC_BODY(isc_safe_memcmp, tc) {
ATF_TC_BODY(isc_safe_memequal, tc) {
UNUSED(tc);
ATF_CHECK(isc_safe_memcmp("test", "test", 4));
ATF_CHECK(!isc_safe_memcmp("test", "tesc", 4));
ATF_CHECK(isc_safe_memcmp("\x00\x00\x00\x00", "\x00\x00\x00\x00", 4));
ATF_CHECK(!isc_safe_memcmp("\x00\x00\x00\x00", "\x00\x00\x00\x01", 4));
ATF_CHECK(!isc_safe_memcmp("\x00\x00\x00\x02", "\x00\x00\x00\x00", 4));
ATF_CHECK(isc_safe_memequal("test", "test", 4));
ATF_CHECK(!isc_safe_memequal("test", "tesc", 4));
ATF_CHECK(isc_safe_memequal("\x00\x00\x00\x00",
"\x00\x00\x00\x00", 4));
ATF_CHECK(!isc_safe_memequal("\x00\x00\x00\x00",
"\x00\x00\x00\x01", 4));
ATF_CHECK(!isc_safe_memequal("\x00\x00\x00\x02",
"\x00\x00\x00\x00", 4));
}
ATF_TC(isc_safe_memcompare);
ATF_TC_HEAD(isc_safe_memcompare, tc) {
atf_tc_set_md_var(tc, "descr", "safe memcompare()");
}
ATF_TC_BODY(isc_safe_memcompare, tc) {
UNUSED(tc);
ATF_CHECK(isc_safe_memcompare("test", "test", 4) == 0);
ATF_CHECK(isc_safe_memcompare("test", "tesc", 4) > 0);
ATF_CHECK(isc_safe_memcompare("test", "tesy", 4) < 0);
ATF_CHECK(isc_safe_memcompare("\x00\x00\x00\x00",
"\x00\x00\x00\x00", 4) == 0);
ATF_CHECK(isc_safe_memcompare("\x00\x00\x00\x00",
"\x00\x00\x00\x01", 4) < 0);
ATF_CHECK(isc_safe_memcompare("\x00\x00\x00\x02",
"\x00\x00\x00\x00", 4) > 0);
}
/*
* Main
*/
ATF_TP_ADD_TCS(tp) {
ATF_TP_ADD_TC(tp, isc_safe_memcmp);
ATF_TP_ADD_TC(tp, isc_safe_memequal);
ATF_TP_ADD_TC(tp, isc_safe_memcompare);
return (atf_no_error());
}