1/*
2 * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
3 *
4 * Licensed under the OpenSSL license (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_MD2
14
15# include <openssl/evp.h>
16# include <openssl/objects.h>
17# include <openssl/x509.h>
18# include <openssl/md2.h>
19# include <openssl/rsa.h>
20
21#include "crypto/evp.h"
22
23static int init(EVP_MD_CTX *ctx)
24{
25    return MD2_Init(EVP_MD_CTX_md_data(ctx));
26}
27
28static int update(EVP_MD_CTX *ctx, const void *data, size_t count)
29{
30    return MD2_Update(EVP_MD_CTX_md_data(ctx), data, count);
31}
32
33static int final(EVP_MD_CTX *ctx, unsigned char *md)
34{
35    return MD2_Final(md, EVP_MD_CTX_md_data(ctx));
36}
37
38static const EVP_MD md2_md = {
39    NID_md2,
40    NID_md2WithRSAEncryption,
41    MD2_DIGEST_LENGTH,
42    0,
43    init,
44    update,
45    final,
46    NULL,
47    NULL,
48    MD2_BLOCK,
49    sizeof(EVP_MD *) + sizeof(MD2_CTX),
50};
51
52const EVP_MD *EVP_md2(void)
53{
54    return &md2_md;
55}
56#endif
57