1
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved.
3
* This package is an SSL implementation written
4
* by Eric Young (eay@cryptsoft.com).
5
* The implementation was written so as to conform with Netscapes SSL.
7
* This library is free for commercial and non-commercial use as long as
8
* the following conditions are aheared to. The following conditions
9
* apply to all code found in this distribution, be it the RC4, RSA,
10
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
11
* included with this distribution is covered by the same copyright terms
12
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
14
* Copyright remains Eric Young's, and as such any Copyright notices in
15
* the code are not to be removed.
16
* If this package is used in a product, Eric Young should be given attribution
17
* as the author of the parts of the library used.
18
* This can be in the form of a textual message at program startup or
19
* in documentation (online or textual) provided with the package.
21
* Redistribution and use in source and binary forms, with or without
22
* modification, are permitted provided that the following conditions
24
* 1. Redistributions of source code must retain the copyright
25
* notice, this list of conditions and the following disclaimer.
26
* 2. Redistributions in binary form must reproduce the above copyright
27
* notice, this list of conditions and the following disclaimer in the
28
* documentation and/or other materials provided with the distribution.
29
* 3. All advertising materials mentioning features or use of this software
30
* must display the following acknowledgement:
31
* "This product includes cryptographic software written by
32
* Eric Young (eay@cryptsoft.com)"
33
* The word 'cryptographic' can be left out if the rouines from the library
34
* being used are not cryptographic related :-).
35
* 4. If you include any Windows specific code (or a derivative thereof) from
36
* the apps directory (application code) you must include an acknowledgement:
37
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
39
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
40
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
42
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
43
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
44
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
45
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
46
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
47
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
48
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51
* The licence and distribution terms for any publically available version or
52
* derivative of this code cannot be changed. i.e. this code cannot simply be
53
* copied and put under another distribution licence
54
* [including the GNU Public Licence.] */
56
#ifndef OPENSSL_HEADER_MD5_H
57
#define OPENSSL_HEADER_MD5_H
59
#include <openssl/base.h>
61
#if defined(__cplusplus)
69
/* MD5_CBLOCK is the block size of MD5. */
72
/* MD5_DIGEST_LENGTH is the length of an MD5 digest. */
73
#define MD5_DIGEST_LENGTH 16
75
/* MD5_Init initialises |md5| and returns one. */
76
OPENSSL_EXPORT int MD5_Init(MD5_CTX *md5);
78
/* MD5_Update adds |len| bytes from |data| to |md5| and returns one. */
79
OPENSSL_EXPORT int MD5_Update(MD5_CTX *md5, const void *data, size_t len);
81
/* MD5_Final adds the final padding to |md5| and writes the resulting digest to
82
* |md|, which must have at least |MD5_DIGEST_LENGTH| bytes of space. It
84
OPENSSL_EXPORT int MD5_Final(uint8_t *md, MD5_CTX *md5);
86
/* MD5 writes the digest of |len| bytes from |data| to |out| and returns |out|.
87
* There must be at least |MD5_DIGEST_LENGTH| bytes of space in |out|. */
88
OPENSSL_EXPORT uint8_t *MD5(const uint8_t *data, size_t len, uint8_t *out);
90
/* MD5_Transform is a low-level function that performs a single, MD5 block
91
* transformation using the state from |md5| and 64 bytes from |block|. */
92
OPENSSL_EXPORT void MD5_Transform(MD5_CTX *md5, const uint8_t *block);
102
#if defined(__cplusplus)
106
#endif /* OPENSSL_HEADER_MD5_H */