63 size_t len = in.used();
71 size_t remainder = len & 7;
73 if (remainder != 0 &&
flush)
78 size_t padlen = 8 - remainder;
79 unsigned char *pad = in.alloc(padlen);
80 RAND_pseudo_bytes(pad, padlen);
95 const unsigned char *data = in.get(len);
96 unsigned char *crypt = out.alloc(len);
105#if OPENSSL_VERSION_NUMBER >= 0x0090705fL \
106 && OPENSSL_VERSION_NUMBER < 0x0090800fL
107 DES_ecb3_encrypt(data, crypt,
108 &deskey1, &deskey2, &deskey3,
109 mode ==
ECBEncrypt ? DES_ENCRYPT : DES_DECRYPT);
111 DES_ecb3_encrypt(
reinterpret_cast<const_DES_cblock*
>(&data),
112 reinterpret_cast<DES_cblock*
>(&crypt),
113 &deskey1, &deskey2, &deskey3,
114 mode ==
ECBEncrypt ? DES_ENCRYPT : DES_DECRYPT);
125 DES_ede3_cfb64_encrypt(data, crypt, len, &deskey1, &deskey2, &deskey3,
127 mode ==
CFBEncrypt ? DES_ENCRYPT : DES_DECRYPT);
130 DES_ede3_cbc_encrypt(data, crypt, len, &deskey1, &deskey2, &deskey3,
134 DES_ede3_cbc_encrypt(data, crypt, len, &deskey1, &deskey2, &deskey3,