]>
git.ipfire.org Git - thirdparty/openssl.git/blob - crypto/des/ncbc_enc.c
2 * Copyright 1998-2016 The OpenSSL Project Authors. All Rights Reserved.
4 * Licensed under the OpenSSL license (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
12 * cbc_enc.c (DES_cbc_encrypt)
13 * des_enc.c (DES_ncbc_encrypt)
18 #ifdef CBC_ENC_C__DONT_UPDATE_IV
19 void DES_cbc_encrypt(const unsigned char *in
, unsigned char *out
, long length
,
20 DES_key_schedule
*_schedule
, DES_cblock
*ivec
, int enc
)
22 void DES_ncbc_encrypt(const unsigned char *in
, unsigned char *out
,
23 long length
, DES_key_schedule
*_schedule
,
24 DES_cblock
*ivec
, int enc
)
27 register DES_LONG tin0
, tin1
;
28 register DES_LONG tout0
, tout1
, xor0
, xor1
;
29 register long l
= length
;
38 for (l
-= 8; l
>= 0; l
-= 8) {
45 DES_encrypt1((DES_LONG
*)tin
, _schedule
, DES_ENCRYPT
);
52 c2ln(in
, tin0
, tin1
, l
+ 8);
57 DES_encrypt1((DES_LONG
*)tin
, _schedule
, DES_ENCRYPT
);
63 #ifndef CBC_ENC_C__DONT_UPDATE_IV
71 for (l
-= 8; l
>= 0; l
-= 8) {
76 DES_encrypt1((DES_LONG
*)tin
, _schedule
, DES_DECRYPT
);
77 tout0
= tin
[0] ^ xor0
;
78 tout1
= tin
[1] ^ xor1
;
89 DES_encrypt1((DES_LONG
*)tin
, _schedule
, DES_DECRYPT
);
90 tout0
= tin
[0] ^ xor0
;
91 tout1
= tin
[1] ^ xor1
;
92 l2cn(tout0
, tout1
, out
, l
+ 8);
93 #ifndef CBC_ENC_C__DONT_UPDATE_IV
98 #ifndef CBC_ENC_C__DONT_UPDATE_IV
104 tin0
= tin1
= tout0
= tout1
= xor0
= xor1
= 0;