mbed TLS v2.2.0
des.h
Go to the documentation of this file.
1 
23 #ifndef MBEDTLS_DES_H
24 #define MBEDTLS_DES_H
25 
26 #if !defined(MBEDTLS_CONFIG_FILE)
27 #include "config.h"
28 #else
29 #include MBEDTLS_CONFIG_FILE
30 #endif
31 
32 #include <stddef.h>
33 #include <stdint.h>
34 
35 #define MBEDTLS_DES_ENCRYPT 1
36 #define MBEDTLS_DES_DECRYPT 0
37 
38 #define MBEDTLS_ERR_DES_INVALID_INPUT_LENGTH -0x0032
40 #define MBEDTLS_DES_KEY_SIZE 8
41 
42 #if !defined(MBEDTLS_DES_ALT)
43 // Regular implementation
44 //
45 
46 #ifdef __cplusplus
47 extern "C" {
48 #endif
49 
53 typedef struct
54 {
55  uint32_t sk[32];
56 }
58 
62 typedef struct
63 {
64  uint32_t sk[96];
65 }
67 
74 
81 
88 
95 
104 void mbedtls_des_key_set_parity( unsigned char key[MBEDTLS_DES_KEY_SIZE] );
105 
116 int mbedtls_des_key_check_key_parity( const unsigned char key[MBEDTLS_DES_KEY_SIZE] );
117 
125 int mbedtls_des_key_check_weak( const unsigned char key[MBEDTLS_DES_KEY_SIZE] );
126 
135 int mbedtls_des_setkey_enc( mbedtls_des_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE] );
136 
145 int mbedtls_des_setkey_dec( mbedtls_des_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE] );
146 
156  const unsigned char key[MBEDTLS_DES_KEY_SIZE * 2] );
157 
167  const unsigned char key[MBEDTLS_DES_KEY_SIZE * 2] );
168 
178  const unsigned char key[MBEDTLS_DES_KEY_SIZE * 3] );
179 
189  const unsigned char key[MBEDTLS_DES_KEY_SIZE * 3] );
190 
201  const unsigned char input[8],
202  unsigned char output[8] );
203 
204 #if defined(MBEDTLS_CIPHER_MODE_CBC)
205 
223 int mbedtls_des_crypt_cbc( mbedtls_des_context *ctx,
224  int mode,
225  size_t length,
226  unsigned char iv[8],
227  const unsigned char *input,
228  unsigned char *output );
229 #endif /* MBEDTLS_CIPHER_MODE_CBC */
230 
241  const unsigned char input[8],
242  unsigned char output[8] );
243 
244 #if defined(MBEDTLS_CIPHER_MODE_CBC)
245 
265 int mbedtls_des3_crypt_cbc( mbedtls_des3_context *ctx,
266  int mode,
267  size_t length,
268  unsigned char iv[8],
269  const unsigned char *input,
270  unsigned char *output );
271 #endif /* MBEDTLS_CIPHER_MODE_CBC */
272 
281 void mbedtls_des_setkey( uint32_t SK[32],
282  const unsigned char key[MBEDTLS_DES_KEY_SIZE] );
283 #ifdef __cplusplus
284 }
285 #endif
286 
287 #else /* MBEDTLS_DES_ALT */
288 #include "des_alt.h"
289 #endif /* MBEDTLS_DES_ALT */
290 
291 #ifdef __cplusplus
292 extern "C" {
293 #endif
294 
300 int mbedtls_des_self_test( int verbose );
301 
302 #ifdef __cplusplus
303 }
304 #endif
305 
306 #endif /* des.h */
int mbedtls_des3_crypt_ecb(mbedtls_des3_context *ctx, const unsigned char input[8], unsigned char output[8])
3DES-ECB block encryption/decryption
int mbedtls_des_key_check_weak(const unsigned char key[MBEDTLS_DES_KEY_SIZE])
Check that key is not a weak or semi-weak DES key.
void mbedtls_des3_init(mbedtls_des3_context *ctx)
Initialize Triple-DES context.
int mbedtls_des3_set2key_dec(mbedtls_des3_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE *2])
Triple-DES key schedule (112-bit, decryption)
#define MBEDTLS_DES_KEY_SIZE
Definition: des.h:40
DES context structure.
Definition: des.h:53
Compatibility names (set of defines)
int mbedtls_des3_set2key_enc(mbedtls_des3_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE *2])
Triple-DES key schedule (112-bit, encryption)
int mbedtls_des3_set3key_enc(mbedtls_des3_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE *3])
Triple-DES key schedule (168-bit, encryption)
Triple-DES context structure.
Definition: des.h:62
int mbedtls_des_self_test(int verbose)
Checkup routine.
int mbedtls_des_crypt_ecb(mbedtls_des_context *ctx, const unsigned char input[8], unsigned char output[8])
DES-ECB block encryption/decryption.
void mbedtls_des_free(mbedtls_des_context *ctx)
Clear DES context.
void mbedtls_des_init(mbedtls_des_context *ctx)
Initialize DES context.
void mbedtls_des3_free(mbedtls_des3_context *ctx)
Clear Triple-DES context.
int mbedtls_des3_set3key_dec(mbedtls_des3_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE *3])
Triple-DES key schedule (168-bit, decryption)
void mbedtls_des_setkey(uint32_t SK[32], const unsigned char key[MBEDTLS_DES_KEY_SIZE])
Internal function for key expansion.
int mbedtls_des_setkey_enc(mbedtls_des_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE])
DES key schedule (56-bit, encryption)
void mbedtls_des_key_set_parity(unsigned char key[MBEDTLS_DES_KEY_SIZE])
Set key parity on the given key to odd.
int mbedtls_des_key_check_key_parity(const unsigned char key[MBEDTLS_DES_KEY_SIZE])
Check that key parity on the given key is odd.
int mbedtls_des_setkey_dec(mbedtls_des_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE])
DES key schedule (56-bit, decryption)