/* ====================================================================
 * Copyright (c) 2005 The OpenSSL Project.  All rights reserved.
 * ====================================================================
 */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#include <openssl/whrlpool.h>
#include <openssl/crypto.h>

#if defined(OPENSSL_NO_WHIRLPOOL)
int main(int argc, char *argv[])
{
    printf("No Whirlpool support\n");
    return (0);
}
#else

/* ISO/IEC 10118-3 test vector set */
static const unsigned char iso_test_1[WHIRLPOOL_DIGEST_LENGTH] = {
    0x19, 0xFA, 0x61, 0xD7, 0x55, 0x22, 0xA4, 0x66,
    0x9B, 0x44, 0xE3, 0x9C, 0x1D, 0x2E, 0x17, 0x26,
    0xC5, 0x30, 0x23, 0x21, 0x30, 0xD4, 0x07, 0xF8,
    0x9A, 0xFE, 0xE0, 0x96, 0x49, 0x97, 0xF7, 0xA7,
    0x3E, 0x83, 0xBE, 0x69, 0x8B, 0x28, 0x8F, 0xEB,
    0xCF, 0x88, 0xE3, 0xE0, 0x3C, 0x4F, 0x07, 0x57,
    0xEA, 0x89, 0x64, 0xE5, 0x9B, 0x63, 0xD9, 0x37,
    0x08, 0xB1, 0x38, 0xCC, 0x42, 0xA6, 0x6E, 0xB3
};

static const unsigned char iso_test_2[WHIRLPOOL_DIGEST_LENGTH] = {
    0x8A, 0xCA, 0x26, 0x02, 0x79, 0x2A, 0xEC, 0x6F,
    0x11, 0xA6, 0x72, 0x06, 0x53, 0x1F, 0xB7, 0xD7,
    0xF0, 0xDF, 0xF5, 0x94, 0x13, 0x14, 0x5E, 0x69,
    0x73, 0xC4, 0x50, 0x01, 0xD0, 0x08, 0x7B, 0x42,
    0xD1, 0x1B, 0xC6, 0x45, 0x41, 0x3A, 0xEF, 0xF6,
    0x3A, 0x42, 0x39, 0x1A, 0x39, 0x14, 0x5A, 0x59,
    0x1A, 0x92, 0x20, 0x0D, 0x56, 0x01, 0x95, 0xE5,
    0x3B, 0x47, 0x85, 0x84, 0xFD, 0xAE, 0x23, 0x1A
};

static const unsigned char iso_test_3[WHIRLPOOL_DIGEST_LENGTH] = {
    0x4E, 0x24, 0x48, 0xA4, 0xC6, 0xF4, 0x86, 0xBB,
    0x16, 0xB6, 0x56, 0x2C, 0x73, 0xB4, 0x02, 0x0B,
    0xF3, 0x04, 0x3E, 0x3A, 0x73, 0x1B, 0xCE, 0x72,
    0x1A, 0xE1, 0xB3, 0x03, 0xD9, 0x7E, 0x6D, 0x4C,
    0x71, 0x81, 0xEE, 0xBD, 0xB6, 0xC5, 0x7E, 0x27,
    0x7D, 0x0E, 0x34, 0x95, 0x71, 0x14, 0xCB, 0xD6,
    0xC7, 0x97, 0xFC, 0x9D, 0x95, 0xD8, 0xB5, 0x82,
    0xD2, 0x25, 0x29, 0x20, 0x76, 0xD4, 0xEE, 0xF5
};

static const unsigned char iso_test_4[WHIRLPOOL_DIGEST_LENGTH] = {
    0x37, 0x8C, 0x84, 0xA4, 0x12, 0x6E, 0x2D, 0xC6,
    0xE5, 0x6D, 0xCC, 0x74, 0x58, 0x37, 0x7A, 0xAC,
    0x83, 0x8D, 0x00, 0x03, 0x22, 0x30, 0xF5, 0x3C,
    0xE1, 0xF5, 0x70, 0x0C, 0x0F, 0xFB, 0x4D, 0x3B,
    0x84, 0x21, 0x55, 0x76, 0x59, 0xEF, 0x55, 0xC1,
    0x06, 0xB4, 0xB5, 0x2A, 0xC5, 0xA4, 0xAA, 0xA6,
    0x92, 0xED, 0x92, 0x00, 0x52, 0x83, 0x8F, 0x33,
    0x62, 0xE8, 0x6D, 0xBD, 0x37, 0xA8, 0x90, 0x3E
};

