diff options
author | doug <> | 2015-09-14 01:45:03 +0000 |
---|---|---|
committer | doug <> | 2015-09-14 01:45:03 +0000 |
commit | ccf0b47cd77c8c167d186cc3f01dfc310ee5b29f (patch) | |
tree | 587478d440edfb518946564a3da5958afa932346 /src/lib | |
parent | 516aee833d4c8a3fa73b13184ca096bf2ad7f1f2 (diff) | |
download | openbsd-ccf0b47cd77c8c167d186cc3f01dfc310ee5b29f.tar.gz openbsd-ccf0b47cd77c8c167d186cc3f01dfc310ee5b29f.tar.bz2 openbsd-ccf0b47cd77c8c167d186cc3f01dfc310ee5b29f.zip |
Temporarily revive MD4 for MS CHAP support.
Diffstat (limited to 'src/lib')
27 files changed, 1320 insertions, 42 deletions
diff --git a/src/lib/libcrypto/crypto/Makefile b/src/lib/libcrypto/crypto/Makefile index 121aaf1d0a..9a58b30627 100644 --- a/src/lib/libcrypto/crypto/Makefile +++ b/src/lib/libcrypto/crypto/Makefile | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: Makefile,v 1.64 2015/09/13 23:36:21 doug Exp $ | 1 | # $OpenBSD: Makefile,v 1.65 2015/09/14 01:45:03 doug Exp $ |
2 | 2 | ||
3 | LIB= crypto | 3 | LIB= crypto |
4 | 4 | ||
@@ -144,7 +144,7 @@ SRCS+= encode.c digest.c evp_enc.c evp_key.c | |||
144 | SRCS+= e_des.c e_bf.c e_idea.c e_des3.c e_camellia.c | 144 | SRCS+= e_des.c e_bf.c e_idea.c e_des3.c e_camellia.c |
145 | SRCS+= e_rc4.c e_aes.c names.c | 145 | SRCS+= e_rc4.c e_aes.c names.c |
146 | SRCS+= e_xcbc_d.c e_rc2.c e_cast.c | 146 | SRCS+= e_xcbc_d.c e_rc2.c e_cast.c |
147 | SRCS+= m_null.c m_md5.c m_sha1.c m_wp.c | 147 | SRCS+= m_null.c m_md4.c m_md5.c m_sha1.c m_wp.c |
148 | SRCS+= m_dss.c m_dss1.c m_ripemd.c m_ecdsa.c | 148 | SRCS+= m_dss.c m_dss1.c m_ripemd.c m_ecdsa.c |
149 | SRCS+= p_open.c p_seal.c p_sign.c p_verify.c p_lib.c p_enc.c p_dec.c | 149 | SRCS+= p_open.c p_seal.c p_sign.c p_verify.c p_lib.c p_enc.c p_dec.c |
150 | SRCS+= bio_md.c bio_b64.c bio_enc.c evp_err.c e_null.c | 150 | SRCS+= bio_md.c bio_b64.c bio_enc.c evp_err.c e_null.c |
@@ -173,6 +173,9 @@ SRCS+= krb5_asn.c | |||
173 | # lhash/ | 173 | # lhash/ |
174 | SRCS+= lhash.c lh_stats.c | 174 | SRCS+= lhash.c lh_stats.c |
175 | 175 | ||
176 | # md4/ | ||
177 | SRCS+= md4_dgst.c md4_one.c | ||
178 | |||
176 | # md5/ | 179 | # md5/ |
177 | SRCS+= md5_dgst.c md5_one.c | 180 | SRCS+= md5_dgst.c md5_one.c |
178 | 181 | ||
@@ -283,6 +286,7 @@ SRCS+= pcy_cache.c pcy_node.c pcy_data.c pcy_map.c pcy_tree.c pcy_lib.c | |||
283 | ${LCRYPTO_SRC}/idea \ | 286 | ${LCRYPTO_SRC}/idea \ |
284 | ${LCRYPTO_SRC}/krb5 \ | 287 | ${LCRYPTO_SRC}/krb5 \ |
285 | ${LCRYPTO_SRC}/lhash \ | 288 | ${LCRYPTO_SRC}/lhash \ |
289 | ${LCRYPTO_SRC}/md4 \ | ||
286 | ${LCRYPTO_SRC}/md5 \ | 290 | ${LCRYPTO_SRC}/md5 \ |
287 | ${LCRYPTO_SRC}/modes \ | 291 | ${LCRYPTO_SRC}/modes \ |
288 | ${LCRYPTO_SRC}/objects \ | 292 | ${LCRYPTO_SRC}/objects \ |
@@ -340,6 +344,7 @@ HDRS=\ | |||
340 | crypto/idea/idea.h \ | 344 | crypto/idea/idea.h \ |
341 | crypto/krb5/krb5_asn.h \ | 345 | crypto/krb5/krb5_asn.h \ |
342 | crypto/lhash/lhash.h \ | 346 | crypto/lhash/lhash.h \ |
347 | crypto/md4/md4.h \ | ||
343 | crypto/md5/md5.h \ | 348 | crypto/md5/md5.h \ |
344 | crypto/modes/modes.h \ | 349 | crypto/modes/modes.h \ |
345 | crypto/objects/objects.h \ | 350 | crypto/objects/objects.h \ |
diff --git a/src/lib/libcrypto/doc/MD5.pod b/src/lib/libcrypto/doc/MD5.pod index 056f94bd9e..b0edd5416f 100644 --- a/src/lib/libcrypto/doc/MD5.pod +++ b/src/lib/libcrypto/doc/MD5.pod | |||
@@ -2,10 +2,33 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | MD5, MD5_Init, MD5_Update, MD5_Final - MD5 hash functions | 5 | MD2, MD4, MD5, MD2_Init, MD2_Update, MD2_Final, MD4_Init, MD4_Update, |
6 | MD4_Final, MD5_Init, MD5_Update, MD5_Final - MD2, MD4, and MD5 hash functions | ||
6 | 7 | ||
7 | =head1 SYNOPSIS | 8 | =head1 SYNOPSIS |
8 | 9 | ||
10 | #include <openssl/md2.h> | ||
11 | |||
12 | unsigned char *MD2(const unsigned char *d, unsigned long n, | ||
13 | unsigned char *md); | ||
14 | |||
15 | int MD2_Init(MD2_CTX *c); | ||
16 | int MD2_Update(MD2_CTX *c, const unsigned char *data, | ||
17 | unsigned long len); | ||
18 | int MD2_Final(unsigned char *md, MD2_CTX *c); | ||
19 | |||
20 | |||
21 | #include <openssl/md4.h> | ||
22 | |||
23 | unsigned char *MD4(const unsigned char *d, unsigned long n, | ||
24 | unsigned char *md); | ||
25 | |||
26 | int MD4_Init(MD4_CTX *c); | ||
27 | int MD4_Update(MD4_CTX *c, const void *data, | ||
28 | unsigned long len); | ||
29 | int MD4_Final(unsigned char *md, MD4_CTX *c); | ||
30 | |||
31 | |||
9 | #include <openssl/md5.h> | 32 | #include <openssl/md5.h> |
10 | 33 | ||
11 | unsigned char *MD5(const unsigned char *d, unsigned long n, | 34 | unsigned char *MD5(const unsigned char *d, unsigned long n, |
@@ -18,43 +41,61 @@ MD5, MD5_Init, MD5_Update, MD5_Final - MD5 hash functions | |||
18 | 41 | ||
19 | =head1 DESCRIPTION | 42 | =head1 DESCRIPTION |
20 | 43 | ||
21 | MD5 is a cryptographic hash function with a 128 bit output. | 44 | MD2, MD4, and MD5 are cryptographic hash functions with a 128 bit output. |
22 | 45 | ||
23 | MD5() computes the MD5 message digest of the B<n> bytes at B<d> and | 46 | MD2(), MD4(), and MD5() compute the MD2, MD4, and MD5 message digest |
24 | places it in B<md> (which must have space for MD5_DIGEST_LENGTH == 16 | 47 | of the B<n> bytes at B<d> and place it in B<md> (which must have space |
48 | for MD2_DIGEST_LENGTH == MD4_DIGEST_LENGTH == MD5_DIGEST_LENGTH == 16 | ||
25 | bytes of output). If B<md> is NULL, the digest is placed in a static | 49 | bytes of output). If B<md> is NULL, the digest is placed in a static |
26 | array. | 50 | array. |
27 | 51 | ||
28 | The following functions may be used if the message is not completely | 52 | The following functions may be used if the message is not completely |
29 | stored in memory: | 53 | stored in memory: |
30 | 54 | ||
55 | MD2_Init() initializes a B<MD2_CTX> structure. | ||
56 | |||
57 | MD2_Update() can be called repeatedly with chunks of the message to | ||
58 | be hashed (B<len> bytes at B<data>). | ||
59 | |||
60 | MD2_Final() places the message digest in B<md>, which must have space | ||
61 | for MD2_DIGEST_LENGTH == 16 bytes of output, and erases the B<MD2_CTX>. | ||
62 | |||
63 | MD4_Init(), MD4_Update(), MD4_Final(), MD5_Init(), MD5_Update(), and | ||
64 | MD5_Final() are analogous using an B<MD4_CTX> and B<MD5_CTX> structure. | ||
65 | |||
31 | Applications should use the higher level functions | 66 | Applications should use the higher level functions |
32 | L<EVP_DigestInit(3)|EVP_DigestInit(3)> | 67 | L<EVP_DigestInit(3)|EVP_DigestInit(3)> |
33 | etc. instead of calling the hash functions directly. | 68 | etc. instead of calling the hash functions directly. |
34 | 69 | ||
35 | =head1 NOTE | 70 | =head1 NOTE |
36 | 71 | ||
37 | MD5 is recommended only for compatibility with legacy applications. | 72 | MD2, MD4, and MD5 are recommended only for compatibility with existing |
38 | In new applications, SHA-2 should be preferred. | 73 | applications. In new applications, SHA-1 or RIPEMD-160 should be |
74 | preferred. | ||
39 | 75 | ||
40 | =head1 RETURN VALUES | 76 | =head1 RETURN VALUES |
41 | 77 | ||
42 | MD5() returns a pointer to the hash value. | 78 | MD2(), MD4(), and MD5() return pointers to the hash value. |
43 | 79 | ||
44 | MD5_Init(), MD5_Update(), and MD5_Final() return 1 for success, 0 | 80 | MD2_Init(), MD2_Update(), MD2_Final(), MD4_Init(), MD4_Update(), |
45 | otherwise. | 81 | MD4_Final(), MD5_Init(), MD5_Update(), and MD5_Final() return 1 for |
82 | success, 0 otherwise. | ||
46 | 83 | ||
47 | =head1 CONFORMING TO | 84 | =head1 CONFORMING TO |
48 | 85 | ||
49 | RFC 1321 | 86 | RFC 1319, RFC 1320, RFC 1321 |
50 | 87 | ||
51 | =head1 SEE ALSO | 88 | =head1 SEE ALSO |
52 | 89 | ||
53 | L<EVP_DigestInit(3)|EVP_DigestInit(3)> | 90 | L<sha(3)|sha(3)>, L<ripemd(3)|ripemd(3)>, L<EVP_DigestInit(3)|EVP_DigestInit(3)> |
54 | 91 | ||
55 | =head1 HISTORY | 92 | =head1 HISTORY |
56 | 93 | ||
57 | MD5(), MD5_Init(), MD5_Update() and MD5_Final() are available in all | 94 | MD2(), MD2_Init(), MD2_Update() MD2_Final(), MD5(), MD5_Init(), |
58 | versions of OpenSSL. | 95 | MD5_Update() and MD5_Final() are available in all versions of SSLeay |
96 | and OpenSSL. | ||
97 | |||
98 | MD4(), MD4_Init(), and MD4_Update() are available in OpenSSL 0.9.6 and | ||
99 | above. | ||
59 | 100 | ||
60 | =cut | 101 | =cut |
diff --git a/src/lib/libcrypto/evp/c_all.c b/src/lib/libcrypto/evp/c_all.c index 6b23460210..b83195b370 100644 --- a/src/lib/libcrypto/evp/c_all.c +++ b/src/lib/libcrypto/evp/c_all.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: c_all.c,v 1.19 2015/09/13 23:36:21 doug Exp $ */ | 1 | /* $OpenBSD: c_all.c,v 1.20 2015/09/14 01:45:03 doug Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -228,6 +228,10 @@ OpenSSL_add_all_ciphers(void) | |||
228 | void | 228 | void |
229 | OpenSSL_add_all_digests(void) | 229 | OpenSSL_add_all_digests(void) |
230 | { | 230 | { |
231 | #ifndef OPENSSL_NO_MD4 | ||
232 | EVP_add_digest(EVP_md4()); | ||
233 | #endif | ||
234 | |||
231 | #ifndef OPENSSL_NO_MD5 | 235 | #ifndef OPENSSL_NO_MD5 |
232 | EVP_add_digest(EVP_md5()); | 236 | EVP_add_digest(EVP_md5()); |
233 | EVP_add_digest_alias(SN_md5, "ssl2-md5"); | 237 | EVP_add_digest_alias(SN_md5, "ssl2-md5"); |
diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h index 381d4a45c1..2ddbf6142e 100644 --- a/src/lib/libcrypto/evp/evp.h +++ b/src/lib/libcrypto/evp/evp.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: evp.h,v 1.47 2015/09/13 23:36:21 doug Exp $ */ | 1 | /* $OpenBSD: evp.h,v 1.48 2015/09/14 01:45:03 doug Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -648,6 +648,9 @@ void BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k, | |||
648 | #endif | 648 | #endif |
649 | 649 | ||
650 | const EVP_MD *EVP_md_null(void); | 650 | const EVP_MD *EVP_md_null(void); |
651 | #ifndef OPENSSL_NO_MD4 | ||
652 | const EVP_MD *EVP_md4(void); | ||
653 | #endif | ||
651 | #ifndef OPENSSL_NO_MD5 | 654 | #ifndef OPENSSL_NO_MD5 |
652 | const EVP_MD *EVP_md5(void); | 655 | const EVP_MD *EVP_md5(void); |
653 | #endif | 656 | #endif |
diff --git a/src/lib/libcrypto/evp/m_md4.c b/src/lib/libcrypto/evp/m_md4.c new file mode 100644 index 0000000000..ab3cc852be --- /dev/null +++ b/src/lib/libcrypto/evp/m_md4.c | |||
@@ -0,0 +1,118 @@ | |||
1 | /* $OpenBSD: m_md4.c,v 1.16 2015/09/14 01:45:03 doug Exp $ */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | |||
61 | #include <openssl/opensslconf.h> | ||
62 | |||
63 | #ifndef OPENSSL_NO_MD4 | ||
64 | |||
65 | #include <openssl/evp.h> | ||
66 | #include <openssl/md4.h> | ||
67 | #include <openssl/objects.h> | ||
68 | #include <openssl/x509.h> | ||
69 | |||
70 | #ifndef OPENSSL_NO_RSA | ||
71 | #include <openssl/rsa.h> | ||
72 | #endif | ||
73 | |||
74 | static int | ||
75 | init(EVP_MD_CTX *ctx) | ||
76 | { | ||
77 | return MD4_Init(ctx->md_data); | ||
78 | } | ||
79 | |||
80 | static int | ||
81 | update(EVP_MD_CTX *ctx, const void *data, size_t count) | ||
82 | { | ||
83 | return MD4_Update(ctx->md_data, data, count); | ||
84 | } | ||
85 | |||
86 | static int | ||
87 | final(EVP_MD_CTX *ctx, unsigned char *md) | ||
88 | { | ||
89 | return MD4_Final(md, ctx->md_data); | ||
90 | } | ||
91 | |||
92 | static const EVP_MD md4_md = { | ||
93 | .type = NID_md4, | ||
94 | .pkey_type = NID_md4WithRSAEncryption, | ||
95 | .md_size = MD4_DIGEST_LENGTH, | ||
96 | .flags = 0, | ||
97 | .init = init, | ||
98 | .update = update, | ||
99 | .final = final, | ||
100 | .copy = NULL, | ||
101 | .cleanup = NULL, | ||
102 | #ifndef OPENSSL_NO_RSA | ||
103 | .sign = (evp_sign_method *)RSA_sign, | ||
104 | .verify = (evp_verify_method *)RSA_verify, | ||
105 | .required_pkey_type = { | ||
106 | EVP_PKEY_RSA, EVP_PKEY_RSA2, 0, 0, | ||
107 | }, | ||
108 | #endif | ||
109 | .block_size = MD4_CBLOCK, | ||
110 | .ctx_size = sizeof(EVP_MD *) + sizeof(MD4_CTX), | ||
111 | }; | ||
112 | |||
113 | const EVP_MD * | ||
114 | EVP_md4(void) | ||
115 | { | ||
116 | return (&md4_md); | ||
117 | } | ||
118 | #endif | ||
diff --git a/src/lib/libcrypto/man/Makefile b/src/lib/libcrypto/man/Makefile index 101f79b6ff..01e5fef270 100644 --- a/src/lib/libcrypto/man/Makefile +++ b/src/lib/libcrypto/man/Makefile | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: Makefile,v 1.22 2015/09/13 23:36:21 doug Exp $ | 1 | # $OpenBSD: Makefile,v 1.23 2015/09/14 01:45:03 doug Exp $ |
2 | 2 | ||
3 | .include <bsd.own.mk> # for NOMAN | 3 | .include <bsd.own.mk> # for NOMAN |
4 | 4 | ||
@@ -642,9 +642,11 @@ MLINKS+=\ | |||
642 | EVP_DigestInit.3 EVP_get_digestbyname.3 \ | 642 | EVP_DigestInit.3 EVP_get_digestbyname.3 \ |
643 | EVP_DigestInit.3 EVP_get_digestbynid.3 \ | 643 | EVP_DigestInit.3 EVP_get_digestbynid.3 \ |
644 | EVP_DigestInit.3 EVP_get_digestbyobj.3 \ | 644 | EVP_DigestInit.3 EVP_get_digestbyobj.3 \ |
645 | EVP_DigestInit.3 EVP_md2.3 \ | ||
645 | EVP_DigestInit.3 EVP_md5.3 \ | 646 | EVP_DigestInit.3 EVP_md5.3 \ |
646 | EVP_DigestInit.3 EVP_md_null.3 \ | 647 | EVP_DigestInit.3 EVP_md_null.3 \ |
647 | EVP_DigestInit.3 EVP_ripemd160.3 \ | 648 | EVP_DigestInit.3 EVP_ripemd160.3 \ |
649 | EVP_DigestInit.3 EVP_sha.3 \ | ||
648 | EVP_DigestInit.3 EVP_sha1.3 \ | 650 | EVP_DigestInit.3 EVP_sha1.3 \ |
649 | EVP_DigestSignInit.3 EVP_DigestSignUpdate.3 \ | 651 | EVP_DigestSignInit.3 EVP_DigestSignUpdate.3 \ |
650 | EVP_DigestSignInit.3 EVP_DigestSignFinal.3 \ | 652 | EVP_DigestSignInit.3 EVP_DigestSignFinal.3 \ |
@@ -793,6 +795,14 @@ MLINKS+=\ | |||
793 | HMAC.3 HMAC_Init.3 \ | 795 | HMAC.3 HMAC_Init.3 \ |
794 | HMAC.3 HMAC_Update.3 \ | 796 | HMAC.3 HMAC_Update.3 \ |
795 | HMAC.3 HMAC_cleanup.3 \ | 797 | HMAC.3 HMAC_cleanup.3 \ |
798 | MD5.3 MD2.3 \ | ||
799 | MD5.3 MD2_Final.3 \ | ||
800 | MD5.3 MD2_Init.3 \ | ||
801 | MD5.3 MD2_Update.3 \ | ||
802 | MD5.3 MD4.3 \ | ||
803 | MD5.3 MD4_Final.3 \ | ||
804 | MD5.3 MD4_Init.3 \ | ||
805 | MD5.3 MD4_Update.3 \ | ||
796 | MD5.3 MD5_Final.3 \ | 806 | MD5.3 MD5_Final.3 \ |
797 | MD5.3 MD5_Init.3 \ | 807 | MD5.3 MD5_Init.3 \ |
798 | MD5.3 MD5_Update.3 \ | 808 | MD5.3 MD5_Update.3 \ |
diff --git a/src/lib/libcrypto/md4/md4.h b/src/lib/libcrypto/md4/md4.h new file mode 100644 index 0000000000..04aacc9801 --- /dev/null +++ b/src/lib/libcrypto/md4/md4.h | |||
@@ -0,0 +1,103 @@ | |||
1 | /* $OpenBSD: md4.h,v 1.16 2015/09/14 01:45:03 doug Exp $ */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stddef.h> | ||
60 | |||
61 | #ifndef HEADER_MD4_H | ||
62 | #define HEADER_MD4_H | ||
63 | |||
64 | #include <openssl/opensslconf.h> | ||
65 | |||
66 | #ifdef __cplusplus | ||
67 | extern "C" { | ||
68 | #endif | ||
69 | |||
70 | #ifdef OPENSSL_NO_MD4 | ||
71 | #error MD4 is disabled. | ||
72 | #endif | ||
73 | |||
74 | /* | ||
75 | * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
76 | * ! MD4_LONG has to be at least 32 bits wide. ! | ||
77 | * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
78 | */ | ||
79 | |||
80 | #define MD4_LONG unsigned int | ||
81 | |||
82 | #define MD4_CBLOCK 64 | ||
83 | #define MD4_LBLOCK (MD4_CBLOCK/4) | ||
84 | #define MD4_DIGEST_LENGTH 16 | ||
85 | |||
86 | typedef struct MD4state_st | ||
87 | { | ||
88 | MD4_LONG A,B,C,D; | ||
89 | MD4_LONG Nl,Nh; | ||
90 | MD4_LONG data[MD4_LBLOCK]; | ||
91 | unsigned int num; | ||
92 | } MD4_CTX; | ||
93 | |||
94 | int MD4_Init(MD4_CTX *c); | ||
95 | int MD4_Update(MD4_CTX *c, const void *data, size_t len); | ||
96 | int MD4_Final(unsigned char *md, MD4_CTX *c); | ||
97 | unsigned char *MD4(const unsigned char *d, size_t n, unsigned char *md); | ||
98 | void MD4_Transform(MD4_CTX *c, const unsigned char *b); | ||
99 | #ifdef __cplusplus | ||
100 | } | ||
101 | #endif | ||
102 | |||
103 | #endif | ||
diff --git a/src/lib/libcrypto/md4/md4_dgst.c b/src/lib/libcrypto/md4/md4_dgst.c new file mode 100644 index 0000000000..4d3801fc26 --- /dev/null +++ b/src/lib/libcrypto/md4/md4_dgst.c | |||
@@ -0,0 +1,167 @@ | |||
1 | /* $OpenBSD: md4_dgst.c,v 1.16 2015/09/14 01:45:03 doug Exp $ */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include <openssl/opensslv.h> | ||
61 | #include <openssl/crypto.h> | ||
62 | #include "md4_locl.h" | ||
63 | |||
64 | /* Implemented from RFC1186 The MD4 Message-Digest Algorithm | ||
65 | */ | ||
66 | |||
67 | #define INIT_DATA_A (unsigned long)0x67452301L | ||
68 | #define INIT_DATA_B (unsigned long)0xefcdab89L | ||
69 | #define INIT_DATA_C (unsigned long)0x98badcfeL | ||
70 | #define INIT_DATA_D (unsigned long)0x10325476L | ||
71 | |||
72 | int MD4_Init(MD4_CTX *c) | ||
73 | { | ||
74 | memset (c,0,sizeof(*c)); | ||
75 | c->A=INIT_DATA_A; | ||
76 | c->B=INIT_DATA_B; | ||
77 | c->C=INIT_DATA_C; | ||
78 | c->D=INIT_DATA_D; | ||
79 | return 1; | ||
80 | } | ||
81 | |||
82 | #ifndef md4_block_data_order | ||
83 | #ifdef X | ||
84 | #undef X | ||
85 | #endif | ||
86 | void md4_block_data_order (MD4_CTX *c, const void *data_, size_t num) | ||
87 | { | ||
88 | const unsigned char *data=data_; | ||
89 | unsigned MD32_REG_T A,B,C,D,l; | ||
90 | #ifndef MD32_XARRAY | ||
91 | /* See comment in crypto/sha/sha_locl.h for details. */ | ||
92 | unsigned MD32_REG_T XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7, | ||
93 | XX8, XX9,XX10,XX11,XX12,XX13,XX14,XX15; | ||
94 | # define X(i) XX##i | ||
95 | #else | ||
96 | MD4_LONG XX[MD4_LBLOCK]; | ||
97 | # define X(i) XX[i] | ||
98 | #endif | ||
99 | |||
100 | A=c->A; | ||
101 | B=c->B; | ||
102 | C=c->C; | ||
103 | D=c->D; | ||
104 | |||
105 | for (;num--;) | ||
106 | { | ||
107 | HOST_c2l(data,l); X( 0)=l; | ||
108 | HOST_c2l(data,l); X( 1)=l; | ||
109 | /* Round 0 */ | ||
110 | R0(A,B,C,D,X( 0), 3,0); HOST_c2l(data,l); X( 2)=l; | ||
111 | R0(D,A,B,C,X( 1), 7,0); HOST_c2l(data,l); X( 3)=l; | ||
112 | R0(C,D,A,B,X( 2),11,0); HOST_c2l(data,l); X( 4)=l; | ||
113 | R0(B,C,D,A,X( 3),19,0); HOST_c2l(data,l); X( 5)=l; | ||
114 | R0(A,B,C,D,X( 4), 3,0); HOST_c2l(data,l); X( 6)=l; | ||
115 | R0(D,A,B,C,X( 5), 7,0); HOST_c2l(data,l); X( 7)=l; | ||
116 | R0(C,D,A,B,X( 6),11,0); HOST_c2l(data,l); X( 8)=l; | ||
117 | R0(B,C,D,A,X( 7),19,0); HOST_c2l(data,l); X( 9)=l; | ||
118 | R0(A,B,C,D,X( 8), 3,0); HOST_c2l(data,l); X(10)=l; | ||
119 | R0(D,A,B,C,X( 9), 7,0); HOST_c2l(data,l); X(11)=l; | ||
120 | R0(C,D,A,B,X(10),11,0); HOST_c2l(data,l); X(12)=l; | ||
121 | R0(B,C,D,A,X(11),19,0); HOST_c2l(data,l); X(13)=l; | ||
122 | R0(A,B,C,D,X(12), 3,0); HOST_c2l(data,l); X(14)=l; | ||
123 | R0(D,A,B,C,X(13), 7,0); HOST_c2l(data,l); X(15)=l; | ||
124 | R0(C,D,A,B,X(14),11,0); | ||
125 | R0(B,C,D,A,X(15),19,0); | ||
126 | /* Round 1 */ | ||
127 | R1(A,B,C,D,X( 0), 3,0x5A827999L); | ||
128 | R1(D,A,B,C,X( 4), 5,0x5A827999L); | ||
129 | R1(C,D,A,B,X( 8), 9,0x5A827999L); | ||
130 | R1(B,C,D,A,X(12),13,0x5A827999L); | ||
131 | R1(A,B,C,D,X( 1), 3,0x5A827999L); | ||
132 | R1(D,A,B,C,X( 5), 5,0x5A827999L); | ||
133 | R1(C,D,A,B,X( 9), 9,0x5A827999L); | ||
134 | R1(B,C,D,A,X(13),13,0x5A827999L); | ||
135 | R1(A,B,C,D,X( 2), 3,0x5A827999L); | ||
136 | R1(D,A,B,C,X( 6), 5,0x5A827999L); | ||
137 | R1(C,D,A,B,X(10), 9,0x5A827999L); | ||
138 | R1(B,C,D,A,X(14),13,0x5A827999L); | ||
139 | R1(A,B,C,D,X( 3), 3,0x5A827999L); | ||
140 | R1(D,A,B,C,X( 7), 5,0x5A827999L); | ||
141 | R1(C,D,A,B,X(11), 9,0x5A827999L); | ||
142 | R1(B,C,D,A,X(15),13,0x5A827999L); | ||
143 | /* Round 2 */ | ||
144 | R2(A,B,C,D,X( 0), 3,0x6ED9EBA1L); | ||
145 | R2(D,A,B,C,X( 8), 9,0x6ED9EBA1L); | ||
146 | R2(C,D,A,B,X( 4),11,0x6ED9EBA1L); | ||
147 | R2(B,C,D,A,X(12),15,0x6ED9EBA1L); | ||
148 | R2(A,B,C,D,X( 2), 3,0x6ED9EBA1L); | ||
149 | R2(D,A,B,C,X(10), 9,0x6ED9EBA1L); | ||
150 | R2(C,D,A,B,X( 6),11,0x6ED9EBA1L); | ||
151 | R2(B,C,D,A,X(14),15,0x6ED9EBA1L); | ||
152 | R2(A,B,C,D,X( 1), 3,0x6ED9EBA1L); | ||
153 | R2(D,A,B,C,X( 9), 9,0x6ED9EBA1L); | ||
154 | R2(C,D,A,B,X( 5),11,0x6ED9EBA1L); | ||
155 | R2(B,C,D,A,X(13),15,0x6ED9EBA1L); | ||
156 | R2(A,B,C,D,X( 3), 3,0x6ED9EBA1L); | ||
157 | R2(D,A,B,C,X(11), 9,0x6ED9EBA1L); | ||
158 | R2(C,D,A,B,X( 7),11,0x6ED9EBA1L); | ||
159 | R2(B,C,D,A,X(15),15,0x6ED9EBA1L); | ||
160 | |||
161 | A = c->A += A; | ||
162 | B = c->B += B; | ||
163 | C = c->C += C; | ||
164 | D = c->D += D; | ||
165 | } | ||
166 | } | ||
167 | #endif | ||
diff --git a/src/lib/libcrypto/md4/md4_locl.h b/src/lib/libcrypto/md4/md4_locl.h new file mode 100644 index 0000000000..ef574c040d --- /dev/null +++ b/src/lib/libcrypto/md4/md4_locl.h | |||
@@ -0,0 +1,108 @@ | |||
1 | /* $OpenBSD: md4_locl.h,v 1.9 2015/09/14 01:45:03 doug Exp $ */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdlib.h> | ||
60 | #include <string.h> | ||
61 | #include <openssl/opensslconf.h> | ||
62 | #include <openssl/md4.h> | ||
63 | |||
64 | void md4_block_data_order (MD4_CTX *c, const void *p,size_t num); | ||
65 | |||
66 | #define DATA_ORDER_IS_LITTLE_ENDIAN | ||
67 | |||
68 | #define HASH_LONG MD4_LONG | ||
69 | #define HASH_CTX MD4_CTX | ||
70 | #define HASH_CBLOCK MD4_CBLOCK | ||
71 | #define HASH_UPDATE MD4_Update | ||
72 | #define HASH_TRANSFORM MD4_Transform | ||
73 | #define HASH_FINAL MD4_Final | ||
74 | #define HASH_MAKE_STRING(c,s) do { \ | ||
75 | unsigned long ll; \ | ||
76 | ll=(c)->A; HOST_l2c(ll,(s)); \ | ||
77 | ll=(c)->B; HOST_l2c(ll,(s)); \ | ||
78 | ll=(c)->C; HOST_l2c(ll,(s)); \ | ||
79 | ll=(c)->D; HOST_l2c(ll,(s)); \ | ||
80 | } while (0) | ||
81 | #define HASH_BLOCK_DATA_ORDER md4_block_data_order | ||
82 | |||
83 | #include "md32_common.h" | ||
84 | |||
85 | /* | ||
86 | #define F(x,y,z) (((x) & (y)) | ((~(x)) & (z))) | ||
87 | #define G(x,y,z) (((x) & (y)) | ((x) & ((z))) | ((y) & ((z)))) | ||
88 | */ | ||
89 | |||
90 | /* As pointed out by Wei Dai <weidai@eskimo.com>, the above can be | ||
91 | * simplified to the code below. Wei attributes these optimizations | ||
92 | * to Peter Gutmann's SHS code, and he attributes it to Rich Schroeppel. | ||
93 | */ | ||
94 | #define F(b,c,d) ((((c) ^ (d)) & (b)) ^ (d)) | ||
95 | #define G(b,c,d) (((b) & (c)) | ((b) & (d)) | ((c) & (d))) | ||
96 | #define H(b,c,d) ((b) ^ (c) ^ (d)) | ||
97 | |||
98 | #define R0(a,b,c,d,k,s,t) { \ | ||
99 | a+=((k)+(t)+F((b),(c),(d))); \ | ||
100 | a=ROTATE(a,s); }; | ||
101 | |||
102 | #define R1(a,b,c,d,k,s,t) { \ | ||
103 | a+=((k)+(t)+G((b),(c),(d))); \ | ||
104 | a=ROTATE(a,s); };\ | ||
105 | |||
106 | #define R2(a,b,c,d,k,s,t) { \ | ||
107 | a+=((k)+(t)+H((b),(c),(d))); \ | ||
108 | a=ROTATE(a,s); }; | ||
diff --git a/src/lib/libcrypto/md4/md4_one.c b/src/lib/libcrypto/md4/md4_one.c new file mode 100644 index 0000000000..c1fd6f3e52 --- /dev/null +++ b/src/lib/libcrypto/md4/md4_one.c | |||
@@ -0,0 +1,77 @@ | |||
1 | /* $OpenBSD: md4_one.c,v 1.10 2015/09/14 01:45:03 doug Exp $ */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include <string.h> | ||
61 | #include <openssl/md4.h> | ||
62 | #include <openssl/crypto.h> | ||
63 | |||
64 | unsigned char *MD4(const unsigned char *d, size_t n, unsigned char *md) | ||
65 | { | ||
66 | MD4_CTX c; | ||
67 | static unsigned char m[MD4_DIGEST_LENGTH]; | ||
68 | |||
69 | if (md == NULL) md=m; | ||
70 | if (!MD4_Init(&c)) | ||
71 | return NULL; | ||
72 | MD4_Update(&c,d,n); | ||
73 | MD4_Final(md,&c); | ||
74 | explicit_bzero(&c,sizeof(c)); | ||
75 | return(md); | ||
76 | } | ||
77 | |||
diff --git a/src/lib/libcrypto/opensslfeatures.h b/src/lib/libcrypto/opensslfeatures.h index 3d1972f661..ba4dbba959 100644 --- a/src/lib/libcrypto/opensslfeatures.h +++ b/src/lib/libcrypto/opensslfeatures.h | |||
@@ -6,7 +6,6 @@ | |||
6 | # define OPENSSL_NO_JPAKE | 6 | # define OPENSSL_NO_JPAKE |
7 | # define OPENSSL_NO_KRB5 | 7 | # define OPENSSL_NO_KRB5 |
8 | # define OPENSSL_NO_MD2 | 8 | # define OPENSSL_NO_MD2 |
9 | # define OPENSSL_NO_MD4 | ||
10 | # define OPENSSL_NO_MDC2 | 9 | # define OPENSSL_NO_MDC2 |
11 | # define OPENSSL_NO_PSK | 10 | # define OPENSSL_NO_PSK |
12 | # define OPENSSL_NO_RC5 | 11 | # define OPENSSL_NO_RC5 |
diff --git a/src/lib/libssl/doc/standards.txt b/src/lib/libssl/doc/standards.txt index e9eacc5840..7bada8d35f 100644 --- a/src/lib/libssl/doc/standards.txt +++ b/src/lib/libssl/doc/standards.txt | |||
@@ -27,6 +27,12 @@ Implemented: | |||
27 | These are documents that describe things that are implemented (in | 27 | These are documents that describe things that are implemented (in |
28 | whole or at least great parts) in OpenSSL. | 28 | whole or at least great parts) in OpenSSL. |
29 | 29 | ||
30 | 1319 The MD2 Message-Digest Algorithm. B. Kaliski. April 1992. | ||
31 | (Format: TXT=25661 bytes) (Status: INFORMATIONAL) | ||
32 | |||
33 | 1320 The MD4 Message-Digest Algorithm. R. Rivest. April 1992. (Format: | ||
34 | TXT=32407 bytes) (Status: INFORMATIONAL) | ||
35 | |||
30 | 1321 The MD5 Message-Digest Algorithm. R. Rivest. April 1992. (Format: | 36 | 1321 The MD5 Message-Digest Algorithm. R. Rivest. April 1992. (Format: |
31 | TXT=35222 bytes) (Status: INFORMATIONAL) | 37 | TXT=35222 bytes) (Status: INFORMATIONAL) |
32 | 38 | ||
diff --git a/src/lib/libssl/src/crypto/evp/c_all.c b/src/lib/libssl/src/crypto/evp/c_all.c index 6b23460210..b83195b370 100644 --- a/src/lib/libssl/src/crypto/evp/c_all.c +++ b/src/lib/libssl/src/crypto/evp/c_all.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: c_all.c,v 1.19 2015/09/13 23:36:21 doug Exp $ */ | 1 | /* $OpenBSD: c_all.c,v 1.20 2015/09/14 01:45:03 doug Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -228,6 +228,10 @@ OpenSSL_add_all_ciphers(void) | |||
228 | void | 228 | void |
229 | OpenSSL_add_all_digests(void) | 229 | OpenSSL_add_all_digests(void) |
230 | { | 230 | { |
231 | #ifndef OPENSSL_NO_MD4 | ||
232 | EVP_add_digest(EVP_md4()); | ||
233 | #endif | ||
234 | |||
231 | #ifndef OPENSSL_NO_MD5 | 235 | #ifndef OPENSSL_NO_MD5 |
232 | EVP_add_digest(EVP_md5()); | 236 | EVP_add_digest(EVP_md5()); |
233 | EVP_add_digest_alias(SN_md5, "ssl2-md5"); | 237 | EVP_add_digest_alias(SN_md5, "ssl2-md5"); |
diff --git a/src/lib/libssl/src/crypto/evp/evp.h b/src/lib/libssl/src/crypto/evp/evp.h index 381d4a45c1..2ddbf6142e 100644 --- a/src/lib/libssl/src/crypto/evp/evp.h +++ b/src/lib/libssl/src/crypto/evp/evp.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: evp.h,v 1.47 2015/09/13 23:36:21 doug Exp $ */ | 1 | /* $OpenBSD: evp.h,v 1.48 2015/09/14 01:45:03 doug Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -648,6 +648,9 @@ void BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k, | |||
648 | #endif | 648 | #endif |
649 | 649 | ||
650 | const EVP_MD *EVP_md_null(void); | 650 | const EVP_MD *EVP_md_null(void); |
651 | #ifndef OPENSSL_NO_MD4 | ||
652 | const EVP_MD *EVP_md4(void); | ||
653 | #endif | ||
651 | #ifndef OPENSSL_NO_MD5 | 654 | #ifndef OPENSSL_NO_MD5 |
652 | const EVP_MD *EVP_md5(void); | 655 | const EVP_MD *EVP_md5(void); |
653 | #endif | 656 | #endif |
diff --git a/src/lib/libssl/src/crypto/evp/m_md4.c b/src/lib/libssl/src/crypto/evp/m_md4.c new file mode 100644 index 0000000000..ab3cc852be --- /dev/null +++ b/src/lib/libssl/src/crypto/evp/m_md4.c | |||
@@ -0,0 +1,118 @@ | |||
1 | /* $OpenBSD: m_md4.c,v 1.16 2015/09/14 01:45:03 doug Exp $ */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | |||
61 | #include <openssl/opensslconf.h> | ||
62 | |||
63 | #ifndef OPENSSL_NO_MD4 | ||
64 | |||
65 | #include <openssl/evp.h> | ||
66 | #include <openssl/md4.h> | ||
67 | #include <openssl/objects.h> | ||
68 | #include <openssl/x509.h> | ||
69 | |||
70 | #ifndef OPENSSL_NO_RSA | ||
71 | #include <openssl/rsa.h> | ||
72 | #endif | ||
73 | |||
74 | static int | ||
75 | init(EVP_MD_CTX *ctx) | ||
76 | { | ||
77 | return MD4_Init(ctx->md_data); | ||
78 | } | ||
79 | |||
80 | static int | ||
81 | update(EVP_MD_CTX *ctx, const void *data, size_t count) | ||
82 | { | ||
83 | return MD4_Update(ctx->md_data, data, count); | ||
84 | } | ||
85 | |||
86 | static int | ||
87 | final(EVP_MD_CTX *ctx, unsigned char *md) | ||
88 | { | ||
89 | return MD4_Final(md, ctx->md_data); | ||
90 | } | ||
91 | |||
92 | static const EVP_MD md4_md = { | ||
93 | .type = NID_md4, | ||
94 | .pkey_type = NID_md4WithRSAEncryption, | ||
95 | .md_size = MD4_DIGEST_LENGTH, | ||
96 | .flags = 0, | ||
97 | .init = init, | ||
98 | .update = update, | ||
99 | .final = final, | ||
100 | .copy = NULL, | ||
101 | .cleanup = NULL, | ||
102 | #ifndef OPENSSL_NO_RSA | ||
103 | .sign = (evp_sign_method *)RSA_sign, | ||
104 | .verify = (evp_verify_method *)RSA_verify, | ||
105 | .required_pkey_type = { | ||
106 | EVP_PKEY_RSA, EVP_PKEY_RSA2, 0, 0, | ||
107 | }, | ||
108 | #endif | ||
109 | .block_size = MD4_CBLOCK, | ||
110 | .ctx_size = sizeof(EVP_MD *) + sizeof(MD4_CTX), | ||
111 | }; | ||
112 | |||
113 | const EVP_MD * | ||
114 | EVP_md4(void) | ||
115 | { | ||
116 | return (&md4_md); | ||
117 | } | ||
118 | #endif | ||
diff --git a/src/lib/libssl/src/crypto/md4/md4.h b/src/lib/libssl/src/crypto/md4/md4.h new file mode 100644 index 0000000000..04aacc9801 --- /dev/null +++ b/src/lib/libssl/src/crypto/md4/md4.h | |||
@@ -0,0 +1,103 @@ | |||
1 | /* $OpenBSD: md4.h,v 1.16 2015/09/14 01:45:03 doug Exp $ */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stddef.h> | ||
60 | |||
61 | #ifndef HEADER_MD4_H | ||
62 | #define HEADER_MD4_H | ||
63 | |||
64 | #include <openssl/opensslconf.h> | ||
65 | |||
66 | #ifdef __cplusplus | ||
67 | extern "C" { | ||
68 | #endif | ||
69 | |||
70 | #ifdef OPENSSL_NO_MD4 | ||
71 | #error MD4 is disabled. | ||
72 | #endif | ||
73 | |||
74 | /* | ||
75 | * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
76 | * ! MD4_LONG has to be at least 32 bits wide. ! | ||
77 | * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
78 | */ | ||
79 | |||
80 | #define MD4_LONG unsigned int | ||
81 | |||
82 | #define MD4_CBLOCK 64 | ||
83 | #define MD4_LBLOCK (MD4_CBLOCK/4) | ||
84 | #define MD4_DIGEST_LENGTH 16 | ||
85 | |||
86 | typedef struct MD4state_st | ||
87 | { | ||
88 | MD4_LONG A,B,C,D; | ||
89 | MD4_LONG Nl,Nh; | ||
90 | MD4_LONG data[MD4_LBLOCK]; | ||
91 | unsigned int num; | ||
92 | } MD4_CTX; | ||
93 | |||
94 | int MD4_Init(MD4_CTX *c); | ||
95 | int MD4_Update(MD4_CTX *c, const void *data, size_t len); | ||
96 | int MD4_Final(unsigned char *md, MD4_CTX *c); | ||
97 | unsigned char *MD4(const unsigned char *d, size_t n, unsigned char *md); | ||
98 | void MD4_Transform(MD4_CTX *c, const unsigned char *b); | ||
99 | #ifdef __cplusplus | ||
100 | } | ||
101 | #endif | ||
102 | |||
103 | #endif | ||
diff --git a/src/lib/libssl/src/crypto/md4/md4_dgst.c b/src/lib/libssl/src/crypto/md4/md4_dgst.c new file mode 100644 index 0000000000..4d3801fc26 --- /dev/null +++ b/src/lib/libssl/src/crypto/md4/md4_dgst.c | |||
@@ -0,0 +1,167 @@ | |||
1 | /* $OpenBSD: md4_dgst.c,v 1.16 2015/09/14 01:45:03 doug Exp $ */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include <openssl/opensslv.h> | ||
61 | #include <openssl/crypto.h> | ||
62 | #include "md4_locl.h" | ||
63 | |||
64 | /* Implemented from RFC1186 The MD4 Message-Digest Algorithm | ||
65 | */ | ||
66 | |||
67 | #define INIT_DATA_A (unsigned long)0x67452301L | ||
68 | #define INIT_DATA_B (unsigned long)0xefcdab89L | ||
69 | #define INIT_DATA_C (unsigned long)0x98badcfeL | ||
70 | #define INIT_DATA_D (unsigned long)0x10325476L | ||
71 | |||
72 | int MD4_Init(MD4_CTX *c) | ||
73 | { | ||
74 | memset (c,0,sizeof(*c)); | ||
75 | c->A=INIT_DATA_A; | ||
76 | c->B=INIT_DATA_B; | ||
77 | c->C=INIT_DATA_C; | ||
78 | c->D=INIT_DATA_D; | ||
79 | return 1; | ||
80 | } | ||
81 | |||
82 | #ifndef md4_block_data_order | ||
83 | #ifdef X | ||
84 | #undef X | ||
85 | #endif | ||
86 | void md4_block_data_order (MD4_CTX *c, const void *data_, size_t num) | ||
87 | { | ||
88 | const unsigned char *data=data_; | ||
89 | unsigned MD32_REG_T A,B,C,D,l; | ||
90 | #ifndef MD32_XARRAY | ||
91 | /* See comment in crypto/sha/sha_locl.h for details. */ | ||
92 | unsigned MD32_REG_T XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7, | ||
93 | XX8, XX9,XX10,XX11,XX12,XX13,XX14,XX15; | ||
94 | # define X(i) XX##i | ||
95 | #else | ||
96 | MD4_LONG XX[MD4_LBLOCK]; | ||
97 | # define X(i) XX[i] | ||
98 | #endif | ||
99 | |||
100 | A=c->A; | ||
101 | B=c->B; | ||
102 | C=c->C; | ||
103 | D=c->D; | ||
104 | |||
105 | for (;num--;) | ||
106 | { | ||
107 | HOST_c2l(data,l); X( 0)=l; | ||
108 | HOST_c2l(data,l); X( 1)=l; | ||
109 | /* Round 0 */ | ||
110 | R0(A,B,C,D,X( 0), 3,0); HOST_c2l(data,l); X( 2)=l; | ||
111 | R0(D,A,B,C,X( 1), 7,0); HOST_c2l(data,l); X( 3)=l; | ||
112 | R0(C,D,A,B,X( 2),11,0); HOST_c2l(data,l); X( 4)=l; | ||
113 | R0(B,C,D,A,X( 3),19,0); HOST_c2l(data,l); X( 5)=l; | ||
114 | R0(A,B,C,D,X( 4), 3,0); HOST_c2l(data,l); X( 6)=l; | ||
115 | R0(D,A,B,C,X( 5), 7,0); HOST_c2l(data,l); X( 7)=l; | ||
116 | R0(C,D,A,B,X( 6),11,0); HOST_c2l(data,l); X( 8)=l; | ||
117 | R0(B,C,D,A,X( 7),19,0); HOST_c2l(data,l); X( 9)=l; | ||
118 | R0(A,B,C,D,X( 8), 3,0); HOST_c2l(data,l); X(10)=l; | ||
119 | R0(D,A,B,C,X( 9), 7,0); HOST_c2l(data,l); X(11)=l; | ||
120 | R0(C,D,A,B,X(10),11,0); HOST_c2l(data,l); X(12)=l; | ||
121 | R0(B,C,D,A,X(11),19,0); HOST_c2l(data,l); X(13)=l; | ||
122 | R0(A,B,C,D,X(12), 3,0); HOST_c2l(data,l); X(14)=l; | ||
123 | R0(D,A,B,C,X(13), 7,0); HOST_c2l(data,l); X(15)=l; | ||
124 | R0(C,D,A,B,X(14),11,0); | ||
125 | R0(B,C,D,A,X(15),19,0); | ||
126 | /* Round 1 */ | ||
127 | R1(A,B,C,D,X( 0), 3,0x5A827999L); | ||
128 | R1(D,A,B,C,X( 4), 5,0x5A827999L); | ||
129 | R1(C,D,A,B,X( 8), 9,0x5A827999L); | ||
130 | R1(B,C,D,A,X(12),13,0x5A827999L); | ||
131 | R1(A,B,C,D,X( 1), 3,0x5A827999L); | ||
132 | R1(D,A,B,C,X( 5), 5,0x5A827999L); | ||
133 | R1(C,D,A,B,X( 9), 9,0x5A827999L); | ||
134 | R1(B,C,D,A,X(13),13,0x5A827999L); | ||
135 | R1(A,B,C,D,X( 2), 3,0x5A827999L); | ||
136 | R1(D,A,B,C,X( 6), 5,0x5A827999L); | ||
137 | R1(C,D,A,B,X(10), 9,0x5A827999L); | ||
138 | R1(B,C,D,A,X(14),13,0x5A827999L); | ||
139 | R1(A,B,C,D,X( 3), 3,0x5A827999L); | ||
140 | R1(D,A,B,C,X( 7), 5,0x5A827999L); | ||
141 | R1(C,D,A,B,X(11), 9,0x5A827999L); | ||
142 | R1(B,C,D,A,X(15),13,0x5A827999L); | ||
143 | /* Round 2 */ | ||
144 | R2(A,B,C,D,X( 0), 3,0x6ED9EBA1L); | ||
145 | R2(D,A,B,C,X( 8), 9,0x6ED9EBA1L); | ||
146 | R2(C,D,A,B,X( 4),11,0x6ED9EBA1L); | ||
147 | R2(B,C,D,A,X(12),15,0x6ED9EBA1L); | ||
148 | R2(A,B,C,D,X( 2), 3,0x6ED9EBA1L); | ||
149 | R2(D,A,B,C,X(10), 9,0x6ED9EBA1L); | ||
150 | R2(C,D,A,B,X( 6),11,0x6ED9EBA1L); | ||
151 | R2(B,C,D,A,X(14),15,0x6ED9EBA1L); | ||
152 | R2(A,B,C,D,X( 1), 3,0x6ED9EBA1L); | ||
153 | R2(D,A,B,C,X( 9), 9,0x6ED9EBA1L); | ||
154 | R2(C,D,A,B,X( 5),11,0x6ED9EBA1L); | ||
155 | R2(B,C,D,A,X(13),15,0x6ED9EBA1L); | ||
156 | R2(A,B,C,D,X( 3), 3,0x6ED9EBA1L); | ||
157 | R2(D,A,B,C,X(11), 9,0x6ED9EBA1L); | ||
158 | R2(C,D,A,B,X( 7),11,0x6ED9EBA1L); | ||
159 | R2(B,C,D,A,X(15),15,0x6ED9EBA1L); | ||
160 | |||
161 | A = c->A += A; | ||
162 | B = c->B += B; | ||
163 | C = c->C += C; | ||
164 | D = c->D += D; | ||
165 | } | ||
166 | } | ||
167 | #endif | ||
diff --git a/src/lib/libssl/src/crypto/md4/md4_locl.h b/src/lib/libssl/src/crypto/md4/md4_locl.h new file mode 100644 index 0000000000..ef574c040d --- /dev/null +++ b/src/lib/libssl/src/crypto/md4/md4_locl.h | |||
@@ -0,0 +1,108 @@ | |||
1 | /* $OpenBSD: md4_locl.h,v 1.9 2015/09/14 01:45:03 doug Exp $ */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdlib.h> | ||
60 | #include <string.h> | ||
61 | #include <openssl/opensslconf.h> | ||
62 | #include <openssl/md4.h> | ||
63 | |||
64 | void md4_block_data_order (MD4_CTX *c, const void *p,size_t num); | ||
65 | |||
66 | #define DATA_ORDER_IS_LITTLE_ENDIAN | ||
67 | |||
68 | #define HASH_LONG MD4_LONG | ||
69 | #define HASH_CTX MD4_CTX | ||
70 | #define HASH_CBLOCK MD4_CBLOCK | ||
71 | #define HASH_UPDATE MD4_Update | ||
72 | #define HASH_TRANSFORM MD4_Transform | ||
73 | #define HASH_FINAL MD4_Final | ||
74 | #define HASH_MAKE_STRING(c,s) do { \ | ||
75 | unsigned long ll; \ | ||
76 | ll=(c)->A; HOST_l2c(ll,(s)); \ | ||
77 | ll=(c)->B; HOST_l2c(ll,(s)); \ | ||
78 | ll=(c)->C; HOST_l2c(ll,(s)); \ | ||
79 | ll=(c)->D; HOST_l2c(ll,(s)); \ | ||
80 | } while (0) | ||
81 | #define HASH_BLOCK_DATA_ORDER md4_block_data_order | ||
82 | |||
83 | #include "md32_common.h" | ||
84 | |||
85 | /* | ||
86 | #define F(x,y,z) (((x) & (y)) | ((~(x)) & (z))) | ||
87 | #define G(x,y,z) (((x) & (y)) | ((x) & ((z))) | ((y) & ((z)))) | ||
88 | */ | ||
89 | |||
90 | /* As pointed out by Wei Dai <weidai@eskimo.com>, the above can be | ||
91 | * simplified to the code below. Wei attributes these optimizations | ||
92 | * to Peter Gutmann's SHS code, and he attributes it to Rich Schroeppel. | ||
93 | */ | ||
94 | #define F(b,c,d) ((((c) ^ (d)) & (b)) ^ (d)) | ||
95 | #define G(b,c,d) (((b) & (c)) | ((b) & (d)) | ((c) & (d))) | ||
96 | #define H(b,c,d) ((b) ^ (c) ^ (d)) | ||
97 | |||
98 | #define R0(a,b,c,d,k,s,t) { \ | ||
99 | a+=((k)+(t)+F((b),(c),(d))); \ | ||
100 | a=ROTATE(a,s); }; | ||
101 | |||
102 | #define R1(a,b,c,d,k,s,t) { \ | ||
103 | a+=((k)+(t)+G((b),(c),(d))); \ | ||
104 | a=ROTATE(a,s); };\ | ||
105 | |||
106 | #define R2(a,b,c,d,k,s,t) { \ | ||
107 | a+=((k)+(t)+H((b),(c),(d))); \ | ||
108 | a=ROTATE(a,s); }; | ||
diff --git a/src/lib/libssl/src/crypto/md4/md4_one.c b/src/lib/libssl/src/crypto/md4/md4_one.c new file mode 100644 index 0000000000..c1fd6f3e52 --- /dev/null +++ b/src/lib/libssl/src/crypto/md4/md4_one.c | |||
@@ -0,0 +1,77 @@ | |||
1 | /* $OpenBSD: md4_one.c,v 1.10 2015/09/14 01:45:03 doug Exp $ */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include <string.h> | ||
61 | #include <openssl/md4.h> | ||
62 | #include <openssl/crypto.h> | ||
63 | |||
64 | unsigned char *MD4(const unsigned char *d, size_t n, unsigned char *md) | ||
65 | { | ||
66 | MD4_CTX c; | ||
67 | static unsigned char m[MD4_DIGEST_LENGTH]; | ||
68 | |||
69 | if (md == NULL) md=m; | ||
70 | if (!MD4_Init(&c)) | ||
71 | return NULL; | ||
72 | MD4_Update(&c,d,n); | ||
73 | MD4_Final(md,&c); | ||
74 | explicit_bzero(&c,sizeof(c)); | ||
75 | return(md); | ||
76 | } | ||
77 | |||
diff --git a/src/lib/libssl/src/crypto/opensslfeatures.h b/src/lib/libssl/src/crypto/opensslfeatures.h index 3d1972f661..ba4dbba959 100644 --- a/src/lib/libssl/src/crypto/opensslfeatures.h +++ b/src/lib/libssl/src/crypto/opensslfeatures.h | |||
@@ -6,7 +6,6 @@ | |||
6 | # define OPENSSL_NO_JPAKE | 6 | # define OPENSSL_NO_JPAKE |
7 | # define OPENSSL_NO_KRB5 | 7 | # define OPENSSL_NO_KRB5 |
8 | # define OPENSSL_NO_MD2 | 8 | # define OPENSSL_NO_MD2 |
9 | # define OPENSSL_NO_MD4 | ||
10 | # define OPENSSL_NO_MDC2 | 9 | # define OPENSSL_NO_MDC2 |
11 | # define OPENSSL_NO_PSK | 10 | # define OPENSSL_NO_PSK |
12 | # define OPENSSL_NO_RC5 | 11 | # define OPENSSL_NO_RC5 |
diff --git a/src/lib/libssl/src/doc/apps/dgst.pod b/src/lib/libssl/src/doc/apps/dgst.pod index daaa87a50a..d8b2abc6fb 100644 --- a/src/lib/libssl/src/doc/apps/dgst.pod +++ b/src/lib/libssl/src/doc/apps/dgst.pod | |||
@@ -2,12 +2,12 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | dgst, md5, sha1, ripemd160 - message digests | 5 | dgst, md5, md4, md2, sha1, sha, ripemd160 - message digests |
6 | 6 | ||
7 | =head1 SYNOPSIS | 7 | =head1 SYNOPSIS |
8 | 8 | ||
9 | B<openssl> B<dgst> | 9 | B<openssl> B<dgst> |
10 | [B<-md5|-sha1|-ripemd160|-dss1>] | 10 | [B<-md5|-md4|-md2|-sha1|-sha|-ripemd160|-dss1>] |
11 | [B<-c>] | 11 | [B<-c>] |
12 | [B<-d>] | 12 | [B<-d>] |
13 | [B<-hex>] | 13 | [B<-hex>] |
@@ -22,7 +22,7 @@ B<openssl> B<dgst> | |||
22 | [B<-hmac key>] | 22 | [B<-hmac key>] |
23 | [B<file...>] | 23 | [B<file...>] |
24 | 24 | ||
25 | [B<md5|sha1|ripemd160>] | 25 | [B<md5|md4|md2|sha1|sha|ripemd160>] |
26 | [B<-c>] | 26 | [B<-c>] |
27 | [B<-d>] | 27 | [B<-d>] |
28 | [B<file...>] | 28 | [B<file...>] |
diff --git a/src/lib/libssl/src/doc/apps/openssl.pod b/src/lib/libssl/src/doc/apps/openssl.pod index a000a02331..718d679dbb 100644 --- a/src/lib/libssl/src/doc/apps/openssl.pod +++ b/src/lib/libssl/src/doc/apps/openssl.pod | |||
@@ -263,6 +263,10 @@ X.509 Certificate Data Management. | |||
263 | 263 | ||
264 | =over 10 | 264 | =over 10 |
265 | 265 | ||
266 | =item B<md2> | ||
267 | |||
268 | MD2 Digest | ||
269 | |||
266 | =item B<md5> | 270 | =item B<md5> |
267 | 271 | ||
268 | MD5 Digest | 272 | MD5 Digest |
@@ -271,6 +275,10 @@ MD5 Digest | |||
271 | 275 | ||
272 | RMD-160 Digest | 276 | RMD-160 Digest |
273 | 277 | ||
278 | =item B<sha> | ||
279 | |||
280 | SHA Digest | ||
281 | |||
274 | =item B<sha1> | 282 | =item B<sha1> |
275 | 283 | ||
276 | SHA-1 Digest | 284 | SHA-1 Digest |
diff --git a/src/lib/libssl/src/doc/apps/speed.pod b/src/lib/libssl/src/doc/apps/speed.pod index 61990f0dd5..c309d9a060 100644 --- a/src/lib/libssl/src/doc/apps/speed.pod +++ b/src/lib/libssl/src/doc/apps/speed.pod | |||
@@ -8,6 +8,7 @@ speed - test library performance | |||
8 | 8 | ||
9 | B<openssl speed> | 9 | B<openssl speed> |
10 | [B<-engine id>] | 10 | [B<-engine id>] |
11 | [B<md2>] | ||
11 | [B<md5>] | 12 | [B<md5>] |
12 | [B<hmac>] | 13 | [B<hmac>] |
13 | [B<sha1>] | 14 | [B<sha1>] |
diff --git a/src/lib/libssl/src/doc/apps/ts.pod b/src/lib/libssl/src/doc/apps/ts.pod index f495a14038..3075b6887a 100644 --- a/src/lib/libssl/src/doc/apps/ts.pod +++ b/src/lib/libssl/src/doc/apps/ts.pod | |||
@@ -12,7 +12,7 @@ B<-query> | |||
12 | [B<-config> configfile] | 12 | [B<-config> configfile] |
13 | [B<-data> file_to_hash] | 13 | [B<-data> file_to_hash] |
14 | [B<-digest> digest_bytes] | 14 | [B<-digest> digest_bytes] |
15 | [B<-md5>|B<-sha1>|B<-ripemd160>|B<...>] | 15 | [B<-md2>|B<-md4>|B<-md5>|B<-sha>|B<-sha1>|B<-ripemd160>|B<...>] |
16 | [B<-policy> object_id] | 16 | [B<-policy> object_id] |
17 | [B<-no_nonce>] | 17 | [B<-no_nonce>] |
18 | [B<-cert>] | 18 | [B<-cert>] |
@@ -124,7 +124,7 @@ per byte, the bytes optionally separated by colons (e.g. 1A:F6:01:... or | |||
124 | 1AF601...). The number of bytes must match the message digest algorithm | 124 | 1AF601...). The number of bytes must match the message digest algorithm |
125 | in use. (Optional) | 125 | in use. (Optional) |
126 | 126 | ||
127 | =item B<-md5>|B<-sha1>|B<-ripemd160>|B<...> | 127 | =item B<-md2>|B<-md4>|B<-md5>|B<-sha>|B<-sha1>|B<-ripemd160>|B<...> |
128 | 128 | ||
129 | The message digest to apply to the data file, it supports all the message | 129 | The message digest to apply to the data file, it supports all the message |
130 | digest algorithms that are supported by the openssl B<dgst> command. | 130 | digest algorithms that are supported by the openssl B<dgst> command. |
diff --git a/src/lib/libssl/src/doc/crypto/MD5.pod b/src/lib/libssl/src/doc/crypto/MD5.pod index 056f94bd9e..b0edd5416f 100644 --- a/src/lib/libssl/src/doc/crypto/MD5.pod +++ b/src/lib/libssl/src/doc/crypto/MD5.pod | |||
@@ -2,10 +2,33 @@ | |||
2 | 2 | ||
3 | =head1 NAME | 3 | =head1 NAME |
4 | 4 | ||
5 | MD5, MD5_Init, MD5_Update, MD5_Final - MD5 hash functions | 5 | MD2, MD4, MD5, MD2_Init, MD2_Update, MD2_Final, MD4_Init, MD4_Update, |
6 | MD4_Final, MD5_Init, MD5_Update, MD5_Final - MD2, MD4, and MD5 hash functions | ||
6 | 7 | ||
7 | =head1 SYNOPSIS | 8 | =head1 SYNOPSIS |
8 | 9 | ||
10 | #include <openssl/md2.h> | ||
11 | |||
12 | unsigned char *MD2(const unsigned char *d, unsigned long n, | ||
13 | unsigned char *md); | ||
14 | |||
15 | int MD2_Init(MD2_CTX *c); | ||
16 | int MD2_Update(MD2_CTX *c, const unsigned char *data, | ||
17 | unsigned long len); | ||
18 | int MD2_Final(unsigned char *md, MD2_CTX *c); | ||
19 | |||
20 | |||
21 | #include <openssl/md4.h> | ||
22 | |||
23 | unsigned char *MD4(const unsigned char *d, unsigned long n, | ||
24 | unsigned char *md); | ||
25 | |||
26 | int MD4_Init(MD4_CTX *c); | ||
27 | int MD4_Update(MD4_CTX *c, const void *data, | ||
28 | unsigned long len); | ||
29 | int MD4_Final(unsigned char *md, MD4_CTX *c); | ||
30 | |||
31 | |||
9 | #include <openssl/md5.h> | 32 | #include <openssl/md5.h> |
10 | 33 | ||
11 | unsigned char *MD5(const unsigned char *d, unsigned long n, | 34 | unsigned char *MD5(const unsigned char *d, unsigned long n, |
@@ -18,43 +41,61 @@ MD5, MD5_Init, MD5_Update, MD5_Final - MD5 hash functions | |||
18 | 41 | ||
19 | =head1 DESCRIPTION | 42 | =head1 DESCRIPTION |
20 | 43 | ||
21 | MD5 is a cryptographic hash function with a 128 bit output. | 44 | MD2, MD4, and MD5 are cryptographic hash functions with a 128 bit output. |
22 | 45 | ||
23 | MD5() computes the MD5 message digest of the B<n> bytes at B<d> and | 46 | MD2(), MD4(), and MD5() compute the MD2, MD4, and MD5 message digest |
24 | places it in B<md> (which must have space for MD5_DIGEST_LENGTH == 16 | 47 | of the B<n> bytes at B<d> and place it in B<md> (which must have space |
48 | for MD2_DIGEST_LENGTH == MD4_DIGEST_LENGTH == MD5_DIGEST_LENGTH == 16 | ||
25 | bytes of output). If B<md> is NULL, the digest is placed in a static | 49 | bytes of output). If B<md> is NULL, the digest is placed in a static |
26 | array. | 50 | array. |
27 | 51 | ||
28 | The following functions may be used if the message is not completely | 52 | The following functions may be used if the message is not completely |
29 | stored in memory: | 53 | stored in memory: |
30 | 54 | ||
55 | MD2_Init() initializes a B<MD2_CTX> structure. | ||
56 | |||
57 | MD2_Update() can be called repeatedly with chunks of the message to | ||
58 | be hashed (B<len> bytes at B<data>). | ||
59 | |||
60 | MD2_Final() places the message digest in B<md>, which must have space | ||
61 | for MD2_DIGEST_LENGTH == 16 bytes of output, and erases the B<MD2_CTX>. | ||
62 | |||
63 | MD4_Init(), MD4_Update(), MD4_Final(), MD5_Init(), MD5_Update(), and | ||
64 | MD5_Final() are analogous using an B<MD4_CTX> and B<MD5_CTX> structure. | ||
65 | |||
31 | Applications should use the higher level functions | 66 | Applications should use the higher level functions |
32 | L<EVP_DigestInit(3)|EVP_DigestInit(3)> | 67 | L<EVP_DigestInit(3)|EVP_DigestInit(3)> |
33 | etc. instead of calling the hash functions directly. | 68 | etc. instead of calling the hash functions directly. |
34 | 69 | ||
35 | =head1 NOTE | 70 | =head1 NOTE |
36 | 71 | ||
37 | MD5 is recommended only for compatibility with legacy applications. | 72 | MD2, MD4, and MD5 are recommended only for compatibility with existing |
38 | In new applications, SHA-2 should be preferred. | 73 | applications. In new applications, SHA-1 or RIPEMD-160 should be |
74 | preferred. | ||
39 | 75 | ||
40 | =head1 RETURN VALUES | 76 | =head1 RETURN VALUES |
41 | 77 | ||
42 | MD5() returns a pointer to the hash value. | 78 | MD2(), MD4(), and MD5() return pointers to the hash value. |
43 | 79 | ||
44 | MD5_Init(), MD5_Update(), and MD5_Final() return 1 for success, 0 | 80 | MD2_Init(), MD2_Update(), MD2_Final(), MD4_Init(), MD4_Update(), |
45 | otherwise. | 81 | MD4_Final(), MD5_Init(), MD5_Update(), and MD5_Final() return 1 for |
82 | success, 0 otherwise. | ||
46 | 83 | ||
47 | =head1 CONFORMING TO | 84 | =head1 CONFORMING TO |
48 | 85 | ||
49 | RFC 1321 | 86 | RFC 1319, RFC 1320, RFC 1321 |
50 | 87 | ||
51 | =head1 SEE ALSO | 88 | =head1 SEE ALSO |
52 | 89 | ||
53 | L<EVP_DigestInit(3)|EVP_DigestInit(3)> | 90 | L<sha(3)|sha(3)>, L<ripemd(3)|ripemd(3)>, L<EVP_DigestInit(3)|EVP_DigestInit(3)> |
54 | 91 | ||
55 | =head1 HISTORY | 92 | =head1 HISTORY |
56 | 93 | ||
57 | MD5(), MD5_Init(), MD5_Update() and MD5_Final() are available in all | 94 | MD2(), MD2_Init(), MD2_Update() MD2_Final(), MD5(), MD5_Init(), |
58 | versions of OpenSSL. | 95 | MD5_Update() and MD5_Final() are available in all versions of SSLeay |
96 | and OpenSSL. | ||
97 | |||
98 | MD4(), MD4_Init(), and MD4_Update() are available in OpenSSL 0.9.6 and | ||
99 | above. | ||
59 | 100 | ||
60 | =cut | 101 | =cut |
diff --git a/src/lib/libssl/src/doc/crypto/crypto.pod b/src/lib/libssl/src/doc/crypto/crypto.pod index 11087ccc1f..bbd6ce9ea9 100644 --- a/src/lib/libssl/src/doc/crypto/crypto.pod +++ b/src/lib/libssl/src/doc/crypto/crypto.pod | |||
@@ -28,7 +28,7 @@ hash functions and a cryptographic pseudo-random number generator. | |||
28 | =item SYMMETRIC CIPHERS | 28 | =item SYMMETRIC CIPHERS |
29 | 29 | ||
30 | L<blowfish(3)|blowfish(3)>, L<cast(3)|cast(3)>, L<des(3)|des(3)>, | 30 | L<blowfish(3)|blowfish(3)>, L<cast(3)|cast(3)>, L<des(3)|des(3)>, |
31 | L<idea(3)|idea(3)>, L<rc2(3)|rc2(3)>, L<rc4(3)|rc4(3)> | 31 | L<idea(3)|idea(3)>, L<rc2(3)|rc2(3)>, L<rc4(3)|rc4(3)>, L<rc5(3)|rc5(3)> |
32 | 32 | ||
33 | =item PUBLIC KEY CRYPTOGRAPHY AND KEY AGREEMENT | 33 | =item PUBLIC KEY CRYPTOGRAPHY AND KEY AGREEMENT |
34 | 34 | ||
@@ -40,7 +40,9 @@ L<x509(3)|x509(3)>, L<x509v3(3)|x509v3(3)> | |||
40 | 40 | ||
41 | =item AUTHENTICATION CODES, HASH FUNCTIONS | 41 | =item AUTHENTICATION CODES, HASH FUNCTIONS |
42 | 42 | ||
43 | L<hmac(3)|hmac(3)>, L<md5(3)|md5(3)>, L<ripemd(3)|ripemd(3)> | 43 | L<hmac(3)|hmac(3)>, L<md2(3)|md2(3)>, L<md4(3)|md4(3)>, |
44 | L<md5(3)|md5(3)>, L<ripemd(3)|ripemd(3)>, | ||
45 | L<sha(3)|sha(3)> | ||
44 | 46 | ||
45 | =item AUXILIARY FUNCTIONS | 47 | =item AUXILIARY FUNCTIONS |
46 | 48 | ||
diff --git a/src/lib/libssl/src/doc/standards.txt b/src/lib/libssl/src/doc/standards.txt index e9eacc5840..7bada8d35f 100644 --- a/src/lib/libssl/src/doc/standards.txt +++ b/src/lib/libssl/src/doc/standards.txt | |||
@@ -27,6 +27,12 @@ Implemented: | |||
27 | These are documents that describe things that are implemented (in | 27 | These are documents that describe things that are implemented (in |
28 | whole or at least great parts) in OpenSSL. | 28 | whole or at least great parts) in OpenSSL. |
29 | 29 | ||
30 | 1319 The MD2 Message-Digest Algorithm. B. Kaliski. April 1992. | ||
31 | (Format: TXT=25661 bytes) (Status: INFORMATIONAL) | ||
32 | |||
33 | 1320 The MD4 Message-Digest Algorithm. R. Rivest. April 1992. (Format: | ||
34 | TXT=32407 bytes) (Status: INFORMATIONAL) | ||
35 | |||
30 | 1321 The MD5 Message-Digest Algorithm. R. Rivest. April 1992. (Format: | 36 | 1321 The MD5 Message-Digest Algorithm. R. Rivest. April 1992. (Format: |
31 | TXT=35222 bytes) (Status: INFORMATIONAL) | 37 | TXT=35222 bytes) (Status: INFORMATIONAL) |
32 | 38 | ||