]> git.ipfire.org Git - thirdparty/openssl.git/blame - crypto/md2/md2_one.c
Copyright consolidation 05/10
[thirdparty/openssl.git] / crypto / md2 / md2_one.c
CommitLineData
aa6bb135
RS
1/*
2 * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
0f113f3e 3 *
aa6bb135
RS
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
58964a49
RE
8 */
9
10#include <stdio.h>
b39fc560 11#include "internal/cryptlib.h"
ec577822 12#include <openssl/md2.h>
58964a49 13
0f113f3e
MC
14/*
15 * This is a separate file so that #defines in cryptlib.h can map my MD
16 * functions to different names
17 */
58964a49 18
9e0aad9f 19unsigned char *MD2(const unsigned char *d, size_t n, unsigned char *md)
0f113f3e
MC
20{
21 MD2_CTX c;
22 static unsigned char m[MD2_DIGEST_LENGTH];
58964a49 23
0f113f3e
MC
24 if (md == NULL)
25 md = m;
26 if (!MD2_Init(&c))
27 return NULL;
a53955d8 28#ifndef CHARSET_EBCDIC
0f113f3e 29 MD2_Update(&c, d, n);
a53955d8 30#else
0f113f3e
MC
31 {
32 char temp[1024];
33 unsigned long chunk;
a53955d8 34
0f113f3e
MC
35 while (n > 0) {
36 chunk = (n > sizeof(temp)) ? sizeof(temp) : n;
37 ebcdic2ascii(temp, d, chunk);
38 MD2_Update(&c, temp, chunk);
39 n -= chunk;
40 d += chunk;
41 }
42 }
a53955d8 43#endif
0f113f3e
MC
44 MD2_Final(md, &c);
45 OPENSSL_cleanse(&c, sizeof(c)); /* Security consideration */
46 return (md);
47}