1/*
2 *  ccdes.h
3 *  corecrypto
4 *
5 *  Created by Fabrice Gautier on 12/20/10.
6 *  Copyright 2010 Apple, Inc. All rights reserved.
7 *
8 */
9
10
11#ifndef _CORECRYPTO_CCDES_H_
12#define _CORECRYPTO_CCDES_H_
13
14#include <corecrypto/ccmode.h>
15
16#define CCDES_BLOCK_SIZE 8
17#define CCDES_KEY_SIZE 8
18
19extern const struct ccmode_ecb ccdes_ltc_ecb_decrypt_mode;
20extern const struct ccmode_ecb ccdes_ltc_ecb_encrypt_mode;
21
22extern const struct ccmode_ecb ccdes3_ltc_ecb_decrypt_mode;
23extern const struct ccmode_ecb ccdes3_ltc_ecb_encrypt_mode;
24extern const struct ccmode_ecb ccdes168_ltc_ecb_encrypt_mode;
25
26const struct ccmode_ecb *ccdes_ecb_decrypt_mode(void);
27const struct ccmode_ecb *ccdes_ecb_encrypt_mode(void);
28
29const struct ccmode_cbc *ccdes_cbc_decrypt_mode(void);
30const struct ccmode_cbc *ccdes_cbc_encrypt_mode(void);
31
32const struct ccmode_cfb *ccdes_cfb_decrypt_mode(void);
33const struct ccmode_cfb *ccdes_cfb_encrypt_mode(void);
34
35const struct ccmode_cfb8 *ccdes_cfb8_decrypt_mode(void);
36const struct ccmode_cfb8 *ccdes_cfb8_encrypt_mode(void);
37
38const struct ccmode_ctr *ccdes_ctr_crypt_mode(void);
39
40const struct ccmode_ofb *ccdes_ofb_crypt_mode(void);
41
42
43const struct ccmode_ecb *ccdes3_ecb_decrypt_mode(void);
44const struct ccmode_ecb *ccdes3_ecb_encrypt_mode(void);
45
46const struct ccmode_cbc *ccdes3_cbc_decrypt_mode(void);
47const struct ccmode_cbc *ccdes3_cbc_encrypt_mode(void);
48
49const struct ccmode_cfb *ccdes3_cfb_decrypt_mode(void);
50const struct ccmode_cfb *ccdes3_cfb_encrypt_mode(void);
51
52const struct ccmode_cfb8 *ccdes3_cfb8_decrypt_mode(void);
53const struct ccmode_cfb8 *ccdes3_cfb8_encrypt_mode(void);
54
55const struct ccmode_ctr *ccdes3_ctr_crypt_mode(void);
56
57const struct ccmode_ofb *ccdes3_ofb_crypt_mode(void);
58
59int ccdes_key_is_weak( void *key, unsigned long  length);
60void ccdes_key_set_odd_parity(void *key, unsigned long length);
61
62uint32_t
63ccdes_cbc_cksum(void *in, void *out, unsigned long length,
64                void *key, unsigned long keylen, void *ivec);
65
66
67#endif /* _CORECRYPTO_CCDES_H_ */
68