diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/libcrypto/modes/cbc128.c | 13 | ||||
-rw-r--r-- | src/lib/libcrypto/modes/ccm128.c | 8 | ||||
-rw-r--r-- | src/lib/libcrypto/modes/cfb128.c | 4 | ||||
-rw-r--r-- | src/lib/libcrypto/modes/ctr128.c | 2 | ||||
-rw-r--r-- | src/lib/libcrypto/modes/gcm128.c | 6 | ||||
-rw-r--r-- | src/lib/libcrypto/modes/modes_lcl.h | 12 | ||||
-rw-r--r-- | src/lib/libcrypto/modes/ofb128.c | 2 | ||||
-rw-r--r-- | src/lib/libcrypto/modes/xts128.c | 9 | ||||
-rw-r--r-- | src/lib/libcrypto/sha/sha512.c | 5 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/modes/cbc128.c | 13 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/modes/ccm128.c | 8 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/modes/cfb128.c | 4 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/modes/ctr128.c | 2 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/modes/gcm128.c | 6 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/modes/modes_lcl.h | 12 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/modes/ofb128.c | 2 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/modes/xts128.c | 9 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/sha/sha512.c | 5 |
18 files changed, 52 insertions, 70 deletions
diff --git a/src/lib/libcrypto/modes/cbc128.c b/src/lib/libcrypto/modes/cbc128.c index 0e54f75470..e4920a93ac 100644 --- a/src/lib/libcrypto/modes/cbc128.c +++ b/src/lib/libcrypto/modes/cbc128.c | |||
@@ -59,8 +59,11 @@ | |||
59 | #endif | 59 | #endif |
60 | #include <assert.h> | 60 | #include <assert.h> |
61 | 61 | ||
62 | #ifndef STRICT_ALIGNMENT | 62 | #undef STRICT_ALIGNMENT |
63 | # define STRICT_ALIGNMENT 0 | 63 | #ifdef __STRICT_ALIGNMENT |
64 | #define STRICT_ALIGNMENT 1 | ||
65 | #else | ||
66 | #define STRICT_ALIGNMENT 0 | ||
64 | #endif | 67 | #endif |
65 | 68 | ||
66 | void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out, | 69 | void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out, |
@@ -136,8 +139,7 @@ void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out, | |||
136 | in += 16; | 139 | in += 16; |
137 | out += 16; | 140 | out += 16; |
138 | } | 141 | } |
139 | } | 142 | } else if (16%sizeof(size_t) == 0) { /* always true */ |
140 | else if (16%sizeof(size_t) == 0) { /* always true */ | ||
141 | while (len>=16) { | 143 | while (len>=16) { |
142 | size_t *out_t=(size_t *)out, *iv_t=(size_t *)iv; | 144 | size_t *out_t=(size_t *)out, *iv_t=(size_t *)iv; |
143 | 145 | ||
@@ -166,8 +168,7 @@ void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out, | |||
166 | in += 16; | 168 | in += 16; |
167 | out += 16; | 169 | out += 16; |
168 | } | 170 | } |
169 | } | 171 | } else if (16%sizeof(size_t) == 0) { /* always true */ |
170 | else if (16%sizeof(size_t) == 0) { /* always true */ | ||
171 | while (len>=16) { | 172 | while (len>=16) { |
172 | size_t c, *out_t=(size_t *)out, *ivec_t=(size_t *)ivec; | 173 | size_t c, *out_t=(size_t *)out, *ivec_t=(size_t *)ivec; |
173 | const size_t *in_t=(const size_t *)in; | 174 | const size_t *in_t=(const size_t *)in; |
diff --git a/src/lib/libcrypto/modes/ccm128.c b/src/lib/libcrypto/modes/ccm128.c index 3ce11d0d98..13bc7adf31 100644 --- a/src/lib/libcrypto/modes/ccm128.c +++ b/src/lib/libcrypto/modes/ccm128.c | |||
@@ -197,7 +197,7 @@ int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx, | |||
197 | if (ctx->blocks > (U64(1)<<61)) return -2; /* too much data */ | 197 | if (ctx->blocks > (U64(1)<<61)) return -2; /* too much data */ |
198 | 198 | ||
199 | while (len>=16) { | 199 | while (len>=16) { |
200 | #if defined(STRICT_ALIGNMENT) | 200 | #ifdef __STRICT_ALIGNMENT |
201 | union { u64 u[2]; u8 c[16]; } temp; | 201 | union { u64 u[2]; u8 c[16]; } temp; |
202 | 202 | ||
203 | memcpy (temp.c,inp,16); | 203 | memcpy (temp.c,inp,16); |
@@ -210,7 +210,7 @@ int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx, | |||
210 | (*block)(ctx->cmac.c,ctx->cmac.c,key); | 210 | (*block)(ctx->cmac.c,ctx->cmac.c,key); |
211 | (*block)(ctx->nonce.c,scratch.c,key); | 211 | (*block)(ctx->nonce.c,scratch.c,key); |
212 | ctr64_inc(ctx->nonce.c); | 212 | ctr64_inc(ctx->nonce.c); |
213 | #if defined(STRICT_ALIGNMENT) | 213 | #ifdef __STRICT_ALIGNMENT |
214 | temp.u[0] ^= scratch.u[0]; | 214 | temp.u[0] ^= scratch.u[0]; |
215 | temp.u[1] ^= scratch.u[1]; | 215 | temp.u[1] ^= scratch.u[1]; |
216 | memcpy(out,temp.c,16); | 216 | memcpy(out,temp.c,16); |
@@ -268,12 +268,12 @@ int CRYPTO_ccm128_decrypt(CCM128_CONTEXT *ctx, | |||
268 | if (n!=len) return -1; | 268 | if (n!=len) return -1; |
269 | 269 | ||
270 | while (len>=16) { | 270 | while (len>=16) { |
271 | #if defined(STRICT_ALIGNMENT) | 271 | #ifdef __STRICT_ALIGNMENT |
272 | union { u64 u[2]; u8 c[16]; } temp; | 272 | union { u64 u[2]; u8 c[16]; } temp; |
273 | #endif | 273 | #endif |
274 | (*block)(ctx->nonce.c,scratch.c,key); | 274 | (*block)(ctx->nonce.c,scratch.c,key); |
275 | ctr64_inc(ctx->nonce.c); | 275 | ctr64_inc(ctx->nonce.c); |
276 | #if defined(STRICT_ALIGNMENT) | 276 | #ifdef __STRICT_ALIGNMENT |
277 | memcpy (temp.c,inp,16); | 277 | memcpy (temp.c,inp,16); |
278 | ctx->cmac.u[0] ^= (scratch.u[0] ^= temp.u[0]); | 278 | ctx->cmac.u[0] ^= (scratch.u[0] ^= temp.u[0]); |
279 | ctx->cmac.u[1] ^= (scratch.u[1] ^= temp.u[1]); | 279 | ctx->cmac.u[1] ^= (scratch.u[1] ^= temp.u[1]); |
diff --git a/src/lib/libcrypto/modes/cfb128.c b/src/lib/libcrypto/modes/cfb128.c index 4e6f5d35e1..731cb2864a 100644 --- a/src/lib/libcrypto/modes/cfb128.c +++ b/src/lib/libcrypto/modes/cfb128.c | |||
@@ -83,7 +83,7 @@ void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out, | |||
83 | --len; | 83 | --len; |
84 | n = (n+1) % 16; | 84 | n = (n+1) % 16; |
85 | } | 85 | } |
86 | #if defined(STRICT_ALIGNMENT) | 86 | #ifdef __STRICT_ALIGNMENT |
87 | if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) | 87 | if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) |
88 | break; | 88 | break; |
89 | #endif | 89 | #endif |
@@ -128,7 +128,7 @@ void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out, | |||
128 | --len; | 128 | --len; |
129 | n = (n+1) % 16; | 129 | n = (n+1) % 16; |
130 | } | 130 | } |
131 | #if defined(STRICT_ALIGNMENT) | 131 | #ifdef __STRICT_ALIGNMENT |
132 | if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) | 132 | if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) |
133 | break; | 133 | break; |
134 | #endif | 134 | #endif |
diff --git a/src/lib/libcrypto/modes/ctr128.c b/src/lib/libcrypto/modes/ctr128.c index 96af854f8a..ab45e0bd7a 100644 --- a/src/lib/libcrypto/modes/ctr128.c +++ b/src/lib/libcrypto/modes/ctr128.c | |||
@@ -133,7 +133,7 @@ void CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out, | |||
133 | n = (n+1) % 16; | 133 | n = (n+1) % 16; |
134 | } | 134 | } |
135 | 135 | ||
136 | #if defined(STRICT_ALIGNMENT) | 136 | #ifdef __STRICT_ALIGNMENT |
137 | if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) | 137 | if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) |
138 | break; | 138 | break; |
139 | #endif | 139 | #endif |
diff --git a/src/lib/libcrypto/modes/gcm128.c b/src/lib/libcrypto/modes/gcm128.c index 92b7f4f3c8..f3bcb7dd6e 100644 --- a/src/lib/libcrypto/modes/gcm128.c +++ b/src/lib/libcrypto/modes/gcm128.c | |||
@@ -60,7 +60,7 @@ | |||
60 | #endif | 60 | #endif |
61 | #include <assert.h> | 61 | #include <assert.h> |
62 | 62 | ||
63 | #if defined(BSWAP4) && defined(STRICT_ALIGNMENT) | 63 | #if defined(BSWAP4) && defined(__STRICT_ALIGNMENT) |
64 | /* redefine, because alignment is ensured */ | 64 | /* redefine, because alignment is ensured */ |
65 | #undef GETU32 | 65 | #undef GETU32 |
66 | #define GETU32(p) BSWAP4(*(const u32 *)(p)) | 66 | #define GETU32(p) BSWAP4(*(const u32 *)(p)) |
@@ -935,7 +935,7 @@ int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx, | |||
935 | return 0; | 935 | return 0; |
936 | } | 936 | } |
937 | } | 937 | } |
938 | #if defined(STRICT_ALIGNMENT) | 938 | #ifdef __STRICT_ALIGNMENT |
939 | if (((size_t)in|(size_t)out)%sizeof(size_t) != 0) | 939 | if (((size_t)in|(size_t)out)%sizeof(size_t) != 0) |
940 | break; | 940 | break; |
941 | #endif | 941 | #endif |
@@ -1113,7 +1113,7 @@ int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx, | |||
1113 | return 0; | 1113 | return 0; |
1114 | } | 1114 | } |
1115 | } | 1115 | } |
1116 | #if defined(STRICT_ALIGNMENT) | 1116 | #ifdef __STRICT_ALIGNMENT |
1117 | if (((size_t)in|(size_t)out)%sizeof(size_t) != 0) | 1117 | if (((size_t)in|(size_t)out)%sizeof(size_t) != 0) |
1118 | break; | 1118 | break; |
1119 | #endif | 1119 | #endif |
diff --git a/src/lib/libcrypto/modes/modes_lcl.h b/src/lib/libcrypto/modes/modes_lcl.h index 68c0e355ad..a53333df3d 100644 --- a/src/lib/libcrypto/modes/modes_lcl.h +++ b/src/lib/libcrypto/modes/modes_lcl.h | |||
@@ -22,14 +22,6 @@ typedef unsigned long long u64; | |||
22 | typedef unsigned int u32; | 22 | typedef unsigned int u32; |
23 | typedef unsigned char u8; | 23 | typedef unsigned char u8; |
24 | 24 | ||
25 | #define STRICT_ALIGNMENT 1 | ||
26 | #if defined(__i386) || defined(__i386__) || \ | ||
27 | defined(__x86_64) || defined(__x86_64__) || \ | ||
28 | defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64) || \ | ||
29 | defined(__s390__) || defined(__s390x__) | ||
30 | # undef STRICT_ALIGNMENT | ||
31 | #endif | ||
32 | |||
33 | #if !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM) | 25 | #if !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM) |
34 | #if defined(__GNUC__) && __GNUC__>=2 | 26 | #if defined(__GNUC__) && __GNUC__>=2 |
35 | # if defined(__x86_64) || defined(__x86_64__) | 27 | # if defined(__x86_64) || defined(__x86_64__) |
@@ -47,7 +39,7 @@ typedef unsigned char u8; | |||
47 | # define BSWAP4(x) ({ u32 ret=(x); \ | 39 | # define BSWAP4(x) ({ u32 ret=(x); \ |
48 | asm ("bswapl %0" \ | 40 | asm ("bswapl %0" \ |
49 | : "+r"(ret)); ret; }) | 41 | : "+r"(ret)); ret; }) |
50 | # elif (defined(__arm__) || defined(__arm)) && !defined(STRICT_ALIGNMENT) | 42 | # elif (defined(__arm__) || defined(__arm)) && !defined(__STRICT_ALIGNMENT) |
51 | # define BSWAP8(x) ({ u32 lo=(u64)(x)>>32,hi=(x); \ | 43 | # define BSWAP8(x) ({ u32 lo=(u64)(x)>>32,hi=(x); \ |
52 | asm ("rev %0,%0; rev %1,%1" \ | 44 | asm ("rev %0,%0; rev %1,%1" \ |
53 | : "+r"(hi),"+r"(lo)); \ | 45 | : "+r"(hi),"+r"(lo)); \ |
@@ -60,7 +52,7 @@ typedef unsigned char u8; | |||
60 | #endif | 52 | #endif |
61 | #endif | 53 | #endif |
62 | 54 | ||
63 | #if defined(BSWAP4) && !defined(STRICT_ALIGNMENT) | 55 | #if defined(BSWAP4) && !defined(__STRICT_ALIGNMENT) |
64 | #define GETU32(p) BSWAP4(*(const u32 *)(p)) | 56 | #define GETU32(p) BSWAP4(*(const u32 *)(p)) |
65 | #define PUTU32(p,v) *(u32 *)(p) = BSWAP4(v) | 57 | #define PUTU32(p,v) *(u32 *)(p) = BSWAP4(v) |
66 | #else | 58 | #else |
diff --git a/src/lib/libcrypto/modes/ofb128.c b/src/lib/libcrypto/modes/ofb128.c index 01c01702c4..147c80c549 100644 --- a/src/lib/libcrypto/modes/ofb128.c +++ b/src/lib/libcrypto/modes/ofb128.c | |||
@@ -82,7 +82,7 @@ void CRYPTO_ofb128_encrypt(const unsigned char *in, unsigned char *out, | |||
82 | --len; | 82 | --len; |
83 | n = (n+1) % 16; | 83 | n = (n+1) % 16; |
84 | } | 84 | } |
85 | #if defined(STRICT_ALIGNMENT) | 85 | #ifdef __STRICT_ALIGNMENT |
86 | if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) | 86 | if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) |
87 | break; | 87 | break; |
88 | #endif | 88 | #endif |
diff --git a/src/lib/libcrypto/modes/xts128.c b/src/lib/libcrypto/modes/xts128.c index de23de457d..9dcd16885d 100644 --- a/src/lib/libcrypto/modes/xts128.c +++ b/src/lib/libcrypto/modes/xts128.c | |||
@@ -47,6 +47,7 @@ | |||
47 | * ==================================================================== | 47 | * ==================================================================== |
48 | */ | 48 | */ |
49 | 49 | ||
50 | #include <machine/endian.h> | ||
50 | #include <openssl/crypto.h> | 51 | #include <openssl/crypto.h> |
51 | #include "modes_lcl.h" | 52 | #include "modes_lcl.h" |
52 | #include <string.h> | 53 | #include <string.h> |
@@ -74,7 +75,7 @@ int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, const unsigned char iv[16], | |||
74 | if (!enc && (len%16)) len-=16; | 75 | if (!enc && (len%16)) len-=16; |
75 | 76 | ||
76 | while (len>=16) { | 77 | while (len>=16) { |
77 | #if defined(STRICT_ALIGNMENT) | 78 | #ifdef __STRICT_ALIGNMENT |
78 | memcpy(scratch.c,inp,16); | 79 | memcpy(scratch.c,inp,16); |
79 | scratch.u[0] ^= tweak.u[0]; | 80 | scratch.u[0] ^= tweak.u[0]; |
80 | scratch.u[1] ^= tweak.u[1]; | 81 | scratch.u[1] ^= tweak.u[1]; |
@@ -83,7 +84,7 @@ int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, const unsigned char iv[16], | |||
83 | scratch.u[1] = ((u64*)inp)[1]^tweak.u[1]; | 84 | scratch.u[1] = ((u64*)inp)[1]^tweak.u[1]; |
84 | #endif | 85 | #endif |
85 | (*ctx->block1)(scratch.c,scratch.c,ctx->key1); | 86 | (*ctx->block1)(scratch.c,scratch.c,ctx->key1); |
86 | #if defined(STRICT_ALIGNMENT) | 87 | #ifdef __STRICT_ALIGNMENT |
87 | scratch.u[0] ^= tweak.u[0]; | 88 | scratch.u[0] ^= tweak.u[0]; |
88 | scratch.u[1] ^= tweak.u[1]; | 89 | scratch.u[1] ^= tweak.u[1]; |
89 | memcpy(out,scratch.c,16); | 90 | memcpy(out,scratch.c,16); |
@@ -152,7 +153,7 @@ int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, const unsigned char iv[16], | |||
152 | } | 153 | } |
153 | tweak1.c[0] ^= (u8)(0x87&(0-c)); | 154 | tweak1.c[0] ^= (u8)(0x87&(0-c)); |
154 | } | 155 | } |
155 | #if defined(STRICT_ALIGNMENT) | 156 | #ifdef __STRICT_ALIGNMENT |
156 | memcpy(scratch.c,inp,16); | 157 | memcpy(scratch.c,inp,16); |
157 | scratch.u[0] ^= tweak1.u[0]; | 158 | scratch.u[0] ^= tweak1.u[0]; |
158 | scratch.u[1] ^= tweak1.u[1]; | 159 | scratch.u[1] ^= tweak1.u[1]; |
@@ -172,7 +173,7 @@ int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, const unsigned char iv[16], | |||
172 | scratch.u[0] ^= tweak.u[0]; | 173 | scratch.u[0] ^= tweak.u[0]; |
173 | scratch.u[1] ^= tweak.u[1]; | 174 | scratch.u[1] ^= tweak.u[1]; |
174 | (*ctx->block1)(scratch.c,scratch.c,ctx->key1); | 175 | (*ctx->block1)(scratch.c,scratch.c,ctx->key1); |
175 | #if defined(STRICT_ALIGNMENT) | 176 | #ifdef __STRICT_ALIGNMENT |
176 | scratch.u[0] ^= tweak.u[0]; | 177 | scratch.u[0] ^= tweak.u[0]; |
177 | scratch.u[1] ^= tweak.u[1]; | 178 | scratch.u[1] ^= tweak.u[1]; |
178 | memcpy (out,scratch.c,16); | 179 | memcpy (out,scratch.c,16); |
diff --git a/src/lib/libcrypto/sha/sha512.c b/src/lib/libcrypto/sha/sha512.c index d8fa933cde..e05718d0a8 100644 --- a/src/lib/libcrypto/sha/sha512.c +++ b/src/lib/libcrypto/sha/sha512.c | |||
@@ -53,10 +53,7 @@ | |||
53 | 53 | ||
54 | const char SHA512_version[]="SHA-512" OPENSSL_VERSION_PTEXT; | 54 | const char SHA512_version[]="SHA-512" OPENSSL_VERSION_PTEXT; |
55 | 55 | ||
56 | #if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \ | 56 | #if !defined(__STRICT_ALIGNMENT) || defined(SHA512_ASM) |
57 | defined(__x86_64) || defined(_M_AMD64) || defined(_M_X64) || \ | ||
58 | defined(__s390__) || defined(__s390x__) || \ | ||
59 | defined(SHA512_ASM) | ||
60 | #define SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA | 57 | #define SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA |
61 | #endif | 58 | #endif |
62 | 59 | ||
diff --git a/src/lib/libssl/src/crypto/modes/cbc128.c b/src/lib/libssl/src/crypto/modes/cbc128.c index 0e54f75470..e4920a93ac 100644 --- a/src/lib/libssl/src/crypto/modes/cbc128.c +++ b/src/lib/libssl/src/crypto/modes/cbc128.c | |||
@@ -59,8 +59,11 @@ | |||
59 | #endif | 59 | #endif |
60 | #include <assert.h> | 60 | #include <assert.h> |
61 | 61 | ||
62 | #ifndef STRICT_ALIGNMENT | 62 | #undef STRICT_ALIGNMENT |
63 | # define STRICT_ALIGNMENT 0 | 63 | #ifdef __STRICT_ALIGNMENT |
64 | #define STRICT_ALIGNMENT 1 | ||
65 | #else | ||
66 | #define STRICT_ALIGNMENT 0 | ||
64 | #endif | 67 | #endif |
65 | 68 | ||
66 | void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out, | 69 | void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out, |
@@ -136,8 +139,7 @@ void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out, | |||
136 | in += 16; | 139 | in += 16; |
137 | out += 16; | 140 | out += 16; |
138 | } | 141 | } |
139 | } | 142 | } else if (16%sizeof(size_t) == 0) { /* always true */ |
140 | else if (16%sizeof(size_t) == 0) { /* always true */ | ||
141 | while (len>=16) { | 143 | while (len>=16) { |
142 | size_t *out_t=(size_t *)out, *iv_t=(size_t *)iv; | 144 | size_t *out_t=(size_t *)out, *iv_t=(size_t *)iv; |
143 | 145 | ||
@@ -166,8 +168,7 @@ void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out, | |||
166 | in += 16; | 168 | in += 16; |
167 | out += 16; | 169 | out += 16; |
168 | } | 170 | } |
169 | } | 171 | } else if (16%sizeof(size_t) == 0) { /* always true */ |
170 | else if (16%sizeof(size_t) == 0) { /* always true */ | ||
171 | while (len>=16) { | 172 | while (len>=16) { |
172 | size_t c, *out_t=(size_t *)out, *ivec_t=(size_t *)ivec; | 173 | size_t c, *out_t=(size_t *)out, *ivec_t=(size_t *)ivec; |
173 | const size_t *in_t=(const size_t *)in; | 174 | const size_t *in_t=(const size_t *)in; |
diff --git a/src/lib/libssl/src/crypto/modes/ccm128.c b/src/lib/libssl/src/crypto/modes/ccm128.c index 3ce11d0d98..13bc7adf31 100644 --- a/src/lib/libssl/src/crypto/modes/ccm128.c +++ b/src/lib/libssl/src/crypto/modes/ccm128.c | |||
@@ -197,7 +197,7 @@ int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx, | |||
197 | if (ctx->blocks > (U64(1)<<61)) return -2; /* too much data */ | 197 | if (ctx->blocks > (U64(1)<<61)) return -2; /* too much data */ |
198 | 198 | ||
199 | while (len>=16) { | 199 | while (len>=16) { |
200 | #if defined(STRICT_ALIGNMENT) | 200 | #ifdef __STRICT_ALIGNMENT |
201 | union { u64 u[2]; u8 c[16]; } temp; | 201 | union { u64 u[2]; u8 c[16]; } temp; |
202 | 202 | ||
203 | memcpy (temp.c,inp,16); | 203 | memcpy (temp.c,inp,16); |
@@ -210,7 +210,7 @@ int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx, | |||
210 | (*block)(ctx->cmac.c,ctx->cmac.c,key); | 210 | (*block)(ctx->cmac.c,ctx->cmac.c,key); |
211 | (*block)(ctx->nonce.c,scratch.c,key); | 211 | (*block)(ctx->nonce.c,scratch.c,key); |
212 | ctr64_inc(ctx->nonce.c); | 212 | ctr64_inc(ctx->nonce.c); |
213 | #if defined(STRICT_ALIGNMENT) | 213 | #ifdef __STRICT_ALIGNMENT |
214 | temp.u[0] ^= scratch.u[0]; | 214 | temp.u[0] ^= scratch.u[0]; |
215 | temp.u[1] ^= scratch.u[1]; | 215 | temp.u[1] ^= scratch.u[1]; |
216 | memcpy(out,temp.c,16); | 216 | memcpy(out,temp.c,16); |
@@ -268,12 +268,12 @@ int CRYPTO_ccm128_decrypt(CCM128_CONTEXT *ctx, | |||
268 | if (n!=len) return -1; | 268 | if (n!=len) return -1; |
269 | 269 | ||
270 | while (len>=16) { | 270 | while (len>=16) { |
271 | #if defined(STRICT_ALIGNMENT) | 271 | #ifdef __STRICT_ALIGNMENT |
272 | union { u64 u[2]; u8 c[16]; } temp; | 272 | union { u64 u[2]; u8 c[16]; } temp; |
273 | #endif | 273 | #endif |
274 | (*block)(ctx->nonce.c,scratch.c,key); | 274 | (*block)(ctx->nonce.c,scratch.c,key); |
275 | ctr64_inc(ctx->nonce.c); | 275 | ctr64_inc(ctx->nonce.c); |
276 | #if defined(STRICT_ALIGNMENT) | 276 | #ifdef __STRICT_ALIGNMENT |
277 | memcpy (temp.c,inp,16); | 277 | memcpy (temp.c,inp,16); |
278 | ctx->cmac.u[0] ^= (scratch.u[0] ^= temp.u[0]); | 278 | ctx->cmac.u[0] ^= (scratch.u[0] ^= temp.u[0]); |
279 | ctx->cmac.u[1] ^= (scratch.u[1] ^= temp.u[1]); | 279 | ctx->cmac.u[1] ^= (scratch.u[1] ^= temp.u[1]); |
diff --git a/src/lib/libssl/src/crypto/modes/cfb128.c b/src/lib/libssl/src/crypto/modes/cfb128.c index 4e6f5d35e1..731cb2864a 100644 --- a/src/lib/libssl/src/crypto/modes/cfb128.c +++ b/src/lib/libssl/src/crypto/modes/cfb128.c | |||
@@ -83,7 +83,7 @@ void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out, | |||
83 | --len; | 83 | --len; |
84 | n = (n+1) % 16; | 84 | n = (n+1) % 16; |
85 | } | 85 | } |
86 | #if defined(STRICT_ALIGNMENT) | 86 | #ifdef __STRICT_ALIGNMENT |
87 | if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) | 87 | if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) |
88 | break; | 88 | break; |
89 | #endif | 89 | #endif |
@@ -128,7 +128,7 @@ void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out, | |||
128 | --len; | 128 | --len; |
129 | n = (n+1) % 16; | 129 | n = (n+1) % 16; |
130 | } | 130 | } |
131 | #if defined(STRICT_ALIGNMENT) | 131 | #ifdef __STRICT_ALIGNMENT |
132 | if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) | 132 | if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) |
133 | break; | 133 | break; |
134 | #endif | 134 | #endif |
diff --git a/src/lib/libssl/src/crypto/modes/ctr128.c b/src/lib/libssl/src/crypto/modes/ctr128.c index 96af854f8a..ab45e0bd7a 100644 --- a/src/lib/libssl/src/crypto/modes/ctr128.c +++ b/src/lib/libssl/src/crypto/modes/ctr128.c | |||
@@ -133,7 +133,7 @@ void CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out, | |||
133 | n = (n+1) % 16; | 133 | n = (n+1) % 16; |
134 | } | 134 | } |
135 | 135 | ||
136 | #if defined(STRICT_ALIGNMENT) | 136 | #ifdef __STRICT_ALIGNMENT |
137 | if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) | 137 | if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) |
138 | break; | 138 | break; |
139 | #endif | 139 | #endif |
diff --git a/src/lib/libssl/src/crypto/modes/gcm128.c b/src/lib/libssl/src/crypto/modes/gcm128.c index 92b7f4f3c8..f3bcb7dd6e 100644 --- a/src/lib/libssl/src/crypto/modes/gcm128.c +++ b/src/lib/libssl/src/crypto/modes/gcm128.c | |||
@@ -60,7 +60,7 @@ | |||
60 | #endif | 60 | #endif |
61 | #include <assert.h> | 61 | #include <assert.h> |
62 | 62 | ||
63 | #if defined(BSWAP4) && defined(STRICT_ALIGNMENT) | 63 | #if defined(BSWAP4) && defined(__STRICT_ALIGNMENT) |
64 | /* redefine, because alignment is ensured */ | 64 | /* redefine, because alignment is ensured */ |
65 | #undef GETU32 | 65 | #undef GETU32 |
66 | #define GETU32(p) BSWAP4(*(const u32 *)(p)) | 66 | #define GETU32(p) BSWAP4(*(const u32 *)(p)) |
@@ -935,7 +935,7 @@ int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx, | |||
935 | return 0; | 935 | return 0; |
936 | } | 936 | } |
937 | } | 937 | } |
938 | #if defined(STRICT_ALIGNMENT) | 938 | #ifdef __STRICT_ALIGNMENT |
939 | if (((size_t)in|(size_t)out)%sizeof(size_t) != 0) | 939 | if (((size_t)in|(size_t)out)%sizeof(size_t) != 0) |
940 | break; | 940 | break; |
941 | #endif | 941 | #endif |
@@ -1113,7 +1113,7 @@ int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx, | |||
1113 | return 0; | 1113 | return 0; |
1114 | } | 1114 | } |
1115 | } | 1115 | } |
1116 | #if defined(STRICT_ALIGNMENT) | 1116 | #ifdef __STRICT_ALIGNMENT |
1117 | if (((size_t)in|(size_t)out)%sizeof(size_t) != 0) | 1117 | if (((size_t)in|(size_t)out)%sizeof(size_t) != 0) |
1118 | break; | 1118 | break; |
1119 | #endif | 1119 | #endif |
diff --git a/src/lib/libssl/src/crypto/modes/modes_lcl.h b/src/lib/libssl/src/crypto/modes/modes_lcl.h index 68c0e355ad..a53333df3d 100644 --- a/src/lib/libssl/src/crypto/modes/modes_lcl.h +++ b/src/lib/libssl/src/crypto/modes/modes_lcl.h | |||
@@ -22,14 +22,6 @@ typedef unsigned long long u64; | |||
22 | typedef unsigned int u32; | 22 | typedef unsigned int u32; |
23 | typedef unsigned char u8; | 23 | typedef unsigned char u8; |
24 | 24 | ||
25 | #define STRICT_ALIGNMENT 1 | ||
26 | #if defined(__i386) || defined(__i386__) || \ | ||
27 | defined(__x86_64) || defined(__x86_64__) || \ | ||
28 | defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64) || \ | ||
29 | defined(__s390__) || defined(__s390x__) | ||
30 | # undef STRICT_ALIGNMENT | ||
31 | #endif | ||
32 | |||
33 | #if !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM) | 25 | #if !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM) |
34 | #if defined(__GNUC__) && __GNUC__>=2 | 26 | #if defined(__GNUC__) && __GNUC__>=2 |
35 | # if defined(__x86_64) || defined(__x86_64__) | 27 | # if defined(__x86_64) || defined(__x86_64__) |
@@ -47,7 +39,7 @@ typedef unsigned char u8; | |||
47 | # define BSWAP4(x) ({ u32 ret=(x); \ | 39 | # define BSWAP4(x) ({ u32 ret=(x); \ |
48 | asm ("bswapl %0" \ | 40 | asm ("bswapl %0" \ |
49 | : "+r"(ret)); ret; }) | 41 | : "+r"(ret)); ret; }) |
50 | # elif (defined(__arm__) || defined(__arm)) && !defined(STRICT_ALIGNMENT) | 42 | # elif (defined(__arm__) || defined(__arm)) && !defined(__STRICT_ALIGNMENT) |
51 | # define BSWAP8(x) ({ u32 lo=(u64)(x)>>32,hi=(x); \ | 43 | # define BSWAP8(x) ({ u32 lo=(u64)(x)>>32,hi=(x); \ |
52 | asm ("rev %0,%0; rev %1,%1" \ | 44 | asm ("rev %0,%0; rev %1,%1" \ |
53 | : "+r"(hi),"+r"(lo)); \ | 45 | : "+r"(hi),"+r"(lo)); \ |
@@ -60,7 +52,7 @@ typedef unsigned char u8; | |||
60 | #endif | 52 | #endif |
61 | #endif | 53 | #endif |
62 | 54 | ||
63 | #if defined(BSWAP4) && !defined(STRICT_ALIGNMENT) | 55 | #if defined(BSWAP4) && !defined(__STRICT_ALIGNMENT) |
64 | #define GETU32(p) BSWAP4(*(const u32 *)(p)) | 56 | #define GETU32(p) BSWAP4(*(const u32 *)(p)) |
65 | #define PUTU32(p,v) *(u32 *)(p) = BSWAP4(v) | 57 | #define PUTU32(p,v) *(u32 *)(p) = BSWAP4(v) |
66 | #else | 58 | #else |
diff --git a/src/lib/libssl/src/crypto/modes/ofb128.c b/src/lib/libssl/src/crypto/modes/ofb128.c index 01c01702c4..147c80c549 100644 --- a/src/lib/libssl/src/crypto/modes/ofb128.c +++ b/src/lib/libssl/src/crypto/modes/ofb128.c | |||
@@ -82,7 +82,7 @@ void CRYPTO_ofb128_encrypt(const unsigned char *in, unsigned char *out, | |||
82 | --len; | 82 | --len; |
83 | n = (n+1) % 16; | 83 | n = (n+1) % 16; |
84 | } | 84 | } |
85 | #if defined(STRICT_ALIGNMENT) | 85 | #ifdef __STRICT_ALIGNMENT |
86 | if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) | 86 | if (((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0) |
87 | break; | 87 | break; |
88 | #endif | 88 | #endif |
diff --git a/src/lib/libssl/src/crypto/modes/xts128.c b/src/lib/libssl/src/crypto/modes/xts128.c index de23de457d..9dcd16885d 100644 --- a/src/lib/libssl/src/crypto/modes/xts128.c +++ b/src/lib/libssl/src/crypto/modes/xts128.c | |||
@@ -47,6 +47,7 @@ | |||
47 | * ==================================================================== | 47 | * ==================================================================== |
48 | */ | 48 | */ |
49 | 49 | ||
50 | #include <machine/endian.h> | ||
50 | #include <openssl/crypto.h> | 51 | #include <openssl/crypto.h> |
51 | #include "modes_lcl.h" | 52 | #include "modes_lcl.h" |
52 | #include <string.h> | 53 | #include <string.h> |
@@ -74,7 +75,7 @@ int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, const unsigned char iv[16], | |||
74 | if (!enc && (len%16)) len-=16; | 75 | if (!enc && (len%16)) len-=16; |
75 | 76 | ||
76 | while (len>=16) { | 77 | while (len>=16) { |
77 | #if defined(STRICT_ALIGNMENT) | 78 | #ifdef __STRICT_ALIGNMENT |
78 | memcpy(scratch.c,inp,16); | 79 | memcpy(scratch.c,inp,16); |
79 | scratch.u[0] ^= tweak.u[0]; | 80 | scratch.u[0] ^= tweak.u[0]; |
80 | scratch.u[1] ^= tweak.u[1]; | 81 | scratch.u[1] ^= tweak.u[1]; |
@@ -83,7 +84,7 @@ int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, const unsigned char iv[16], | |||
83 | scratch.u[1] = ((u64*)inp)[1]^tweak.u[1]; | 84 | scratch.u[1] = ((u64*)inp)[1]^tweak.u[1]; |
84 | #endif | 85 | #endif |
85 | (*ctx->block1)(scratch.c,scratch.c,ctx->key1); | 86 | (*ctx->block1)(scratch.c,scratch.c,ctx->key1); |
86 | #if defined(STRICT_ALIGNMENT) | 87 | #ifdef __STRICT_ALIGNMENT |
87 | scratch.u[0] ^= tweak.u[0]; | 88 | scratch.u[0] ^= tweak.u[0]; |
88 | scratch.u[1] ^= tweak.u[1]; | 89 | scratch.u[1] ^= tweak.u[1]; |
89 | memcpy(out,scratch.c,16); | 90 | memcpy(out,scratch.c,16); |
@@ -152,7 +153,7 @@ int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, const unsigned char iv[16], | |||
152 | } | 153 | } |
153 | tweak1.c[0] ^= (u8)(0x87&(0-c)); | 154 | tweak1.c[0] ^= (u8)(0x87&(0-c)); |
154 | } | 155 | } |
155 | #if defined(STRICT_ALIGNMENT) | 156 | #ifdef __STRICT_ALIGNMENT |
156 | memcpy(scratch.c,inp,16); | 157 | memcpy(scratch.c,inp,16); |
157 | scratch.u[0] ^= tweak1.u[0]; | 158 | scratch.u[0] ^= tweak1.u[0]; |
158 | scratch.u[1] ^= tweak1.u[1]; | 159 | scratch.u[1] ^= tweak1.u[1]; |
@@ -172,7 +173,7 @@ int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, const unsigned char iv[16], | |||
172 | scratch.u[0] ^= tweak.u[0]; | 173 | scratch.u[0] ^= tweak.u[0]; |
173 | scratch.u[1] ^= tweak.u[1]; | 174 | scratch.u[1] ^= tweak.u[1]; |
174 | (*ctx->block1)(scratch.c,scratch.c,ctx->key1); | 175 | (*ctx->block1)(scratch.c,scratch.c,ctx->key1); |
175 | #if defined(STRICT_ALIGNMENT) | 176 | #ifdef __STRICT_ALIGNMENT |
176 | scratch.u[0] ^= tweak.u[0]; | 177 | scratch.u[0] ^= tweak.u[0]; |
177 | scratch.u[1] ^= tweak.u[1]; | 178 | scratch.u[1] ^= tweak.u[1]; |
178 | memcpy (out,scratch.c,16); | 179 | memcpy (out,scratch.c,16); |
diff --git a/src/lib/libssl/src/crypto/sha/sha512.c b/src/lib/libssl/src/crypto/sha/sha512.c index d8fa933cde..e05718d0a8 100644 --- a/src/lib/libssl/src/crypto/sha/sha512.c +++ b/src/lib/libssl/src/crypto/sha/sha512.c | |||
@@ -53,10 +53,7 @@ | |||
53 | 53 | ||
54 | const char SHA512_version[]="SHA-512" OPENSSL_VERSION_PTEXT; | 54 | const char SHA512_version[]="SHA-512" OPENSSL_VERSION_PTEXT; |
55 | 55 | ||
56 | #if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \ | 56 | #if !defined(__STRICT_ALIGNMENT) || defined(SHA512_ASM) |
57 | defined(__x86_64) || defined(_M_AMD64) || defined(_M_X64) || \ | ||
58 | defined(__s390__) || defined(__s390x__) || \ | ||
59 | defined(SHA512_ASM) | ||
60 | #define SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA | 57 | #define SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA |
61 | #endif | 58 | #endif |
62 | 59 | ||