diff options
Diffstat (limited to 'src/lib/libcrypto/modes/cts128.c')
| -rw-r--r-- | src/lib/libcrypto/modes/cts128.c | 28 |
1 files changed, 8 insertions, 20 deletions
diff --git a/src/lib/libcrypto/modes/cts128.c b/src/lib/libcrypto/modes/cts128.c index c0e1f3696c..2d583de6f6 100644 --- a/src/lib/libcrypto/modes/cts128.c +++ b/src/lib/libcrypto/modes/cts128.c | |||
| @@ -108,12 +108,8 @@ size_t CRYPTO_cts128_encrypt(const unsigned char *in, unsigned char *out, | |||
| 108 | (*cbc)(in,out-16,residue,key,ivec,1); | 108 | (*cbc)(in,out-16,residue,key,ivec,1); |
| 109 | memcpy(out,tmp.c,residue); | 109 | memcpy(out,tmp.c,residue); |
| 110 | #else | 110 | #else |
| 111 | { | 111 | memset(tmp.c,0,sizeof(tmp)); |
| 112 | size_t n; | ||
| 113 | for (n=0; n<16; n+=sizeof(size_t)) | ||
| 114 | *(size_t *)(tmp.c+n) = 0; | ||
| 115 | memcpy(tmp.c,in,residue); | 112 | memcpy(tmp.c,in,residue); |
| 116 | } | ||
| 117 | memcpy(out,out-16,residue); | 113 | memcpy(out,out-16,residue); |
| 118 | (*cbc)(tmp.c,out-16,16,key,ivec,1); | 114 | (*cbc)(tmp.c,out-16,16,key,ivec,1); |
| 119 | #endif | 115 | #endif |
| @@ -144,12 +140,8 @@ size_t CRYPTO_nistcts128_encrypt(const unsigned char *in, unsigned char *out, | |||
| 144 | #if defined(CBC_HANDLES_TRUNCATED_IO) | 140 | #if defined(CBC_HANDLES_TRUNCATED_IO) |
| 145 | (*cbc)(in,out-16+residue,residue,key,ivec,1); | 141 | (*cbc)(in,out-16+residue,residue,key,ivec,1); |
| 146 | #else | 142 | #else |
| 147 | { | 143 | memset(tmp.c,0,sizeof(tmp)); |
| 148 | size_t n; | ||
| 149 | for (n=0; n<16; n+=sizeof(size_t)) | ||
| 150 | *(size_t *)(tmp.c+n) = 0; | ||
| 151 | memcpy(tmp.c,in,residue); | 144 | memcpy(tmp.c,in,residue); |
| 152 | } | ||
| 153 | (*cbc)(tmp.c,out-16+residue,16,key,ivec,1); | 145 | (*cbc)(tmp.c,out-16+residue,16,key,ivec,1); |
| 154 | #endif | 146 | #endif |
| 155 | return len+residue; | 147 | return len+residue; |
| @@ -177,8 +169,7 @@ size_t CRYPTO_cts128_decrypt_block(const unsigned char *in, unsigned char *out, | |||
| 177 | 169 | ||
| 178 | (*block)(in,tmp.c+16,key); | 170 | (*block)(in,tmp.c+16,key); |
| 179 | 171 | ||
| 180 | for (n=0; n<16; n+=sizeof(size_t)) | 172 | memcpy(tmp.c,tmp.c+16,16); |
| 181 | *(size_t *)(tmp.c+n) = *(size_t *)(tmp.c+16+n); | ||
| 182 | memcpy(tmp.c,in+16,residue); | 173 | memcpy(tmp.c,in+16,residue); |
| 183 | (*block)(tmp.c,tmp.c,key); | 174 | (*block)(tmp.c,tmp.c,key); |
| 184 | 175 | ||
| @@ -220,8 +211,7 @@ size_t CRYPTO_nistcts128_decrypt_block(const unsigned char *in, unsigned char *o | |||
| 220 | 211 | ||
| 221 | (*block)(in+residue,tmp.c+16,key); | 212 | (*block)(in+residue,tmp.c+16,key); |
| 222 | 213 | ||
| 223 | for (n=0; n<16; n+=sizeof(size_t)) | 214 | memcpy(tmp.c,tmp.c+16,16); |
| 224 | *(size_t *)(tmp.c+n) = *(size_t *)(tmp.c+16+n); | ||
| 225 | memcpy(tmp.c,in,residue); | 215 | memcpy(tmp.c,in,residue); |
| 226 | (*block)(tmp.c,tmp.c,key); | 216 | (*block)(tmp.c,tmp.c,key); |
| 227 | 217 | ||
| @@ -240,7 +230,7 @@ size_t CRYPTO_nistcts128_decrypt_block(const unsigned char *in, unsigned char *o | |||
| 240 | size_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out, | 230 | size_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out, |
| 241 | size_t len, const void *key, | 231 | size_t len, const void *key, |
| 242 | unsigned char ivec[16], cbc128_f cbc) | 232 | unsigned char ivec[16], cbc128_f cbc) |
| 243 | { size_t residue, n; | 233 | { size_t residue; |
| 244 | union { size_t align; unsigned char c[32]; } tmp; | 234 | union { size_t align; unsigned char c[32]; } tmp; |
| 245 | 235 | ||
| 246 | assert (in && out && key && ivec); | 236 | assert (in && out && key && ivec); |
| @@ -257,8 +247,7 @@ size_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out, | |||
| 257 | out += len; | 247 | out += len; |
| 258 | } | 248 | } |
| 259 | 249 | ||
| 260 | for (n=16; n<32; n+=sizeof(size_t)) | 250 | memset(tmp.c,0,sizeof(tmp)); |
| 261 | *(size_t *)(tmp.c+n) = 0; | ||
| 262 | /* this places in[16] at &tmp.c[16] and decrypted block at &tmp.c[0] */ | 251 | /* this places in[16] at &tmp.c[16] and decrypted block at &tmp.c[0] */ |
| 263 | (*cbc)(in,tmp.c,16,key,tmp.c+16,0); | 252 | (*cbc)(in,tmp.c,16,key,tmp.c+16,0); |
| 264 | 253 | ||
| @@ -275,7 +264,7 @@ size_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out, | |||
| 275 | size_t CRYPTO_nistcts128_decrypt(const unsigned char *in, unsigned char *out, | 264 | size_t CRYPTO_nistcts128_decrypt(const unsigned char *in, unsigned char *out, |
| 276 | size_t len, const void *key, | 265 | size_t len, const void *key, |
| 277 | unsigned char ivec[16], cbc128_f cbc) | 266 | unsigned char ivec[16], cbc128_f cbc) |
| 278 | { size_t residue, n; | 267 | { size_t residue; |
| 279 | union { size_t align; unsigned char c[32]; } tmp; | 268 | union { size_t align; unsigned char c[32]; } tmp; |
| 280 | 269 | ||
| 281 | assert (in && out && key && ivec); | 270 | assert (in && out && key && ivec); |
| @@ -297,8 +286,7 @@ size_t CRYPTO_nistcts128_decrypt(const unsigned char *in, unsigned char *out, | |||
| 297 | out += len; | 286 | out += len; |
| 298 | } | 287 | } |
| 299 | 288 | ||
| 300 | for (n=16; n<32; n+=sizeof(size_t)) | 289 | memset(tmp.c,0,sizeof(tmp)); |
| 301 | *(size_t *)(tmp.c+n) = 0; | ||
| 302 | /* this places in[16] at &tmp.c[16] and decrypted block at &tmp.c[0] */ | 290 | /* this places in[16] at &tmp.c[16] and decrypted block at &tmp.c[0] */ |
| 303 | (*cbc)(in+residue,tmp.c,16,key,tmp.c+16,0); | 291 | (*cbc)(in+residue,tmp.c,16,key,tmp.c+16,0); |
| 304 | 292 | ||