static const unsigned char iso_test_5[WHIRLPOOL_DIGEST_LENGTH] = {
    0xF1, 0xD7, 0x54, 0x66, 0x26, 0x36, 0xFF, 0xE9,
    0x2C, 0x82, 0xEB, 0xB9, 0x21, 0x2A, 0x48, 0x4A,
    0x8D, 0x38, 0x63, 0x1E, 0xAD, 0x42, 0x38, 0xF5,
    0x44, 0x2E, 0xE1, 0x3B, 0x80, 0x54, 0xE4, 0x1B,
    0x08, 0xBF, 0x2A, 0x92, 0x51, 0xC3, 0x0B, 0x6A,
    0x0B, 0x8A, 0xAE, 0x86, 0x17, 0x7A, 0xB4, 0xA6,
    0xF6, 0x8F, 0x67, 0x3E, 0x72, 0x07, 0x86, 0x5D,
    0x5D, 0x98, 0x19, 0xA3, 0xDB, 0xA4, 0xEB, 0x3B
};

static const unsigned char iso_test_6[WHIRLPOOL_DIGEST_LENGTH] = {
    0xDC, 0x37, 0xE0, 0x08, 0xCF, 0x9E, 0xE6, 0x9B,
    0xF1, 0x1F, 0x00, 0xED, 0x9A, 0xBA, 0x26, 0x90,
    0x1D, 0xD7, 0xC2, 0x8C, 0xDE, 0xC0, 0x66, 0xCC,
    0x6A, 0xF4, 0x2E, 0x40, 0xF8, 0x2F, 0x3A, 0x1E,
    0x08, 0xEB, 0xA2, 0x66, 0x29, 0x12, 0x9D, 0x8F,
    0xB7, 0xCB, 0x57, 0x21, 0x1B, 0x92, 0x81, 0xA6,
    0x55, 0x17, 0xCC, 0x87, 0x9D, 0x7B, 0x96, 0x21,
    0x42, 0xC6, 0x5F, 0x5A, 0x7A, 0xF0, 0x14, 0x67
};

static const unsigned char iso_test_7[WHIRLPOOL_DIGEST_LENGTH] = {
    0x46, 0x6E, 0xF1, 0x8B, 0xAB, 0xB0, 0x15, 0x4D,
    0x25, 0xB9, 0xD3, 0x8A, 0x64, 0x14, 0xF5, 0xC0,
    0x87, 0x84, 0x37, 0x2B, 0xCC, 0xB2, 0x04, 0xD6,
    0x54, 0x9C, 0x4A, 0xFA, 0xDB, 0x60, 0x14, 0x29,
    0x4D, 0x5B, 0xD8, 0xDF, 0x2A, 0x6C, 0x44, 0xE5,
    0x38, 0xCD, 0x04, 0x7B, 0x26, 0x81, 0xA5, 0x1A,
    0x2C, 0x60, 0x48, 0x1E, 0x88, 0xC5, 0xA2, 0x0B,
    0x2C, 0x2A, 0x80, 0xCF, 0x3A, 0x9A, 0x08, 0x3B
};

static const unsigned char iso_test_8[WHIRLPOOL_DIGEST_LENGTH] = {
    0x2A, 0x98, 0x7E, 0xA4, 0x0F, 0x91, 0x70, 0x61,
    0xF5, 0xD6, 0xF0, 0xA0, 0xE4, 0x64, 0x4F, 0x48,
    0x8A, 0x7A, 0x5A, 0x52, 0xDE, 0xEE, 0x65, 0x62,
    0x07, 0xC5, 0x62, 0xF9, 0x88, 0xE9, 0x5C, 0x69,
    0x16, 0xBD, 0xC8, 0x03, 0x1B, 0xC5, 0xBE, 0x1B,
    0x7B, 0x94, 0x76, 0x39, 0xFE, 0x05, 0x0B, 0x56,
    0x93, 0x9B, 0xAA, 0xA0, 0xAD, 0xFF, 0x9A, 0xE6,
    0x74, 0x5B, 0x7B, 0x18, 0x1C, 0x3B, 0xE3, 0xFD
};

