summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/md5/md5_dgst.c
diff options
context:
space:
mode:
authorjsing <>2023-07-08 06:41:45 +0000
committerjsing <>2023-07-08 06:41:45 +0000
commitd256e90ea2a23bd1815fe59aea9ad0bd83b787d6 (patch)
tree298a8c3d3e26e32af43181677711c5474a94c3e0 /src/lib/libcrypto/md5/md5_dgst.c
parentf7eed39f47d6159302020860d39a54a3bfcf5d2e (diff)
downloadopenbsd-d256e90ea2a23bd1815fe59aea9ad0bd83b787d6.tar.gz
openbsd-d256e90ea2a23bd1815fe59aea9ad0bd83b787d6.tar.bz2
openbsd-d256e90ea2a23bd1815fe59aea9ad0bd83b787d6.zip
Inline md5_local.h in md5_dgst.c.
md5_local.h is not really a local header, just another layer of indirection that cannot be included by anything other than md5_dgst.c. As such, include it directly instead. No change in generated assembly.
Diffstat (limited to 'src/lib/libcrypto/md5/md5_dgst.c')
-rw-r--r--src/lib/libcrypto/md5/md5_dgst.c78
1 files changed, 76 insertions, 2 deletions
diff --git a/src/lib/libcrypto/md5/md5_dgst.c b/src/lib/libcrypto/md5/md5_dgst.c
index 5acdcd200c..5c08493d53 100644
--- a/src/lib/libcrypto/md5/md5_dgst.c
+++ b/src/lib/libcrypto/md5/md5_dgst.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: md5_dgst.c,v 1.15 2022/11/26 16:08:53 tb Exp $ */ 1/* $OpenBSD: md5_dgst.c,v 1.16 2023/07/08 06:41:45 jsing 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 *
@@ -57,10 +57,84 @@
57 */ 57 */
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "md5_local.h"
61#include <openssl/opensslv.h> 60#include <openssl/opensslv.h>
62#include <openssl/crypto.h> 61#include <openssl/crypto.h>
63 62
63#include <stdlib.h>
64#include <string.h>
65
66#include <openssl/opensslconf.h>
67
68#include <openssl/md5.h>
69
70#ifdef MD5_ASM
71# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || defined(__INTEL__) || \
72 defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || defined(_M_X64)
73# define md5_block_data_order md5_block_asm_data_order
74# elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
75# define md5_block_data_order md5_block_asm_data_order
76# endif
77#endif
78
79__BEGIN_HIDDEN_DECLS
80
81void md5_block_data_order (MD5_CTX *c, const void *p,size_t num);
82
83__END_HIDDEN_DECLS
84
85#define DATA_ORDER_IS_LITTLE_ENDIAN
86
87#define HASH_LONG MD5_LONG
88#define HASH_CTX MD5_CTX
89#define HASH_CBLOCK MD5_CBLOCK
90#define HASH_UPDATE MD5_Update
91#define HASH_TRANSFORM MD5_Transform
92#define HASH_FINAL MD5_Final
93#define HASH_MAKE_STRING(c,s) do { \
94 unsigned long ll; \
95 ll=(c)->A; HOST_l2c(ll,(s)); \
96 ll=(c)->B; HOST_l2c(ll,(s)); \
97 ll=(c)->C; HOST_l2c(ll,(s)); \
98 ll=(c)->D; HOST_l2c(ll,(s)); \
99 } while (0)
100#define HASH_BLOCK_DATA_ORDER md5_block_data_order
101
102#include "md32_common.h"
103
104/*
105#define F(x,y,z) (((x) & (y)) | ((~(x)) & (z)))
106#define G(x,y,z) (((x) & (z)) | ((y) & (~(z))))
107*/
108
109/* As pointed out by Wei Dai <weidai@eskimo.com>, the above can be
110 * simplified to the code below. Wei attributes these optimizations
111 * to Peter Gutmann's SHS code, and he attributes it to Rich Schroeppel.
112 */
113#define F(b,c,d) ((((c) ^ (d)) & (b)) ^ (d))
114#define G(b,c,d) ((((b) ^ (c)) & (d)) ^ (c))
115#define H(b,c,d) ((b) ^ (c) ^ (d))
116#define I(b,c,d) (((~(d)) | (b)) ^ (c))
117
118#define R0(a,b,c,d,k,s,t) { \
119 a+=((k)+(t)+F((b),(c),(d))); \
120 a=ROTATE(a,s); \
121 a+=b; };\
122
123#define R1(a,b,c,d,k,s,t) { \
124 a+=((k)+(t)+G((b),(c),(d))); \
125 a=ROTATE(a,s); \
126 a+=b; };
127
128#define R2(a,b,c,d,k,s,t) { \
129 a+=((k)+(t)+H((b),(c),(d))); \
130 a=ROTATE(a,s); \
131 a+=b; };
132
133#define R3(a,b,c,d,k,s,t) { \
134 a+=((k)+(t)+I((b),(c),(d))); \
135 a=ROTATE(a,s); \
136 a+=b; };
137
64/* Implemented from RFC1321 The MD5 Message-Digest Algorithm 138/* Implemented from RFC1321 The MD5 Message-Digest Algorithm
65 */ 139 */
66 140