crypto-algorithms.c

Basic implementations of standard cryptography algorithms, like AES and SHA-1
git clone git://git.finwo.net/lib/crypto-algorithms.c
Log | Files | Refs | README

des.h (1485B)


      1 /*********************************************************************
      2 * Filename:   des.h
      3 * Author:     Brad Conte (brad AT bradconte.com)
      4 * Copyright:
      5 * Disclaimer: This code is presented "as is" without any guarantees.
      6 * Details:    Defines the API for the corresponding DES implementation.
      7               Note that encryption and decryption are defined by how
      8               the key setup is performed, the actual en/de-cryption is
      9               performed by the same function.
     10 *********************************************************************/
     11 
     12 #ifndef DES_H
     13 #define DES_H
     14 
     15 /*************************** HEADER FILES ***************************/
     16 #include <stddef.h>
     17 
     18 /****************************** MACROS ******************************/
     19 #define DES_BLOCK_SIZE 8                // DES operates on 8 bytes at a time
     20 
     21 /**************************** DATA TYPES ****************************/
     22 typedef unsigned char BYTE;             // 8-bit byte
     23 typedef unsigned int  WORD;             // 32-bit word, change to "long" for 16-bit machines
     24 
     25 typedef enum {
     26 	DES_ENCRYPT,
     27 	DES_DECRYPT
     28 } DES_MODE;
     29 
     30 /*********************** FUNCTION DECLARATIONS **********************/
     31 void des_key_setup(const BYTE key[], BYTE schedule[][6], DES_MODE mode);
     32 void des_crypt(const BYTE in[], BYTE out[], const BYTE key[][6]);
     33 
     34 void three_des_key_setup(const BYTE key[], BYTE schedule[][16][6], DES_MODE mode);
     35 void three_des_crypt(const BYTE in[], BYTE out[], const BYTE key[][16][6]);
     36 
     37 #endif   // DES_H