1 | /* |
2 | * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. |
3 | * |
4 | * Licensed under the Apache License 2.0 (the "License"). You may not use |
5 | * this file except in compliance with the License. You can obtain a copy |
6 | * in the file LICENSE in the source distribution or at |
7 | * https://www.openssl.org/source/license.html |
8 | */ |
9 | |
10 | #include <stdio.h> |
11 | #include "internal/cryptlib.h" |
12 | |
13 | #ifndef OPENSSL_NO_RMD160 |
14 | |
15 | # include <openssl/ripemd.h> |
16 | # include <openssl/evp.h> |
17 | # include <openssl/objects.h> |
18 | # include <openssl/x509.h> |
19 | # include <openssl/rsa.h> |
20 | # include "crypto/evp.h" |
21 | |
22 | static int init(EVP_MD_CTX *ctx) |
23 | { |
24 | return RIPEMD160_Init(EVP_MD_CTX_md_data(ctx)); |
25 | } |
26 | |
27 | static int update(EVP_MD_CTX *ctx, const void *data, size_t count) |
28 | { |
29 | return RIPEMD160_Update(EVP_MD_CTX_md_data(ctx), data, count); |
30 | } |
31 | |
32 | static int final(EVP_MD_CTX *ctx, unsigned char *md) |
33 | { |
34 | return RIPEMD160_Final(md, EVP_MD_CTX_md_data(ctx)); |
35 | } |
36 | |
37 | static const EVP_MD ripemd160_md = { |
38 | NID_ripemd160, |
39 | NID_ripemd160WithRSA, |
40 | RIPEMD160_DIGEST_LENGTH, |
41 | 0, |
42 | init, |
43 | update, |
44 | final, |
45 | NULL, |
46 | NULL, |
47 | RIPEMD160_CBLOCK, |
48 | sizeof(EVP_MD *) + sizeof(RIPEMD160_CTX), |
49 | }; |
50 | |
51 | const EVP_MD *EVP_ripemd160(void) |
52 | { |
53 | return &ripemd160_md; |
54 | } |
55 | #endif |
56 | |