1f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* LibTomCrypt, modular cryptographic library -- Tom St Denis 2f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * 3f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * LibTomCrypt is a library that provides various cryptographic 4f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * algorithms in a highly modular and flexible manner. 5f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * 6f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * The library is free for all purposes without any express 7f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * guarantee it works. 8f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * 9f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.com 10f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project */ 11f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 12f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/** 13f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @file gcm_test.c 14f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project GCM implementation, testing, by Tom St Denis 15f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project*/ 16f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#include "tomcrypt.h" 17f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 18f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef GCM_MODE 19f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 20f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/** 21f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project Test the GCM code 22f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @return CRYPT_OK on success 23f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project */ 24f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint gcm_test(void) 25f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project{ 26f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifndef LTC_TEST 27f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return CRYPT_NOP; 28f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#else 29f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project static const struct { 30f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project unsigned char K[32]; 31f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int keylen; 32f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project unsigned char P[128]; 33f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project unsigned long ptlen; 34f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project unsigned char A[128]; 35f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project unsigned long alen; 36f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project unsigned char IV[128]; 37f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project unsigned long IVlen; 38f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project unsigned char C[128]; 39f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project unsigned char T[16]; 40f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } tests[] = { 41f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 42f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* test case #1 */ 43f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project{ 44f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* key */ 45f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 46f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 47f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 16, 48f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 49f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* plaintext */ 50f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0 }, 51f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0, 52f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 53f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* AAD data */ 54f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0 }, 55f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0, 56f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 57f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* IV */ 58f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 59f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x00, 0x00, 0x00, 0x00 }, 60f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 12, 61f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 62f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* ciphertext */ 63f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0 }, 64f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 65f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* tag */ 66f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0x58, 0xe2, 0xfc, 0xce, 0xfa, 0x7e, 0x30, 0x61, 67f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x36, 0x7f, 0x1d, 0x57, 0xa4, 0xe7, 0x45, 0x5a } 68f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project}, 69f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 70f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* test case #2 */ 71f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project{ 72f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* key */ 73f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 74f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 75f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 16, 76f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 77f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* PT */ 78f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 79f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 80f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 16, 81f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 82f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* ADATA */ 83f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0 }, 84f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0, 85f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 86f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* IV */ 87f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 88f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x00, 0x00, 0x00, 0x00 }, 89f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 12, 90f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 91f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* CT */ 92f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0x03, 0x88, 0xda, 0xce, 0x60, 0xb6, 0xa3, 0x92, 93f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xf3, 0x28, 0xc2, 0xb9, 0x71, 0xb2, 0xfe, 0x78 }, 94f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 95f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* TAG */ 96f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0xab, 0x6e, 0x47, 0xd4, 0x2c, 0xec, 0x13, 0xbd, 97f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xf5, 0x3a, 0x67, 0xb2, 0x12, 0x57, 0xbd, 0xdf } 98f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project}, 99f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 100f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* test case #3 */ 101f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project{ 102f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* key */ 103f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 104f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, }, 105f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 16, 106f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 107f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* PT */ 108f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, 109f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, 110f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, 111f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, 112f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, 113f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, 114f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, 115f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55, }, 116f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 64, 117f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 118f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* ADATA */ 119f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0 }, 120f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0, 121f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 122f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* IV */ 123f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, 124f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xde, 0xca, 0xf8, 0x88, }, 125f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 12, 126f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 127f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* CT */ 128f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24, 129f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c, 130f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0, 131f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e, 132f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c, 133f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05, 134f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97, 135f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x3d, 0x58, 0xe0, 0x91, 0x47, 0x3f, 0x59, 0x85, }, 136f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 137f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* TAG */ 138f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0x4d, 0x5c, 0x2a, 0xf3, 0x27, 0xcd, 0x64, 0xa6, 139f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x2c, 0xf3, 0x5a, 0xbd, 0x2b, 0xa6, 0xfa, 0xb4, } 140f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project}, 141f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 142f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* test case #4 */ 143f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project{ 144f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* key */ 145f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 146f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, }, 147f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 16, 148f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 149f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* PT */ 150f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, 151f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, 152f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, 153f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, 154f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, 155f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, 156f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, 157f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xba, 0x63, 0x7b, 0x39, }, 158f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 60, 159f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 160f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* ADATA */ 161f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, 162f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, 163f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xab, 0xad, 0xda, 0xd2, }, 164f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 20, 165f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 166f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* IV */ 167f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, 168f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xde, 0xca, 0xf8, 0x88, }, 169f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 12, 170f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 171f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* CT */ 172f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24, 173f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c, 174f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0, 175f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e, 176f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c, 177f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05, 178f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97, 179f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x3d, 0x58, 0xe0, 0x91, }, 180f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 181f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* TAG */ 182f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0x5b, 0xc9, 0x4f, 0xbc, 0x32, 0x21, 0xa5, 0xdb, 183f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x94, 0xfa, 0xe9, 0x5a, 0xe7, 0x12, 0x1a, 0x47, } 184f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 185f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project}, 186f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 187f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* test case #5 */ 188f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project{ 189f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* key */ 190f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 191f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, }, 192f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 16, 193f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 194f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* PT */ 195f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, 196f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, 197f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, 198f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, 199f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, 200f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, 201f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, 202f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xba, 0x63, 0x7b, 0x39, }, 203f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 60, 204f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 205f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* ADATA */ 206f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, 207f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, 208f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xab, 0xad, 0xda, 0xd2, }, 209f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 20, 210f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 211f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* IV */ 212f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, }, 213f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 8, 214f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 215f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* CT */ 216f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0x61, 0x35, 0x3b, 0x4c, 0x28, 0x06, 0x93, 0x4a, 217f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x77, 0x7f, 0xf5, 0x1f, 0xa2, 0x2a, 0x47, 0x55, 218f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x69, 0x9b, 0x2a, 0x71, 0x4f, 0xcd, 0xc6, 0xf8, 219f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x37, 0x66, 0xe5, 0xf9, 0x7b, 0x6c, 0x74, 0x23, 220f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x73, 0x80, 0x69, 0x00, 0xe4, 0x9f, 0x24, 0xb2, 221f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x2b, 0x09, 0x75, 0x44, 0xd4, 0x89, 0x6b, 0x42, 222f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x49, 0x89, 0xb5, 0xe1, 0xeb, 0xac, 0x0f, 0x07, 223f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xc2, 0x3f, 0x45, 0x98, }, 224f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 225f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* TAG */ 226f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0x36, 0x12, 0xd2, 0xe7, 0x9e, 0x3b, 0x07, 0x85, 227f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x56, 0x1b, 0xe1, 0x4a, 0xac, 0xa2, 0xfc, 0xcb, } 228f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project}, 229f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 230f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* test case #6 */ 231f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project{ 232f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* key */ 233f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 234f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, }, 235f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 16, 236f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 237f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* PT */ 238f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, 239f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, 240f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, 241f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, 242f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, 243f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, 244f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, 245f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xba, 0x63, 0x7b, 0x39, }, 246f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 60, 247f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 248f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* ADATA */ 249f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, 250f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, 251f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xab, 0xad, 0xda, 0xd2, }, 252f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 20, 253f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 254f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* IV */ 255f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0x93, 0x13, 0x22, 0x5d, 0xf8, 0x84, 0x06, 0xe5, 256f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x55, 0x90, 0x9c, 0x5a, 0xff, 0x52, 0x69, 0xaa, 257f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x6a, 0x7a, 0x95, 0x38, 0x53, 0x4f, 0x7d, 0xa1, 258f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xe4, 0xc3, 0x03, 0xd2, 0xa3, 0x18, 0xa7, 0x28, 259f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xc3, 0xc0, 0xc9, 0x51, 0x56, 0x80, 0x95, 0x39, 260f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xfc, 0xf0, 0xe2, 0x42, 0x9a, 0x6b, 0x52, 0x54, 261f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x16, 0xae, 0xdb, 0xf5, 0xa0, 0xde, 0x6a, 0x57, 262f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xa6, 0x37, 0xb3, 0x9b, }, 263f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 60, 264f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 265f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* CT */ 266f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0x8c, 0xe2, 0x49, 0x98, 0x62, 0x56, 0x15, 0xb6, 267f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x03, 0xa0, 0x33, 0xac, 0xa1, 0x3f, 0xb8, 0x94, 268f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xbe, 0x91, 0x12, 0xa5, 0xc3, 0xa2, 0x11, 0xa8, 269f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xba, 0x26, 0x2a, 0x3c, 0xca, 0x7e, 0x2c, 0xa7, 270f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x01, 0xe4, 0xa9, 0xa4, 0xfb, 0xa4, 0x3c, 0x90, 271f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xcc, 0xdc, 0xb2, 0x81, 0xd4, 0x8c, 0x7c, 0x6f, 272f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xd6, 0x28, 0x75, 0xd2, 0xac, 0xa4, 0x17, 0x03, 273f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x4c, 0x34, 0xae, 0xe5, }, 274f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 275f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* TAG */ 276f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0x61, 0x9c, 0xc5, 0xae, 0xff, 0xfe, 0x0b, 0xfa, 277f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x46, 0x2a, 0xf4, 0x3c, 0x16, 0x99, 0xd0, 0x50, } 278f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project}, 279f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 280f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* test case #46 from BG (catches the LTC bug of v1.15) */ 281f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project{ 282f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* key */ 283f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 284f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 285f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 16, 286f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 287f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* PT */ 288f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0xa2, 0xaa, 0xb3, 0xad, 0x8b, 0x17, 0xac, 0xdd, 289f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xa2, 0x88, 0x42, 0x6c, 0xd7, 0xc4, 0x29, 0xb7, 290f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xca, 0x86, 0xb7, 0xac, 0xa0, 0x58, 0x09, 0xc7, 291f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x0c, 0xe8, 0x2d, 0xb2, 0x57, 0x11, 0xcb, 0x53, 292f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x02, 0xeb, 0x27, 0x43, 0xb0, 0x36, 0xf3, 0xd7, 293f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x50, 0xd6, 0xcf, 0x0d, 0xc0, 0xac, 0xb9, 0x29, 294f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x50, 0xd5, 0x46, 0xdb, 0x30, 0x8f, 0x93, 0xb4, 295f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xff, 0x24, 0x4a, 0xfa, 0x9d, 0xc7, 0x2b, 0xcd, 296f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x75, 0x8d, 0x2c }, 297f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 67, 298f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 299f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* ADATA */ 300f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0x68, 0x8e, 0x1a, 0xa9, 0x84, 0xde, 0x92, 0x6d, 301f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xc7, 0xb4, 0xc4, 0x7f, 0x44 }, 302f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 13, 303f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 304f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* IV */ 305f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0xb7, 0x21, 0x38, 0xb5, 0xa0, 0x5f, 0xf5, 0x07, 306f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x0e, 0x8c, 0xd9, 0x41, 0x83, 0xf7, 0x61, 0xd8 }, 307f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 16, 308f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 309f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* CT */ 310f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0xcb, 0xc8, 0xd2, 0xf1, 0x54, 0x81, 0xa4, 0xcc, 311f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x7d, 0xd1, 0xe1, 0x9a, 0xaa, 0x83, 0xde, 0x56, 312f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x78, 0x48, 0x3e, 0xc3, 0x59, 0xae, 0x7d, 0xec, 313f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x2a, 0xb8, 0xd5, 0x34, 0xe0, 0x90, 0x6f, 0x4b, 314f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x46, 0x63, 0xfa, 0xff, 0x58, 0xa8, 0xb2, 0xd7, 315f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0x33, 0xb8, 0x45, 0xee, 0xf7, 0xc9, 0xb3, 0x31, 316f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xe9, 0xe1, 0x0e, 0xb2, 0x61, 0x2c, 0x99, 0x5f, 317f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xeb, 0x1a, 0xc1, 0x5a, 0x62, 0x86, 0xcc, 0xe8, 318f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xb2, 0x97, 0xa8 }, 319f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 320f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* TAG */ 321f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project { 0x8d, 0x2d, 0x2a, 0x93, 0x72, 0x62, 0x6f, 0x6b, 322f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 0xee, 0x85, 0x80, 0x27, 0x6a, 0x63, 0x66, 0xbf } 323f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project} 324f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 325f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* rest of test cases are the same except AES key size changes... ignored... */ 326f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project}; 327f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int idx, err; 328f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project unsigned long x, y; 329f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project unsigned char out[2][128], T[2][16]; 330f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 331f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /* find aes */ 332f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project idx = find_cipher("aes"); 333f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project if (idx == -1) { 334f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project idx = find_cipher("rijndael"); 335f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project if (idx == -1) { 336f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return CRYPT_NOP; 337f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 338f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 339f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 340f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { 341f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project y = sizeof(T[0]); 342f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project if ((err = gcm_memory(idx, tests[x].K, tests[x].keylen, 343f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project tests[x].IV, tests[x].IVlen, 344f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project tests[x].A, tests[x].alen, 345f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project (unsigned char*)tests[x].P, tests[x].ptlen, 346f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project out[0], T[0], &y, GCM_ENCRYPT)) != CRYPT_OK) { 347f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return err; 348f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 349f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 350f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project if (XMEMCMP(out[0], tests[x].C, tests[x].ptlen)) { 351f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#if 0 352f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("\nCiphertext wrong %lu\n", x); 353f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project for (y = 0; y < tests[x].ptlen; y++) { 354f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("%02x", out[0][y] & 255); 355f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 356f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("\n"); 357f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 358f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return CRYPT_FAIL_TESTVECTOR; 359f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 360f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 361f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project if (XMEMCMP(T[0], tests[x].T, 16)) { 362f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#if 0 363f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("\nTag on plaintext wrong %lu\n", x); 364f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project for (y = 0; y < 16; y++) { 365f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("%02x", T[0][y] & 255); 366f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 367f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("\n"); 368f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 369f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return CRYPT_FAIL_TESTVECTOR; 370f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 371f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 372f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project y = sizeof(T[1]); 373f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project if ((err = gcm_memory(idx, tests[x].K, tests[x].keylen, 374f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project tests[x].IV, tests[x].IVlen, 375f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project tests[x].A, tests[x].alen, 376f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project out[1], tests[x].ptlen, 377f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project out[0], T[1], &y, GCM_DECRYPT)) != CRYPT_OK) { 378f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return err; 379f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 380f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 381f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project if (XMEMCMP(out[1], tests[x].P, tests[x].ptlen)) { 382f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#if 0 383f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("\nplaintext wrong %lu\n", x); 384f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project for (y = 0; y < tests[x].ptlen; y++) { 385f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("%02x", out[0][y] & 255); 386f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 387f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("\n"); 388f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 389f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return CRYPT_FAIL_TESTVECTOR; 390f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 391f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 392f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project if (XMEMCMP(T[1], tests[x].T, 16)) { 393f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#if 0 394f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("\nTag on ciphertext wrong %lu\n", x); 395f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project for (y = 0; y < 16; y++) { 396f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("%02x", T[1][y] & 255); 397f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 398f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("\n"); 399f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 400f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return CRYPT_FAIL_TESTVECTOR; 401f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 402f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 403f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 404f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return CRYPT_OK; 405f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 406f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project} 407f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 408f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 409f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 410f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 411f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* $Source: /cvs/libtom/libtomcrypt/src/encauth/gcm/gcm_test.c,v $ */ 412f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* $Revision: 1.20 $ */ 413f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* $Date: 2006/12/03 17:25:44 $ */ 414