]>
Commit | Line | Data |
---|---|---|
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 | 19 | unsigned 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 | } |