aes_test.c revision 0c27b3fe77ac1d5094ba3521e8142d9e7973133f
/*
* Copyright (C) 2014, 2016 Internet Systems Consortium, Inc. ("ISC")
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
/* $Id$ */
/* ! \file */
#include <config.h>
#include <atf-c.h>
#include <stdio.h>
#include <string.h>
#include <isc/platform.h>
#ifdef ISC_PLATFORM_WANTAES
/*
* Test data from NIST KAT
*/
fromhexstr(const char *in, unsigned char *d);
unsigned char ciphertext[ISC_AES_BLOCK_LENGTH];
isc_buffer_t b;
isc_region_t r;
r.base = d;
return (isc_hex_totext(&r, 0, "", &b));
}
fromhexstr(const char *in, unsigned char *d)
{
isc_buffer_t b;
if (ret != ISC_R_SUCCESS)
return 0;
return isc_buffer_usedlength(&b);
}
typedef struct aes_testcase {
const char *key;
const char *input;
const char *result;
}
aes_testcase_t testcases[] = {
/* Test 1 (KAT ECBVarTxt128 #3) */
{
"00000000000000000000000000000000",
"F0000000000000000000000000000000",
"96D9FD5CC4F07441727DF0F33E401A36"
},
/* Test 2 (KAT ECBVarTxt128 #123) */
{
"00000000000000000000000000000000",
"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0",
"F9B0FDA0C4A898F5B9E6F661C4CE4D07"
},
/* Test 3 (KAT ECBVarKey128 #3) */
{
"F0000000000000000000000000000000",
"00000000000000000000000000000000",
"970014D634E2B7650777E8E84D03CCD8"
},
/* Test 4 (KAT ECBVarKey128 #123) */
{
"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0",
"00000000000000000000000000000000",
"41C78C135ED9E98C096640647265DA1E"
},
/* Test 5 (KAT ECBGFSbox128 #3) */
{
"00000000000000000000000000000000",
"6A118A874519E64E9963798A503F1D35",
"DC43BE40BE0E53712F7E2BF5CA707209"
},
/* Test 6 (KAT ECBKeySbox128 #3) */
{
"B6364AC4E1DE1E285EAF144A2415F7A0",
"00000000000000000000000000000000",
"5D9B05578FC944B3CF1CCF0E746CD581"
},
};
testcase++;
}
}
}
aes_testcase_t testcases[] = {
/* Test 1 (KAT ECBVarTxt192 #3) */
{
"000000000000000000000000000000000000000000000000",
"F0000000000000000000000000000000",
"2A560364CE529EFC21788779568D5555"
},
/* Test 2 (KAT ECBVarTxt192 #123) */
{
"000000000000000000000000000000000000000000000000",
"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0",
"2AABB999F43693175AF65C6C612C46FB"
},
/* Test 3 (KAT ECBVarKey192 #3) */
{
"F00000000000000000000000000000000000000000000000",
"00000000000000000000000000000000",
"180B09F267C45145DB2F826C2582D35C"
},
/* Test 4 (KAT ECBVarKey192 #187) */
{
"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0",
"00000000000000000000000000000000",
"EACF1E6C4224EFB38900B185AB1DFD42"
},
/* Test 5 (KAT ECBGFSbox192 #3) */
{
"000000000000000000000000000000000000000000000000",
"51719783D3185A535BD75ADC65071CE1",
"4F354592FF7C8847D2D0870CA9481B7C"
},
/* Test 6 (KAT ECBKeySbox192 #3) */
{
"CD62376D5EBB414917F0C78F05266433DC9192A1EC943300",
"00000000000000000000000000000000",
"7F6C25FF41858561BB62F36492E93C29"
},
};
testcase++;
}
}
}
aes_testcase_t testcases[] = {
/* Test 1 (KAT ECBVarTxt256 #3) */
{
"00000000000000000000000000000000"
"00000000000000000000000000000000",
"F0000000000000000000000000000000",
"7F2C5ECE07A98D8BEE13C51177395FF7"
},
/* Test 2 (KAT ECBVarTxt256 #123) */
{
"00000000000000000000000000000000"
"00000000000000000000000000000000",
"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0",
"7240E524BC51D8C4D440B1BE55D1062C"
},
/* Test 3 (KAT ECBVarKey256 #3) */
{
"F0000000000000000000000000000000"
"00000000000000000000000000000000",
"00000000000000000000000000000000",
"1C777679D50037C79491A94DA76A9A35"
},
/* Test 4 (KAT ECBVarKey256 #251) */
{
"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0",
"00000000000000000000000000000000",
"03720371A04962EAEA0A852E69972858"
},
/* Test 5 (KAT ECBGFSbox256 #3) */
{
"00000000000000000000000000000000"
"00000000000000000000000000000000",
"8A560769D605868AD80D819BDBA03771",
"38F2C7AE10612415D27CA190D27DA8B4"
},
/* Test 6 (KAT ECBKeySbox256 #3) */
{
"984CA75F4EE8D706F46C2D98C0BF4A45"
"F5B00D791C2DFEB191B5ED8E420FD627",
"00000000000000000000000000000000",
"4307456A9E67813B452E15FA8FFFE398"
},
};
testcase++;
}
}
#else
}
atf_tc_skip("AES not available");
}
#endif
/*
* Main
*/
ATF_TP_ADD_TCS(tp) {
#ifdef ISC_PLATFORM_WANTAES
#else
#endif
return (atf_no_error());
}