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