1f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* test the multi helpers... */ 2f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#include <tomcrypt.h> 3f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 4f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint main(void) 5f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project{ 6f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project unsigned char key[16], buf[2][MAXBLOCKSIZE]; 7f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project unsigned long len, len2; 8f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 9f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 10f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* register algos */ 11f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project register_hash(&sha256_desc); 12f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project register_cipher(&aes_desc); 13f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 14f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* HASH testing */ 15f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project len = sizeof(buf[0]); 16f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project hash_memory(find_hash("sha256"), (unsigned char*)"hello", 5, buf[0], &len); 17f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project len2 = sizeof(buf[0]); 18f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project hash_memory_multi(find_hash("sha256"), buf[1], &len2, (unsigned char*)"hello", 5, NULL); 19f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project if (len != len2 || memcmp(buf[0], buf[1], len)) { 20f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("Failed: %d %lu %lu\n", __LINE__, len, len2); 21f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return EXIT_FAILURE; 22f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 23f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project len2 = sizeof(buf[0]); 24f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project hash_memory_multi(find_hash("sha256"), buf[1], &len2, (unsigned char*)"he", 2UL, "llo", 3UL, NULL, 0); 25f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project if (len != len2 || memcmp(buf[0], buf[1], len)) { 26f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("Failed: %d %lu %lu\n", __LINE__, len, len2); 27f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return EXIT_FAILURE; 28f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 29f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project len2 = sizeof(buf[0]); 30f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project hash_memory_multi(find_hash("sha256"), buf[1], &len2, (unsigned char*)"h", 1UL, "e", 1UL, "l", 1UL, "l", 1UL, "o", 1UL, NULL); 31f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project if (len != len2 || memcmp(buf[0], buf[1], len)) { 32f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("Failed: %d %lu %lu\n", __LINE__, len, len2); 33f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return EXIT_FAILURE; 34f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 35f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 36f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* HMAC */ 37f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project len = sizeof(buf[0]); 38f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project hmac_memory(find_hash("sha256"), key, 16, (unsigned char*)"hello", 5, buf[0], &len); 39f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project len2 = sizeof(buf[0]); 40f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project hmac_memory_multi(find_hash("sha256"), key, 16, buf[1], &len2, (unsigned char*)"hello", 5UL, NULL); 41f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project if (len != len2 || memcmp(buf[0], buf[1], len)) { 42f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("Failed: %d %lu %lu\n", __LINE__, len, len2); 43f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return EXIT_FAILURE; 44f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 45f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project len2 = sizeof(buf[0]); 46f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project hmac_memory_multi(find_hash("sha256"), key, 16, buf[1], &len2, (unsigned char*)"he", 2UL, "llo", 3UL, NULL); 47f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project if (len != len2 || memcmp(buf[0], buf[1], len)) { 48f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("Failed: %d %lu %lu\n", __LINE__, len, len2); 49f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return EXIT_FAILURE; 50f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 51f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project len2 = sizeof(buf[0]); 52f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project hmac_memory_multi(find_hash("sha256"), key, 16, buf[1], &len2, (unsigned char*)"h", 1UL, "e", 1UL, "l", 1UL, "l", 1UL, "o", 1UL, NULL); 53f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project if (len != len2 || memcmp(buf[0], buf[1], len)) { 54f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("Failed: %d %lu %lu\n", __LINE__, len, len2); 55f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return EXIT_FAILURE; 56f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 57f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 58f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* OMAC */ 59f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project len = sizeof(buf[0]); 60f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project omac_memory(find_cipher("aes"), key, 16, (unsigned char*)"hello", 5, buf[0], &len); 61f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project len2 = sizeof(buf[0]); 62f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project omac_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"hello", 5UL, NULL); 63f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project if (len != len2 || memcmp(buf[0], buf[1], len)) { 64f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("Failed: %d %lu %lu\n", __LINE__, len, len2); 65f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return EXIT_FAILURE; 66f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 67f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project len2 = sizeof(buf[0]); 68f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project omac_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"he", 2UL, "llo", 3UL, NULL); 69f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project if (len != len2 || memcmp(buf[0], buf[1], len)) { 70f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("Failed: %d %lu %lu\n", __LINE__, len, len2); 71f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return EXIT_FAILURE; 72f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 73f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project len2 = sizeof(buf[0]); 74f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project omac_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"h", 1UL, "e", 1UL, "l", 1UL, "l", 1UL, "o", 1UL, NULL); 75f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project if (len != len2 || memcmp(buf[0], buf[1], len)) { 76f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("Failed: %d %lu %lu\n", __LINE__, len, len2); 77f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return EXIT_FAILURE; 78f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 79f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 80f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* PMAC */ 81f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project len = sizeof(buf[0]); 82f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project pmac_memory(find_cipher("aes"), key, 16, (unsigned char*)"hello", 5, buf[0], &len); 83f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project len2 = sizeof(buf[0]); 84f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project pmac_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"hello", 5, NULL); 85f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project if (len != len2 || memcmp(buf[0], buf[1], len)) { 86f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("Failed: %d %lu %lu\n", __LINE__, len, len2); 87f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return EXIT_FAILURE; 88f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 89f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project len2 = sizeof(buf[0]); 90f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project pmac_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"he", 2UL, "llo", 3UL, NULL); 91f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project if (len != len2 || memcmp(buf[0], buf[1], len)) { 92f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("Failed: %d %lu %lu\n", __LINE__, len, len2); 93f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return EXIT_FAILURE; 94f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 95f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project len2 = sizeof(buf[0]); 96f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project pmac_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"h", 1UL, "e", 1UL, "l", 1UL, "l", 1UL, "o", 1UL, NULL); 97f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project if (len != len2 || memcmp(buf[0], buf[1], len)) { 98f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("Failed: %d %lu %lu\n", __LINE__, len, len2); 99f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return EXIT_FAILURE; 100f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project } 101f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 102f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 103f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project printf("All passed\n"); 104f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project return EXIT_SUCCESS; 105f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project} 106f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 107f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 108f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* $Source: /cvs/libtom/libtomcrypt/demos/multi.c,v $ */ 109f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* $Revision: 1.3 $ */ 110f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* $Date: 2006/06/07 22:25:09 $ */ 111