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 | |
parent | 516aee833d4c8a3fa73b13184ca096bf2ad7f1f2 (diff) | |
download | openbsd-ccf0b47cd77c8c167d186cc3f01dfc310ee5b29f.tar.gz openbsd-ccf0b47cd77c8c167d186cc3f01dfc310ee5b29f.tar.bz2 openbsd-ccf0b47cd77c8c167d186cc3f01dfc310ee5b29f.zip |
Temporarily revive MD4 for MS CHAP support.
35 files changed, 1505 insertions, 59 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 | ||
diff --git a/src/regress/lib/libcrypto/Makefile b/src/regress/lib/libcrypto/Makefile index d3d86ab6b2..3b84856435 100644 --- a/src/regress/lib/libcrypto/Makefile +++ b/src/regress/lib/libcrypto/Makefile | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: Makefile,v 1.20 2015/09/13 23:36:21 doug Exp $ | 1 | # $OpenBSD: Makefile,v 1.21 2015/09/14 01:45:03 doug Exp $ |
2 | 2 | ||
3 | SUBDIR= \ | 3 | SUBDIR= \ |
4 | aead \ | 4 | aead \ |
@@ -24,6 +24,7 @@ SUBDIR= \ | |||
24 | hmac \ | 24 | hmac \ |
25 | idea \ | 25 | idea \ |
26 | ige \ | 26 | ige \ |
27 | md4 \ | ||
27 | md5 \ | 28 | md5 \ |
28 | pbkdf2 \ | 29 | pbkdf2 \ |
29 | pkcs7 \ | 30 | pkcs7 \ |
diff --git a/src/regress/lib/libcrypto/md4/Makefile b/src/regress/lib/libcrypto/md4/Makefile new file mode 100644 index 0000000000..ddb4acf2d1 --- /dev/null +++ b/src/regress/lib/libcrypto/md4/Makefile | |||
@@ -0,0 +1,9 @@ | |||
1 | # $OpenBSD: Makefile,v 1.5 2015/09/14 01:45:03 doug Exp $ | ||
2 | |||
3 | PROG= md4test | ||
4 | LDADD= -lcrypto | ||
5 | DPADD= ${LIBCRYPTO} | ||
6 | WARNINGS= Yes | ||
7 | CFLAGS+= -DLIBRESSL_INTERNAL -Werror | ||
8 | |||
9 | .include <bsd.regress.mk> | ||
diff --git a/src/regress/lib/libcrypto/md4/md4test.c b/src/regress/lib/libcrypto/md4/md4test.c new file mode 100644 index 0000000000..60b2c0eedb --- /dev/null +++ b/src/regress/lib/libcrypto/md4/md4test.c | |||
@@ -0,0 +1,125 @@ | |||
1 | /* crypto/md4/md4test.c */ | ||
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 <stdlib.h> | ||
62 | |||
63 | #include <openssl/evp.h> | ||
64 | #include <openssl/md4.h> | ||
65 | |||
66 | static char *test[]={ | ||
67 | "", | ||
68 | "a", | ||
69 | "abc", | ||
70 | "message digest", | ||
71 | "abcdefghijklmnopqrstuvwxyz", | ||
72 | "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", | ||
73 | "12345678901234567890123456789012345678901234567890123456789012345678901234567890", | ||
74 | NULL, | ||
75 | }; | ||
76 | |||
77 | static char *ret[]={ | ||
78 | "31d6cfe0d16ae931b73c59d7e0c089c0", | ||
79 | "bde52cb31de33e46245e05fbdbd6fb24", | ||
80 | "a448017aaf21d8525fc10ae87aa6729d", | ||
81 | "d9130a8164549fe818874806e1c7014b", | ||
82 | "d79e1c308aa5bbcdeea8ed63df412da9", | ||
83 | "043f8582f241db351ce627e153e7f0e4", | ||
84 | "e33b4ddc9c38f2199c3e7b164fcc0536", | ||
85 | }; | ||
86 | |||
87 | static char *pt(unsigned char *md); | ||
88 | int main(int argc, char *argv[]) | ||
89 | { | ||
90 | int i,err=0; | ||
91 | char **P,**R; | ||
92 | char *p; | ||
93 | unsigned char md[MD4_DIGEST_LENGTH]; | ||
94 | |||
95 | P=test; | ||
96 | R=ret; | ||
97 | i=1; | ||
98 | while (*P != NULL) | ||
99 | { | ||
100 | EVP_Digest(&(P[0][0]),strlen((char *)*P),md,NULL,EVP_md4(), NULL); | ||
101 | p=pt(md); | ||
102 | if (strcmp(p,(char *)*R) != 0) | ||
103 | { | ||
104 | printf("error calculating MD4 on '%s'\n",*P); | ||
105 | printf("got %s instead of %s\n",p,*R); | ||
106 | err++; | ||
107 | } | ||
108 | else | ||
109 | printf("test %d ok\n",i); | ||
110 | i++; | ||
111 | R++; | ||
112 | P++; | ||
113 | } | ||
114 | exit(err); | ||
115 | } | ||
116 | |||
117 | static char *pt(unsigned char *md) | ||
118 | { | ||
119 | int i; | ||
120 | static char buf[80]; | ||
121 | |||
122 | for (i=0; i<MD4_DIGEST_LENGTH; i++) | ||
123 | snprintf(buf + i*2, sizeof(buf) - i*2, "%02x",md[i]); | ||
124 | return(buf); | ||
125 | } | ||
diff --git a/src/usr.bin/openssl/openssl.1 b/src/usr.bin/openssl/openssl.1 index de0a56735a..1ce8e84291 100644 --- a/src/usr.bin/openssl/openssl.1 +++ b/src/usr.bin/openssl/openssl.1 | |||
@@ -1,4 +1,4 @@ | |||
1 | .\" $OpenBSD: openssl.1,v 1.27 2015/09/13 23:36:21 doug Exp $ | 1 | .\" $OpenBSD: openssl.1,v 1.28 2015/09/14 01:45:03 doug Exp $ |
2 | .\" ==================================================================== | 2 | .\" ==================================================================== |
3 | .\" Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. | 3 | .\" Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. |
4 | .\" | 4 | .\" |
@@ -112,7 +112,7 @@ | |||
112 | .\" | 112 | .\" |
113 | .\" OPENSSL | 113 | .\" OPENSSL |
114 | .\" | 114 | .\" |
115 | .Dd $Mdocdate: September 13 2015 $ | 115 | .Dd $Mdocdate: September 14 2015 $ |
116 | .Dt OPENSSL 1 | 116 | .Dt OPENSSL 1 |
117 | .Os | 117 | .Os |
118 | .Sh NAME | 118 | .Sh NAME |
@@ -383,6 +383,8 @@ Streebog-256 digest. | |||
383 | Streebog-512 digest. | 383 | Streebog-512 digest. |
384 | .It Cm md_gost94 | 384 | .It Cm md_gost94 |
385 | GOST R 34.11-94 digest. | 385 | GOST R 34.11-94 digest. |
386 | .It Cm md4 | ||
387 | MD4 digest. | ||
386 | .It Cm md5 | 388 | .It Cm md5 |
387 | MD5 digest. | 389 | MD5 digest. |
388 | .It Cm ripemd160 | 390 | .It Cm ripemd160 |
@@ -1793,7 +1795,7 @@ install user certificates and CAs in MSIE using the Xenroll control. | |||
1793 | .Bk -words | 1795 | .Bk -words |
1794 | .Oo | 1796 | .Oo |
1795 | .Fl gost-mac | streebog256 | streebog512 | md_gost94 | | 1797 | .Fl gost-mac | streebog256 | streebog512 | md_gost94 | |
1796 | .Fl md5 | ripemd160 | sha1 | | 1798 | .Fl md4 | md5 | ripemd160 | sha | sha1 | |
1797 | .Fl sha224 | sha256 | sha384 | sha512 | whirlpool | 1799 | .Fl sha224 | sha256 | sha384 | sha512 | whirlpool |
1798 | .Oc | 1800 | .Oc |
1799 | .Op Fl binary | 1801 | .Op Fl binary |
@@ -1816,7 +1818,7 @@ install user certificates and CAs in MSIE using the Xenroll control. | |||
1816 | .Pp | 1818 | .Pp |
1817 | .Nm openssl | 1819 | .Nm openssl |
1818 | .Cm gost-mac | streebog256 | streebog512 | md_gost94 | | 1820 | .Cm gost-mac | streebog256 | streebog512 | md_gost94 | |
1819 | .Cm md5 | ripemd160 | sha | sha1 | | 1821 | .Cm md4 | md5 | ripemd160 | sha | sha1 | |
1820 | .Cm sha224 | sha256 | sha384 | sha512 | whirlpool | 1822 | .Cm sha224 | sha256 | sha384 | sha512 | whirlpool |
1821 | .Op Fl c | 1823 | .Op Fl c |
1822 | .Op Fl d | 1824 | .Op Fl d |
@@ -5083,7 +5085,7 @@ instead of standard output. | |||
5083 | .Op Fl key Ar keyfile | 5085 | .Op Fl key Ar keyfile |
5084 | .Op Fl keyform Ar DER | PEM | 5086 | .Op Fl keyform Ar DER | PEM |
5085 | .Op Fl keyout Ar file | 5087 | .Op Fl keyout Ar file |
5086 | .Op Fl md5 | sha1 | 5088 | .Op Fl md4 | md5 | sha1 |
5087 | .Op Fl modulus | 5089 | .Op Fl modulus |
5088 | .Op Fl nameopt Ar option | 5090 | .Op Fl nameopt Ar option |
5089 | .Op Fl new | 5091 | .Op Fl new |
@@ -7662,6 +7664,7 @@ command were first added in | |||
7662 | .Op Cm dsa2048 | 7664 | .Op Cm dsa2048 |
7663 | .Op Cm hmac | 7665 | .Op Cm hmac |
7664 | .Op Cm md2 | 7666 | .Op Cm md2 |
7667 | .Op Cm md4 | ||
7665 | .Op Cm md5 | 7668 | .Op Cm md5 |
7666 | .Op Cm rc2 | 7669 | .Op Cm rc2 |
7667 | .Op Cm rc2-cbc | 7670 | .Op Cm rc2-cbc |
@@ -7712,7 +7715,7 @@ benchmarks in parallel. | |||
7712 | .Nm "openssl ts" | 7715 | .Nm "openssl ts" |
7713 | .Bk -words | 7716 | .Bk -words |
7714 | .Fl query | 7717 | .Fl query |
7715 | .Op Fl md5 | ripemd160 | sha1 | 7718 | .Op Fl md4 | md5 | ripemd160 | sha | sha1 |
7716 | .Op Fl cert | 7719 | .Op Fl cert |
7717 | .Op Fl config Ar configfile | 7720 | .Op Fl config Ar configfile |
7718 | .Op Fl data Ar file_to_hash | 7721 | .Op Fl data Ar file_to_hash |
@@ -7833,7 +7836,7 @@ This option specifies a previously created time stamp request in DER | |||
7833 | format that will be printed into the output file. | 7836 | format that will be printed into the output file. |
7834 | Useful when you need to examine the content of a request in human-readable | 7837 | Useful when you need to examine the content of a request in human-readable |
7835 | format. | 7838 | format. |
7836 | .It Fl md5|ripemd160|sha1 | 7839 | .It Fl md4|md5|ripemd160|sha|sha1 |
7837 | The message digest to apply to the data file. | 7840 | The message digest to apply to the data file. |
7838 | It supports all the message digest algorithms that are supported by the | 7841 | It supports all the message digest algorithms that are supported by the |
7839 | .Nm dgst | 7842 | .Nm dgst |
diff --git a/src/usr.bin/openssl/openssl.c b/src/usr.bin/openssl/openssl.c index 1bda338356..604cfddcea 100644 --- a/src/usr.bin/openssl/openssl.c +++ b/src/usr.bin/openssl/openssl.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: openssl.c,v 1.11 2015/09/13 23:36:21 doug Exp $ */ | 1 | /* $OpenBSD: openssl.c,v 1.12 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 | * |
@@ -217,6 +217,9 @@ FUNCTION functions[] = { | |||
217 | { FUNC_TYPE_MD, "streebog256", dgst_main }, | 217 | { FUNC_TYPE_MD, "streebog256", dgst_main }, |
218 | { FUNC_TYPE_MD, "streebog512", dgst_main }, | 218 | { FUNC_TYPE_MD, "streebog512", dgst_main }, |
219 | #endif | 219 | #endif |
220 | #ifndef OPENSSL_NO_MD4 | ||
221 | { FUNC_TYPE_MD, "md4", dgst_main }, | ||
222 | #endif | ||
220 | #ifndef OPENSSL_NO_MD5 | 223 | #ifndef OPENSSL_NO_MD5 |
221 | { FUNC_TYPE_MD, "md5", dgst_main }, | 224 | { FUNC_TYPE_MD, "md5", dgst_main }, |
222 | #endif | 225 | #endif |
diff --git a/src/usr.bin/openssl/req.c b/src/usr.bin/openssl/req.c index f359e7392e..c7256ae59a 100644 --- a/src/usr.bin/openssl/req.c +++ b/src/usr.bin/openssl/req.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: req.c,v 1.8 2015/09/13 23:36:21 doug Exp $ */ | 1 | /* $OpenBSD: req.c,v 1.9 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 | * |
@@ -354,7 +354,7 @@ bad: | |||
354 | BIO_printf(bio_err, " -newkey rsa:bits generate a new RSA key of 'bits' in size\n"); | 354 | BIO_printf(bio_err, " -newkey rsa:bits generate a new RSA key of 'bits' in size\n"); |
355 | BIO_printf(bio_err, " -newkey dsa:file generate a new DSA key, parameters taken from CA in 'file'\n"); | 355 | BIO_printf(bio_err, " -newkey dsa:file generate a new DSA key, parameters taken from CA in 'file'\n"); |
356 | BIO_printf(bio_err, " -newkey ec:file generate a new EC key, parameters taken from CA in 'file'\n"); | 356 | BIO_printf(bio_err, " -newkey ec:file generate a new EC key, parameters taken from CA in 'file'\n"); |
357 | BIO_printf(bio_err, " -[digest] Digest to sign with (md5, sha1)\n"); | 357 | BIO_printf(bio_err, " -[digest] Digest to sign with (md5, sha1, md4)\n"); |
358 | BIO_printf(bio_err, " -config file request template file.\n"); | 358 | BIO_printf(bio_err, " -config file request template file.\n"); |
359 | BIO_printf(bio_err, " -subj arg set or modify request subject\n"); | 359 | BIO_printf(bio_err, " -subj arg set or modify request subject\n"); |
360 | BIO_printf(bio_err, " -multivalue-rdn enable support for multivalued RDNs\n"); | 360 | BIO_printf(bio_err, " -multivalue-rdn enable support for multivalued RDNs\n"); |
diff --git a/src/usr.bin/openssl/speed.c b/src/usr.bin/openssl/speed.c index d9fe3309b7..292fa28634 100644 --- a/src/usr.bin/openssl/speed.c +++ b/src/usr.bin/openssl/speed.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: speed.c,v 1.14 2015/09/13 23:36:21 doug Exp $ */ | 1 | /* $OpenBSD: speed.c,v 1.15 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 | * |
@@ -124,6 +124,9 @@ | |||
124 | #ifndef OPENSSL_NO_IDEA | 124 | #ifndef OPENSSL_NO_IDEA |
125 | #include <openssl/idea.h> | 125 | #include <openssl/idea.h> |
126 | #endif | 126 | #endif |
127 | #ifndef OPENSSL_NO_MD4 | ||
128 | #include <openssl/md4.h> | ||
129 | #endif | ||
127 | #ifndef OPENSSL_NO_MD5 | 130 | #ifndef OPENSSL_NO_MD5 |
128 | #include <openssl/md5.h> | 131 | #include <openssl/md5.h> |
129 | #endif | 132 | #endif |
@@ -170,8 +173,7 @@ static int do_multi(int multi); | |||
170 | #define MAX_ECDH_SIZE 256 | 173 | #define MAX_ECDH_SIZE 256 |
171 | 174 | ||
172 | static const char *names[ALGOR_NUM] = { | 175 | static const char *names[ALGOR_NUM] = { |
173 | "md2", NULL /* was mdc2 */, NULL /* was md4 */, "md5", "hmac(md5)", | 176 | "md2", NULL /* was mdc2 */, "md4", "md5", "hmac(md5)", "sha1", "rmd160", |
174 | "sha1", "rmd160", | ||
175 | "rc4", "des cbc", "des ede3", "idea cbc", "seed cbc", | 177 | "rc4", "des cbc", "des ede3", "idea cbc", "seed cbc", |
176 | "rc2 cbc", "rc5-32/12 cbc", "blowfish cbc", "cast cbc", | 178 | "rc2 cbc", "rc5-32/12 cbc", "blowfish cbc", "cast cbc", |
177 | "aes-128 cbc", "aes-192 cbc", "aes-256 cbc", | 179 | "aes-128 cbc", "aes-192 cbc", "aes-256 cbc", |
@@ -232,6 +234,9 @@ speed_main(int argc, char **argv) | |||
232 | long rsa_count; | 234 | long rsa_count; |
233 | unsigned rsa_num; | 235 | unsigned rsa_num; |
234 | unsigned char md[EVP_MAX_MD_SIZE]; | 236 | unsigned char md[EVP_MAX_MD_SIZE]; |
237 | #ifndef OPENSSL_NO_MD4 | ||
238 | unsigned char md4[MD4_DIGEST_LENGTH]; | ||
239 | #endif | ||
235 | #ifndef OPENSSL_NO_MD5 | 240 | #ifndef OPENSSL_NO_MD5 |
236 | unsigned char md5[MD5_DIGEST_LENGTH]; | 241 | unsigned char md5[MD5_DIGEST_LENGTH]; |
237 | unsigned char hmac[MD5_DIGEST_LENGTH]; | 242 | unsigned char hmac[MD5_DIGEST_LENGTH]; |
@@ -313,6 +318,7 @@ speed_main(int argc, char **argv) | |||
313 | CAMELLIA_KEY camellia_ks1, camellia_ks2, camellia_ks3; | 318 | CAMELLIA_KEY camellia_ks1, camellia_ks2, camellia_ks3; |
314 | #endif | 319 | #endif |
315 | #define D_MD2 0 | 320 | #define D_MD2 0 |
321 | #define D_MD4 2 | ||
316 | #define D_MD5 3 | 322 | #define D_MD5 3 |
317 | #define D_HMAC 4 | 323 | #define D_HMAC 4 |
318 | #define D_SHA1 5 | 324 | #define D_SHA1 5 |
@@ -551,6 +557,11 @@ speed_main(int argc, char **argv) | |||
551 | j--; /* Otherwise, -mr gets confused with an | 557 | j--; /* Otherwise, -mr gets confused with an |
552 | * algorithm. */ | 558 | * algorithm. */ |
553 | } else | 559 | } else |
560 | #ifndef OPENSSL_NO_MD4 | ||
561 | if (strcmp(*argv, "md4") == 0) | ||
562 | doit[D_MD4] = 1; | ||
563 | else | ||
564 | #endif | ||
554 | #ifndef OPENSSL_NO_MD5 | 565 | #ifndef OPENSSL_NO_MD5 |
555 | if (strcmp(*argv, "md5") == 0) | 566 | if (strcmp(*argv, "md5") == 0) |
556 | doit[D_MD5] = 1; | 567 | doit[D_MD5] = 1; |
@@ -801,6 +812,9 @@ speed_main(int argc, char **argv) | |||
801 | BIO_printf(bio_err, "Error: bad option or value\n"); | 812 | BIO_printf(bio_err, "Error: bad option or value\n"); |
802 | BIO_printf(bio_err, "\n"); | 813 | BIO_printf(bio_err, "\n"); |
803 | BIO_printf(bio_err, "Available values:\n"); | 814 | BIO_printf(bio_err, "Available values:\n"); |
815 | #ifndef OPENSSL_NO_MD4 | ||
816 | BIO_printf(bio_err, "md4 "); | ||
817 | #endif | ||
804 | #ifndef OPENSSL_NO_MD5 | 818 | #ifndef OPENSSL_NO_MD5 |
805 | BIO_printf(bio_err, "md5 "); | 819 | BIO_printf(bio_err, "md5 "); |
806 | #ifndef OPENSSL_NO_HMAC | 820 | #ifndef OPENSSL_NO_HMAC |
@@ -823,7 +837,7 @@ speed_main(int argc, char **argv) | |||
823 | BIO_printf(bio_err, "rmd160"); | 837 | BIO_printf(bio_err, "rmd160"); |
824 | #endif | 838 | #endif |
825 | #if !defined(OPENSSL_NO_MD2) || \ | 839 | #if !defined(OPENSSL_NO_MD2) || \ |
826 | !defined(OPENSSL_NO_MD5) || \ | 840 | !defined(OPENSSL_NO_MD4) || !defined(OPENSSL_NO_MD5) || \ |
827 | !defined(OPENSSL_NO_SHA1) || !defined(OPENSSL_NO_RIPEMD160) || \ | 841 | !defined(OPENSSL_NO_SHA1) || !defined(OPENSSL_NO_RIPEMD160) || \ |
828 | !defined(OPENSSL_NO_WHIRLPOOL) | 842 | !defined(OPENSSL_NO_WHIRLPOOL) |
829 | BIO_printf(bio_err, "\n"); | 843 | BIO_printf(bio_err, "\n"); |
@@ -982,6 +996,19 @@ speed_main(int argc, char **argv) | |||
982 | #define COUNT(d) (count) | 996 | #define COUNT(d) (count) |
983 | signal(SIGALRM, sig_done); | 997 | signal(SIGALRM, sig_done); |
984 | 998 | ||
999 | #ifndef OPENSSL_NO_MD4 | ||
1000 | if (doit[D_MD4]) { | ||
1001 | for (j = 0; j < SIZE_NUM; j++) { | ||
1002 | print_message(names[D_MD4], c[D_MD4][j], lengths[j]); | ||
1003 | Time_F(START); | ||
1004 | for (count = 0, run = 1; COND(c[D_MD4][j]); count++) | ||
1005 | EVP_Digest(&(buf[0]), (unsigned long) lengths[j], &(md4[0]), NULL, EVP_md4(), NULL); | ||
1006 | d = Time_F(STOP); | ||
1007 | print_result(D_MD4, j, count, d); | ||
1008 | } | ||
1009 | } | ||
1010 | #endif | ||
1011 | |||
985 | #ifndef OPENSSL_NO_MD5 | 1012 | #ifndef OPENSSL_NO_MD5 |
986 | if (doit[D_MD5]) { | 1013 | if (doit[D_MD5]) { |
987 | for (j = 0; j < SIZE_NUM; j++) { | 1014 | for (j = 0; j < SIZE_NUM; j++) { |
diff --git a/src/usr.bin/openssl/ts.c b/src/usr.bin/openssl/ts.c index d2bf2a6cd6..e193636868 100644 --- a/src/usr.bin/openssl/ts.c +++ b/src/usr.bin/openssl/ts.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ts.c,v 1.8 2015/09/13 23:36:21 doug Exp $ */ | 1 | /* $OpenBSD: ts.c,v 1.9 2015/09/14 01:45:03 doug Exp $ */ |
2 | /* Written by Zoltan Glozik (zglozik@stones.com) for the OpenSSL | 2 | /* Written by Zoltan Glozik (zglozik@stones.com) for the OpenSSL |
3 | * project 2002. | 3 | * project 2002. |
4 | */ | 4 | */ |
@@ -298,7 +298,7 @@ usage: | |||
298 | BIO_printf(bio_err, "usage:\n" | 298 | BIO_printf(bio_err, "usage:\n" |
299 | "ts -query [-config configfile] " | 299 | "ts -query [-config configfile] " |
300 | "[-data file_to_hash] [-digest digest_bytes]" | 300 | "[-data file_to_hash] [-digest digest_bytes]" |
301 | "[-md5|-sha1|-ripemd160] " | 301 | "[-md2|-md4|-md5|-sha|-sha1|-ripemd160] " |
302 | "[-policy object_id] [-no_nonce] [-cert] " | 302 | "[-policy object_id] [-no_nonce] [-cert] " |
303 | "[-in request.tsq] [-out request.tsq] [-text]\n"); | 303 | "[-in request.tsq] [-out request.tsq] [-text]\n"); |
304 | BIO_printf(bio_err, "or\n" | 304 | BIO_printf(bio_err, "or\n" |