embedded IPsec source code documentation


des.h

Go to the documentation of this file.
00001 /*
00002  * embedded IPsec
00003  * Copyright (c) 2003 Niklaus Schild and Christian Scheurer, HTI Biel/Bienne
00004  * All rights reserved.
00005  *
00006  * Redistribution and use in source and binary forms, with or without modification,
00007  * are permitted provided that the following conditions are met:
00008  *
00009  * 1. Redistributions of source code must retain the above copyright notice,
00010  *    this list of conditions and the following disclaimer.
00011  * 2. Redistributions in binary form must reproduce the above copyright notice,
00012  *    this list of conditions and the following disclaimer in the documentation
00013  *    and/or other materials provided with the distribution.
00014  * 3. The name of the author may not be used to endorse or promote products
00015  *    derived from this software without specific prior written permission.
00016  *
00017  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
00018  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
00019  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
00020  * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00021  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
00022  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00023  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00024  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
00025  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
00026  * OF SUCH DAMAGE.
00027  *
00028  */
00029 
00043 #ifndef __DES_H__
00044 #define __DES_H__
00045 
00046 #include "ipsec/types.h"
00047 
00048 
00049 /*
00050  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
00051  * ! DES_LONG has to be at least 32 bits wide.                    !
00052  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
00053  */
00054 #define DES_LONG __u32                          
00055 
00056 typedef unsigned char DES_cblock[8];
00057 typedef const unsigned char const_DES_cblock[8];
00058 
00059 typedef struct DES_ks
00060 {
00061     union
00062         {
00063                 DES_cblock cblock;
00064                 DES_LONG deslong[2]; /* make sure things are correct size on machines with 8 byte longs */
00065         } ks[16];
00066 } DES_key_schedule;
00067 
00068 #define DES_ENCRYPT     1                                                       
00069 #define DES_DECRYPT     0                                                       
00071 int DES_set_key_checked(const_DES_cblock *key,DES_key_schedule *schedule);
00072 void DES_set_key_unchecked(const_DES_cblock *key,DES_key_schedule *schedule);
00073 void cipher_3des_cbc(unsigned char*, int, unsigned char*, unsigned char*, int, unsigned char*);
00074 
00075 #endif
00076 
00077 

Copyright 2003 by Christian Scheurer and Niklaus Schild