mirror of
https://github.com/openssl/openssl.git
synced 2024-12-26 10:24:04 +08:00
d166ed8c11
Reviewed-by: Richard Levitte <levitte@openssl.org>
93 lines
2.4 KiB
C
93 lines
2.4 KiB
C
/*
|
|
* Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
|
|
*
|
|
* Licensed under the OpenSSL license (the "License"). You may not use
|
|
* this file except in compliance with the License. You can obtain a copy
|
|
* in the file LICENSE in the source distribution or at
|
|
* https://www.openssl.org/source/license.html
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
|
|
#include "../e_os.h"
|
|
|
|
#ifdef OPENSSL_NO_RMD160
|
|
int main(int argc, char *argv[])
|
|
{
|
|
printf("No ripemd support\n");
|
|
return (0);
|
|
}
|
|
#else
|
|
# include <openssl/ripemd.h>
|
|
# include <openssl/evp.h>
|
|
|
|
# ifdef CHARSET_EBCDIC
|
|
# include <openssl/ebcdic.h>
|
|
# endif
|
|
|
|
static char test[][100] = {
|
|
{ "" },
|
|
{ "a" },
|
|
{ "abc" },
|
|
{ "message digest" },
|
|
{ "abcdefghijklmnopqrstuvwxyz" },
|
|
{ "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" },
|
|
{ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" },
|
|
{ "12345678901234567890123456789012345678901234567890123456789012345678901234567890" }
|
|
};
|
|
|
|
static char *ret[] = {
|
|
"9c1185a5c5e9fc54612808977ee8f548b2258d31",
|
|
"0bdc9d2d256b3ee9daae347be6f4dc835a467ffe",
|
|
"8eb208f7e05d987a9b044a8e98c6b087f15a0bfc",
|
|
"5d0689ef49d2fae572b881b123a85ffa21595f36",
|
|
"f71c27109c692c1b56bbdceb5b9d2865b3708dbc",
|
|
"12a053384a9c0c88e405a06c27dcf49ada62eb2b",
|
|
"b0e20b6e3116640286ed3a87a5713079b21f5189",
|
|
"9b752e45573d4b39f4dbd3323cab82bf63326bfb",
|
|
};
|
|
|
|
static char *pt(unsigned char *md);
|
|
int main(int argc, char *argv[])
|
|
{
|
|
unsigned int i;
|
|
int err = 0;
|
|
char **R;
|
|
char *p;
|
|
unsigned char md[RIPEMD160_DIGEST_LENGTH];
|
|
|
|
R = ret;
|
|
for (i = 0; i < OSSL_NELEM(test); i++) {
|
|
# ifdef CHARSET_EBCDIC
|
|
ebcdic2ascii(test[i], test[i], strlen(test[i]));
|
|
# endif
|
|
if (!EVP_Digest(test[i], strlen(test[i]), md, NULL, EVP_ripemd160(),
|
|
NULL)) {
|
|
printf("EVP Digest error.\n");
|
|
EXIT(1);
|
|
}
|
|
p = pt(md);
|
|
if (strcmp(p, (char *)*R) != 0) {
|
|
printf("error calculating RIPEMD160 on '%s'\n", test[i]);
|
|
printf("got %s instead of %s\n", p, *R);
|
|
err++;
|
|
} else
|
|
printf("test %d ok\n", i + 1);
|
|
R++;
|
|
}
|
|
EXIT(err);
|
|
}
|
|
|
|
static char *pt(unsigned char *md)
|
|
{
|
|
int i;
|
|
static char buf[80];
|
|
|
|
for (i = 0; i < RIPEMD160_DIGEST_LENGTH; i++)
|
|
sprintf(&(buf[i * 2]), "%02x", md[i]);
|
|
return (buf);
|
|
}
|
|
#endif
|