},
};
+const struct hash_vectors_st rmd160_vectors[] = {
+ {
+ STR(plaintext, plaintext_size, "abcdefghijklmnopqrstuvwxyz"),
+ STR(output, output_size,
+ "\xf7\x1c\x27\x10\x9c\x69\x2c\x1b\x56\xbb\xdc\xeb\x5b\x9d\x28\x65\xb3\x70\x8d\xbc"),
+ },
+};
+
const struct hash_vectors_st sha1_vectors[] = {
{
STR(plaintext, plaintext_size, "what do ya want for nothing?"),
case GNUTLS_DIG_UNKNOWN:
NON_FIPS_CASE(GNUTLS_DIG_MD5, test_digest, md5_vectors);
FALLTHROUGH;
+ NON_FIPS_CASE(GNUTLS_DIG_RMD160, test_digest, rmd160_vectors);
+ FALLTHROUGH;
CASE(GNUTLS_DIG_SHA1, test_digest, sha1_vectors);
FALLTHROUGH;
CASE(GNUTLS_DIG_SHA224, test_digest, sha224_vectors);
#include "errors.h"
#include <nettle/md5.h>
#include <nettle/md2.h>
+#include <nettle/ripemd160.h>
#include <nettle/sha.h>
#include <nettle/sha3.h>
#include <nettle/hmac.h>
struct sha3_512_ctx sha3_512;
struct sha1_ctx sha1;
struct md2_ctx md2;
+ struct ripemd160_ctx ripemd160;
struct md5_sha1_ctx md5_sha1;
#if ENABLE_GOST
struct gosthash94cp_ctx gosthash94cp;
ctx->ctx_ptr = &ctx->ctx.md2;
ctx->length = MD2_DIGEST_SIZE;
break;
+
+ case GNUTLS_DIG_RMD160:
+ ripemd160_init(&ctx->ctx.ripemd160);
+ ctx->update = (update_func)ripemd160_update;
+ ctx->digest = (digest_func)ripemd160_digest;
+ ctx->ctx_ptr = &ctx->ctx.ripemd160;
+ ctx->length = RIPEMD160_DIGEST_SIZE;
+ break;
#if ENABLE_GOST
case GNUTLS_DIG_GOSTR_94:
gosthash94cp_init(&ctx->ctx.gosthash94cp);