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#include <openssl/md2.h> 13 14/* 15 * This is a separate file so that #defines in cryptlib.h can map my MD 16 * functions to different names 17 */ 18 19unsigned char *MD2(const unsigned char *d, size_t n, unsigned char *md) 20{ 21 MD2_CTX c; 22 static unsigned char m[MD2_DIGEST_LENGTH]; 23 24 if (md == NULL) 25 md = m; 26 if (!MD2_Init(&c)) 27 return NULL; 28#ifndef CHARSET_EBCDIC 29 MD2_Update(&c, d, n); 30#else 31 { 32 char temp[1024]; 33 unsigned long chunk; 34 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 } 43#endif 44 MD2_Final(md, &c); 45 OPENSSL_cleanse(&c, sizeof(c)); /* Security consideration */ 46 return md; 47} 48