static const unsigned char iso_test_9[WHIRLPOOL_DIGEST_LENGTH] = {
    0x0C, 0x99, 0x00, 0x5B, 0xEB, 0x57, 0xEF, 0xF5,
    0x0A, 0x7C, 0xF0, 0x05, 0x56, 0x0D, 0xDF, 0x5D,
    0x29, 0x05, 0x7F, 0xD8, 0x6B, 0x20, 0xBF, 0xD6,
    0x2D, 0xEC, 0xA0, 0xF1, 0xCC, 0xEA, 0x4A, 0xF5,
    0x1F, 0xC1, 0x54, 0x90, 0xED, 0xDC, 0x47, 0xAF,
    0x32, 0xBB, 0x2B, 0x66, 0xC3, 0x4F, 0xF9, 0xAD,
    0x8C, 0x60, 0x08, 0xAD, 0x67, 0x7F, 0x77, 0x12,
    0x69, 0x53, 0xB2, 0x26, 0xE4, 0xED, 0x8B, 0x01
};

int main(int argc, char *argv[])
{
    unsigned char md[WHIRLPOOL_DIGEST_LENGTH];
    int i;
    WHIRLPOOL_CTX ctx;

# ifdef OPENSSL_IA32_SSE2
    /*
     * Alternative to this is to call OpenSSL_add_all_algorithms... The below
     * code is retained exclusively for debugging purposes.
     */
    {
        char *env;

        if ((env = getenv("OPENSSL_ia32cap")))
            OPENSSL_ia32cap = strtoul(env, NULL, 0);
    }
# endif

    fprintf(stdout, "Testing Whirlpool ");

    WHIRLPOOL("", 0, md);
    if (memcmp(md, iso_test_1, sizeof(iso_test_1))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 1 of 9 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);

    WHIRLPOOL("a", 1, md);
    if (memcmp(md, iso_test_2, sizeof(iso_test_2))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 2 of 9 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);

    WHIRLPOOL("abc", 3, md);
    if (memcmp(md, iso_test_3, sizeof(iso_test_3))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 3 of 9 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);

    WHIRLPOOL("message digest", 14, md);
    if (memcmp(md, iso_test_4, sizeof(iso_test_4))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 4 of 9 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);

    WHIRLPOOL("abcdefghijklmnopqrstuvwxyz", 26, md);
    if (memcmp(md, iso_test_5, sizeof(iso_test_5))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 5 of 9 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);

    WHIRLPOOL("ABCDEFGHIJKLMNOPQRSTUVWXYZ"
              "abcdefghijklmnopqrstuvwxyz" "0123456789", 62, md);
    if (memcmp(md, iso_test_6, sizeof(iso_test_6))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 6 of 9 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);

    WHIRLPOOL("1234567890" "1234567890" "1234567890" "1234567890"
              "1234567890" "1234567890" "1234567890" "1234567890", 80, md);
    if (memcmp(md, iso_test_7, sizeof(iso_test_7))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 7 of 9 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);

    WHIRLPOOL("abcdbcdecdefdefgefghfghighijhijk", 32, md);
    if (memcmp(md, iso_test_8, sizeof(iso_test_8))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 8 of 9 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);

    WHIRLPOOL_Init(&ctx);
    for (i = 0; i < 1000000; i += 288)
        WHIRLPOOL_Update(&ctx, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                         "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                         "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                         "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                         "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                         "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                         "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                         "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                         "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa",
                         (1000000 - i) < 288 ? 1000000 - i : 288);
    WHIRLPOOL_Final(md, &ctx);
    if (memcmp(md, iso_test_9, sizeof(iso_test_9))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 9 of 9 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);

    fprintf(stdout, " passed.\n");
    fflush(stdout);

    return 0;
}
#endif
