37 lines
1.4 KiB
C
37 lines
1.4 KiB
C
/*********************************************************************
|
|
* Filename: des.h
|
|
* Author: Brad Conte (brad AT bradconte.com)
|
|
* Copyright:
|
|
* Disclaimer: This code is presented "as is" without any guarantees.
|
|
* Details: Defines the API for the corresponding DES implementation.
|
|
Note that encryption and decryption are defined by how
|
|
the key setup is performed, the actual en/de-cryption is
|
|
performed by the same function.
|
|
*********************************************************************/
|
|
|
|
#ifndef DES_H
|
|
#define DESH
|
|
|
|
/*************************** HEADER FILES ***************************/
|
|
#include <stddef.h>
|
|
|
|
/****************************** MACROS ******************************/
|
|
#define DES_BLOCK_SIZE 8 // DES operates on 8 bytes at a time
|
|
|
|
/**************************** DATA TYPES ****************************/
|
|
typedef unsigned char BYTE; // 8-bit byte
|
|
typedef unsigned int WORD; // 32-bit word, change to "long" for 16-bit machines
|
|
|
|
typedef enum {
|
|
DES_ENCRYPT,
|
|
DES_DECRYPT
|
|
} DES_MODE;
|
|
|
|
/*********************** FUNCTION DECLARATIONS **********************/
|
|
void des_key_setup(const BYTE key[], BYTE schedule[][6], DES_MODE mode);
|
|
void des_crypt(const BYTE in[], BYTE out[], const BYTE key[][6]);
|
|
|
|
void three_des_key_setup(const BYTE key[], BYTE schedule[][16][6], DES_MODE mode);
|
|
void three_des_crypt(const BYTE in[], BYTE out[], const BYTE key[][16][6]);
|
|
|
|
#endif // DES_H
|