492 lines
17 KiB
C
492 lines
17 KiB
C
/****************************************************************************
|
|
* include/crypto/testmngr.h
|
|
*
|
|
* Copyright (C) 2014 Gregory Nutt. All rights reserved.
|
|
* Author: Max Nekludov <macscomp@gmail.com>
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in
|
|
* the documentation and/or other materials provided with the
|
|
* distribution.
|
|
* 3. Neither the name NuttX nor the names of its contributors may be
|
|
* used to endorse or promote products derived from this software
|
|
* without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
|
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
****************************************************************************/
|
|
|
|
#ifndef __CRYPTO_TESTMNGR_H
|
|
#define __CRYPTO_TESTMNGR_H
|
|
|
|
/****************************************************************************
|
|
* Included Files
|
|
****************************************************************************/
|
|
|
|
#include <nuttx/config.h>
|
|
|
|
/****************************************************************************
|
|
* Pre-Processor Definitions
|
|
****************************************************************************/
|
|
|
|
struct cipher_testvec
|
|
{
|
|
FAR char *key;
|
|
FAR char *iv;
|
|
FAR char *input;
|
|
FAR char *result;
|
|
int np;
|
|
unsigned char fail;
|
|
unsigned char wk;
|
|
unsigned char klen;
|
|
unsigned short ilen;
|
|
unsigned short rlen;
|
|
};
|
|
|
|
#if defined(CONFIG_CRYPTO_AES)
|
|
|
|
/* AES test vectors */
|
|
|
|
#define AES_ENC_TEST_VECTORS 3
|
|
#define AES_DEC_TEST_VECTORS 3
|
|
#define AES_CBC_ENC_TEST_VECTORS 4
|
|
#define AES_CBC_DEC_TEST_VECTORS 4
|
|
#define AES_CTR_ENC_TEST_VECTORS 3
|
|
#define AES_CTR_DEC_TEST_VECTORS 3
|
|
|
|
static struct cipher_testvec aes_enc_tv_template[] =
|
|
{
|
|
{ /* From FIPS-197 */
|
|
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
.klen = 16,
|
|
.input = "\x00\x11\x22\x33\x44\x55\x66\x77"
|
|
"\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
|
|
.ilen = 16,
|
|
.result = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
|
|
"\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
|
|
.rlen = 16,
|
|
},
|
|
{
|
|
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
|
|
"\x10\x11\x12\x13\x14\x15\x16\x17",
|
|
.klen = 24,
|
|
.input = "\x00\x11\x22\x33\x44\x55\x66\x77"
|
|
"\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
|
|
.ilen = 16,
|
|
.result = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
|
|
"\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
|
|
.rlen = 16,
|
|
},
|
|
{
|
|
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
|
|
"\x10\x11\x12\x13\x14\x15\x16\x17"
|
|
"\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
|
|
.klen = 32,
|
|
.input = "\x00\x11\x22\x33\x44\x55\x66\x77"
|
|
"\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
|
|
.ilen = 16,
|
|
.result = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
|
|
"\xea\xfc\x49\x90\x4b\x49\x60\x89",
|
|
.rlen = 16,
|
|
},
|
|
};
|
|
|
|
static struct cipher_testvec aes_dec_tv_template[] =
|
|
{
|
|
{ /* From FIPS-197 */
|
|
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
.klen = 16,
|
|
.input = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
|
|
"\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
|
|
.ilen = 16,
|
|
.result = "\x00\x11\x22\x33\x44\x55\x66\x77"
|
|
"\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
|
|
.rlen = 16,
|
|
},
|
|
{
|
|
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
|
|
"\x10\x11\x12\x13\x14\x15\x16\x17",
|
|
.klen = 24,
|
|
.input = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
|
|
"\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
|
|
.ilen = 16,
|
|
.result = "\x00\x11\x22\x33\x44\x55\x66\x77"
|
|
"\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
|
|
.rlen = 16,
|
|
},
|
|
{
|
|
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
|
|
"\x10\x11\x12\x13\x14\x15\x16\x17"
|
|
"\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
|
|
.klen = 32,
|
|
.input = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
|
|
"\xea\xfc\x49\x90\x4b\x49\x60\x89",
|
|
.ilen = 16,
|
|
.result = "\x00\x11\x22\x33\x44\x55\x66\x77"
|
|
"\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
|
|
.rlen = 16,
|
|
},
|
|
};
|
|
|
|
static struct cipher_testvec aes_cbc_enc_tv_template[] =
|
|
{
|
|
{ /* From RFC 3602 */
|
|
.key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
|
|
"\x51\x2e\x03\xd5\x34\x12\x00\x06",
|
|
.klen = 16,
|
|
.iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
|
|
"\xb4\x22\xda\x80\x2c\x9f\xac\x41",
|
|
.input = "Single block msg",
|
|
.ilen = 16,
|
|
.result = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
|
|
"\x27\x08\x94\x2d\xbe\x77\x18\x1a",
|
|
.rlen = 16,
|
|
},
|
|
{
|
|
.key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
|
|
"\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
|
|
.klen = 16,
|
|
.iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
|
|
"\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
|
|
.input = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
|
|
"\x10\x11\x12\x13\x14\x15\x16\x17"
|
|
"\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
|
|
.ilen = 32,
|
|
.result = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
|
|
"\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
|
|
"\x75\x86\x60\x2d\x25\x3c\xff\xf9"
|
|
"\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
|
|
.rlen = 32,
|
|
},
|
|
{ /* From NIST SP800-38A */
|
|
.key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
|
|
"\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
|
|
"\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
|
|
.klen = 24,
|
|
.iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
.input = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
|
|
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
|
|
"\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
|
|
"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
|
|
"\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
|
|
"\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
|
|
"\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
|
|
"\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
|
|
.ilen = 64,
|
|
.result = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
|
|
"\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
|
|
"\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
|
|
"\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
|
|
"\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
|
|
"\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
|
|
"\x08\xb0\xe2\x79\x88\x59\x88\x81"
|
|
"\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
|
|
.rlen = 64,
|
|
},
|
|
{
|
|
.key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
|
|
"\x2b\x73\xae\xf0\x85\x7d\x77\x81"
|
|
"\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
|
|
"\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
|
|
.klen = 32,
|
|
.iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
.input = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
|
|
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
|
|
"\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
|
|
"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
|
|
"\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
|
|
"\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
|
|
"\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
|
|
"\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
|
|
.ilen = 64,
|
|
.result = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
|
|
"\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
|
|
"\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
|
|
"\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
|
|
"\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
|
|
"\xa5\x30\xe2\x63\x04\x23\x14\x61"
|
|
"\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
|
|
"\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
|
|
.rlen = 64,
|
|
},
|
|
};
|
|
|
|
static struct cipher_testvec aes_cbc_dec_tv_template[] =
|
|
{
|
|
{ /* From RFC 3602 */
|
|
.key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
|
|
"\x51\x2e\x03\xd5\x34\x12\x00\x06",
|
|
.klen = 16,
|
|
.iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
|
|
"\xb4\x22\xda\x80\x2c\x9f\xac\x41",
|
|
.input = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
|
|
"\x27\x08\x94\x2d\xbe\x77\x18\x1a",
|
|
.ilen = 16,
|
|
.result = "Single block msg",
|
|
.rlen = 16,
|
|
},
|
|
{
|
|
.key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
|
|
"\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
|
|
.klen = 16,
|
|
.iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
|
|
"\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
|
|
.input = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
|
|
"\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
|
|
"\x75\x86\x60\x2d\x25\x3c\xff\xf9"
|
|
"\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
|
|
.ilen = 32,
|
|
.result = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
|
|
"\x10\x11\x12\x13\x14\x15\x16\x17"
|
|
"\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
|
|
.rlen = 32,
|
|
},
|
|
{ /* From NIST SP800-38A */
|
|
.key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
|
|
"\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
|
|
"\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
|
|
.klen = 24,
|
|
.iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
.input = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
|
|
"\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
|
|
"\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
|
|
"\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
|
|
"\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
|
|
"\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
|
|
"\x08\xb0\xe2\x79\x88\x59\x88\x81"
|
|
"\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
|
|
.ilen = 64,
|
|
.result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
|
|
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
|
|
"\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
|
|
"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
|
|
"\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
|
|
"\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
|
|
"\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
|
|
"\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
|
|
.rlen = 64,
|
|
},
|
|
{
|
|
.key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
|
|
"\x2b\x73\xae\xf0\x85\x7d\x77\x81"
|
|
"\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
|
|
"\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
|
|
.klen = 32,
|
|
.iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
.input = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
|
|
"\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
|
|
"\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
|
|
"\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
|
|
"\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
|
|
"\xa5\x30\xe2\x63\x04\x23\x14\x61"
|
|
"\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
|
|
"\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
|
|
.ilen = 64,
|
|
.result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
|
|
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
|
|
"\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
|
|
"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
|
|
"\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
|
|
"\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
|
|
"\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
|
|
"\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
|
|
.rlen = 64,
|
|
},
|
|
};
|
|
|
|
static struct cipher_testvec aes_ctr_enc_tv_template[] =
|
|
{
|
|
{ /* From NIST Special Publication 800-38A, Appendix F.5 */
|
|
.key = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
|
|
"\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
|
|
.klen = 16,
|
|
.iv = "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
|
|
"\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
|
|
.input = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
|
|
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
|
|
"\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
|
|
"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
|
|
"\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
|
|
"\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
|
|
"\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
|
|
"\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
|
|
.ilen = 64,
|
|
.result = "\x87\x4d\x61\x91\xb6\x20\xe3\x26"
|
|
"\x1b\xef\x68\x64\x99\x0d\xb6\xce"
|
|
"\x98\x06\xf6\x6b\x79\x70\xfd\xff"
|
|
"\x86\x17\x18\x7b\xb9\xff\xfd\xff"
|
|
"\x5a\xe4\xdf\x3e\xdb\xd5\xd3\x5e"
|
|
"\x5b\x4f\x09\x02\x0d\xb0\x3e\xab"
|
|
"\x1e\x03\x1d\xda\x2f\xbe\x03\xd1"
|
|
"\x79\x21\x70\xa0\xf3\x00\x9c\xee",
|
|
.rlen = 64,
|
|
},
|
|
{
|
|
.key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
|
|
"\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
|
|
"\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
|
|
.klen = 24,
|
|
.iv = "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
|
|
"\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
|
|
.input = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
|
|
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
|
|
"\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
|
|
"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
|
|
"\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
|
|
"\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
|
|
"\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
|
|
"\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
|
|
.ilen = 64,
|
|
.result = "\x1a\xbc\x93\x24\x17\x52\x1c\xa2"
|
|
"\x4f\x2b\x04\x59\xfe\x7e\x6e\x0b"
|
|
"\x09\x03\x39\xec\x0a\xa6\xfa\xef"
|
|
"\xd5\xcc\xc2\xc6\xf4\xce\x8e\x94"
|
|
"\x1e\x36\xb2\x6b\xd1\xeb\xc6\x70"
|
|
"\xd1\xbd\x1d\x66\x56\x20\xab\xf7"
|
|
"\x4f\x78\xa7\xf6\xd2\x98\x09\x58"
|
|
"\x5a\x97\xda\xec\x58\xc6\xb0\x50",
|
|
.rlen = 64,
|
|
},
|
|
{
|
|
.key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
|
|
"\x2b\x73\xae\xf0\x85\x7d\x77\x81"
|
|
"\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
|
|
"\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
|
|
.klen = 32,
|
|
.iv = "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
|
|
"\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
|
|
.input = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
|
|
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
|
|
"\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
|
|
"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
|
|
"\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
|
|
"\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
|
|
"\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
|
|
"\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
|
|
.ilen = 64,
|
|
.result = "\x60\x1e\xc3\x13\x77\x57\x89\xa5"
|
|
"\xb7\xa7\xf5\x04\xbb\xf3\xd2\x28"
|
|
"\xf4\x43\xe3\xca\x4d\x62\xb5\x9a"
|
|
"\xca\x84\xe9\x90\xca\xca\xf5\xc5"
|
|
"\x2b\x09\x30\xda\xa2\x3d\xe9\x4c"
|
|
"\xe8\x70\x17\xba\x2d\x84\x98\x8d"
|
|
"\xdf\xc9\xc5\x8d\xb6\x7a\xad\xa6"
|
|
"\x13\xc2\xdd\x08\x45\x79\x41\xa6",
|
|
.rlen = 64,
|
|
}
|
|
};
|
|
|
|
static struct cipher_testvec aes_ctr_dec_tv_template[] =
|
|
{
|
|
{ /* From NIST Special Publication 800-38A, Appendix F.5 */
|
|
.key = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
|
|
"\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
|
|
.klen = 16,
|
|
.iv = "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
|
|
"\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
|
|
.input = "\x87\x4d\x61\x91\xb6\x20\xe3\x26"
|
|
"\x1b\xef\x68\x64\x99\x0d\xb6\xce"
|
|
"\x98\x06\xf6\x6b\x79\x70\xfd\xff"
|
|
"\x86\x17\x18\x7b\xb9\xff\xfd\xff"
|
|
"\x5a\xe4\xdf\x3e\xdb\xd5\xd3\x5e"
|
|
"\x5b\x4f\x09\x02\x0d\xb0\x3e\xab"
|
|
"\x1e\x03\x1d\xda\x2f\xbe\x03\xd1"
|
|
"\x79\x21\x70\xa0\xf3\x00\x9c\xee",
|
|
.ilen = 64,
|
|
.result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
|
|
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
|
|
"\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
|
|
"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
|
|
"\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
|
|
"\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
|
|
"\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
|
|
"\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
|
|
.rlen = 64,
|
|
},
|
|
{
|
|
.key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
|
|
"\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
|
|
"\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
|
|
.klen = 24,
|
|
.iv = "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
|
|
"\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
|
|
.input = "\x1a\xbc\x93\x24\x17\x52\x1c\xa2"
|
|
"\x4f\x2b\x04\x59\xfe\x7e\x6e\x0b"
|
|
"\x09\x03\x39\xec\x0a\xa6\xfa\xef"
|
|
"\xd5\xcc\xc2\xc6\xf4\xce\x8e\x94"
|
|
"\x1e\x36\xb2\x6b\xd1\xeb\xc6\x70"
|
|
"\xd1\xbd\x1d\x66\x56\x20\xab\xf7"
|
|
"\x4f\x78\xa7\xf6\xd2\x98\x09\x58"
|
|
"\x5a\x97\xda\xec\x58\xc6\xb0\x50",
|
|
.ilen = 64,
|
|
.result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
|
|
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
|
|
"\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
|
|
"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
|
|
"\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
|
|
"\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
|
|
"\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
|
|
"\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
|
|
.rlen = 64,
|
|
},
|
|
{
|
|
.key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
|
|
"\x2b\x73\xae\xf0\x85\x7d\x77\x81"
|
|
"\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
|
|
"\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
|
|
.klen = 32,
|
|
.iv = "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
|
|
"\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
|
|
.input = "\x60\x1e\xc3\x13\x77\x57\x89\xa5"
|
|
"\xb7\xa7\xf5\x04\xbb\xf3\xd2\x28"
|
|
"\xf4\x43\xe3\xca\x4d\x62\xb5\x9a"
|
|
"\xca\x84\xe9\x90\xca\xca\xf5\xc5"
|
|
"\x2b\x09\x30\xda\xa2\x3d\xe9\x4c"
|
|
"\xe8\x70\x17\xba\x2d\x84\x98\x8d"
|
|
"\xdf\xc9\xc5\x8d\xb6\x7a\xad\xa6"
|
|
"\x13\xc2\xdd\x08\x45\x79\x41\xa6",
|
|
.ilen = 64,
|
|
.result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
|
|
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
|
|
"\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
|
|
"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
|
|
"\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
|
|
"\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
|
|
"\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
|
|
"\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
|
|
.rlen = 64,
|
|
}
|
|
};
|
|
|
|
#endif /* CONFIG_CRYPTO_AES */
|
|
#endif /* __CRYPTO_TESTMNGR_H */
|