Home | History | Annotate | Line # | Download | only in openssl
      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 #ifndef HEADER_MD5_H
     11 # define HEADER_MD5_H
     12 
     13 # include <openssl/opensslconf.h>
     14 
     15 # ifndef OPENSSL_NO_MD5
     16 # include <openssl/e_os2.h>
     17 # include <stddef.h>
     18 # ifdef  __cplusplus
     19 extern "C" {
     20 # endif
     21 
     22 /*
     23  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     24  * ! MD5_LONG has to be at least 32 bits wide.                     !
     25  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     26  */
     27 # define MD5_LONG unsigned int
     28 
     29 # define MD5_CBLOCK      64
     30 # define MD5_LBLOCK      (MD5_CBLOCK/4)
     31 # define MD5_DIGEST_LENGTH 16
     32 
     33 typedef struct MD5state_st {
     34     MD5_LONG A, B, C, D;
     35     MD5_LONG Nl, Nh;
     36     MD5_LONG data[MD5_LBLOCK];
     37     unsigned int num;
     38 } MD5_CTX;
     39 
     40 int MD5_Init(MD5_CTX *c);
     41 int MD5_Update(MD5_CTX *c, const void *data, size_t len);
     42 int MD5_Final(unsigned char *md, MD5_CTX *c);
     43 unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md);
     44 void MD5_Transform(MD5_CTX *c, const unsigned char *b);
     45 # ifdef  __cplusplus
     46 }
     47 # endif
     48 # endif
     49 
     50 #endif
     51