* s/SOSSE_/ATMOS_/g
authorDavor Ocelic <docelic@spinlock.hr>
Wed, 28 Jan 2009 19:28:59 +0000 (20:28 +0100)
committerDavor Ocelic <docelic@spinlock.hr>
Wed, 28 Jan 2009 19:28:59 +0000 (20:28 +0100)
* Some work on AES thing, test prog doesn't work correctly
  yet but it's promising

22 files changed:
src/aes.c
src/aes.h
src/auth.h
src/commands.h
src/config.h
src/crypt.h
src/fs.h
src/fstream.h
src/hal.h
src/log.h
src/main.h
src/newdes-sk.c
src/newdes-sk.h
src/skipjack.c
src/skipjack.h
src/sw.h
src/t0.h
src/tea.c
src/tea.h
src/tools.h
src/transaction.h
src/types.h

index 54e0940..25dbb6e 100644 (file)
--- a/src/aes.c
+++ b/src/aes.c
@@ -17,7 +17,7 @@
 
 #define hton_ul(x,y)
 
-#if CONF_WITH_CRYPT_ALGO==3
+#if CONF_WITH_CRYPT_ALGO==3 || TEST
 
 static const CODE iu8 substitution_table_[256] = {
 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76,
@@ -57,21 +57,29 @@ static const CODE iu8 inverse_substitution_table_[256] = {
 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, 0xE1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0C, 0x7D,
 };
 
-void aes_enc( iu8 *data, iu8 *key, iu32 data_length )
+void aes_enc( iu8 *v, iu8 *k ) //, iu32 data_length )
 {
-       iu32 block_counter;
+       //iu32 block_counter;
        iu8 *state;
        iu8 round_key[16];
        iu8 round_constant[4] = {0x01, 0x00, 0x00, 0x00};
        iu8 counter;
 
-       for(block_counter=0 ; block_counter < data_length ; block_counter+=16)
-       {
-               state = data+block_counter;
+#ifdef DEBUG
+  printf( "aes_enc( %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX, %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX )\n",
+    v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7],
+    v[8], v[9], v[10], v[11], v[12], v[13], v[14], v[15],
+    k[0], k[1], k[2], k[3], k[4], k[4], k[6], k[7],
+    k[8], k[9], k[10], k[11], k[12], k[13], k[14], k[15]);
+#endif
+
+       //for(block_counter=0 ; block_counter < data_length ; block_counter+=16)
+       //{
+               state = v; //+block_counter;
                round_constant[0] = 0x01;
 
                for(counter=0 ; counter<16 ; counter++)
-                       round_key[counter]=key[counter];
+                       round_key[counter]=k[counter];
 
                for(counter = 0; counter < 9; counter++)
                {
@@ -87,23 +95,31 @@ void aes_enc( iu8 *data, iu8 *key, iu32 data_length )
 
                for(counter=0 ; counter<16 ; counter++)
                        state[counter] = state[counter]^round_key[counter];
-       }
+       //}
 
 }
 
-void aes_dec( iu8 *data, iu8 *key, iu32 data_length )
+void aes_dec( iu8 *v, iu8 *k) //, iu32 data_length )
 {
-       iu32 block_counter;
+       //iu32 block_counter;
        iu8 *state;
        iu8 round_key[16];
        iu8 round_constant[4] = {0x01, 0x00, 0x00, 0x00};
        iu8 counter;
 
-       for(block_counter=0 ; block_counter < data_length ; block_counter+=16)
-       {
-               state = data+block_counter;
+#ifdef DEBUG
+  printf( "aes_dec( %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX, %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX )\n",
+    v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7],
+    v[8], v[9], v[10], v[11], v[12], v[13], v[14], v[15],
+    k[0], k[1], k[2], k[3], k[4], k[4], k[6], k[7],
+    k[8], k[9], k[10], k[11], k[12], k[13], k[14], k[15]);
+#endif
+
+       //for(block_counter=0 ; block_counter < data_length ; block_counter+=16)
+       //{
+               state = v; //+block_counter;
                round_constant[0] = 0x01;
-               calculateLastRoundKey(round_key, key, round_constant);
+               calculateLastRoundKey(round_key, k, round_constant);
 
                for(counter=0 ; counter<16 ; counter++)
                        state[counter] = state[counter]^round_key[counter];
@@ -117,8 +133,8 @@ void aes_dec( iu8 *data, iu8 *key, iu32 data_length )
                }
 
                inverseShiftRows(state);
-               inverseSubstituteBytesAndAddRoundKey(state, key);
-       }
+               inverseSubstituteBytesAndAddRoundKey(state, k);
+       //}
 }
 
 void addRoundKeyAndSubstituteBytes(iu8 *state, iu8 *round_key)
@@ -259,5 +275,46 @@ iu8 xtime(iu8 value)
   return ((value & 0x80) ? (value<<1)^0x1b : value<<1) ;
 }
 
+#ifdef TEST
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+
+int main() {
+       iu8 inp[16]     = { 0x33, 0x22, 0x11, 0x00, 0xdd, 0xcc, 0xbb, 0xaa, 0x33, 0x22, 0x11, 0x00, 0xdd, 0xcc, 0xbb, 0xaa };
+       iu8 key[16]     = { 0x00, 0x99, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x00, 0x99, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33 };
+       iu8 enc[16], dec[16];
+       iu8 chk[16]     = { 0x50, 0x9E, 0xE9, 0x4F, 0x26, 0x25, 0x03, 0xB6, 0xEE, 0x0A, 0x2D, 0xB7, 0x8C, 0x15, 0x08, 0x1D };
+       iu8 tab[10][256];
+       long i;
+       clock_t elapsed;
+
+       memcpy( enc, inp, 8 );
+       aes_enc( enc, key );
+
+#ifdef DEBUG
+  printf( "ckpoint( %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX %.2hX )\n",
+    enc[0], enc[1], enc[2], enc[3], enc[4], enc[5], enc[6], enc[7],
+    enc[8], enc[9], enc[10], enc[11], enc[12], enc[13], enc[14], enc[15] );
+#endif
+       printf((memcmp(enc, chk, 8) == 0) ? "encryption OK!\n" : "encryption failure!\n");
+#if CONF_WITH_DECRYPT==1
+       memcpy( dec, chk, 8 );
+       aes_dec( dec, key );
+       printf((memcmp(dec, inp, 8) == 0) ? "decryption OK!\n" : "decryption failure!\n");
+#endif
+
+#ifdef BENCHMARK
+       elapsed = -clock();
+       for (i = 0; i < 1000000L; i++) {
+               aes_enc( enc, key );
+       }
+       elapsed += clock();
+       printf ("elapsed time: %.1f s.\n", (float)elapsed/CLOCKS_PER_SEC);
+#endif
+       return 0;
+}
+#endif /* TEST */
+
 #endif /* CONF_WITH_CRYPT_ALGO==3 */
 
index fbbd58c..451a581 100644 (file)
--- a/src/aes.h
+++ b/src/aes.h
@@ -7,16 +7,13 @@
        $Id: aes.h,v 1.5 2002/12/22 15:42:55 m Exp $
 */
 
-#ifndef SOSSE_AES_H
-#define SOSSE_AES_H
+#ifndef ATMOS_AES_H
+#define ATMOS_AES_H
 
 #include <types.h>
 
-//#define AES_KEY_LEN          16      //!< AES key size.
-//#define AES_BLOCK_LEN        16      //!< AES block length.
-
-//#define DELTA        0x9E3779B9      //!< Magic value. (Golden number * 2^31)
-//#define ROUNDS       32                      //!< Number of rounds.
+#define AES_KEY_LEN            16      //!< AES key size.
+#define AES_BLOCK_LEN  16      //!< AES block length.
 
 /*! \brief AES encryption function.
 
@@ -26,7 +23,7 @@
        \param v Array of two long values containing the data block.
        \param k Array of four long values containing the key.
 */
-void aes_enc( iu8 *v, iu8 *k, iu32 v_len );
+void aes_enc( iu8 *v, iu8 *k); //, iu32 v_len );
 
 /*! \brief AES decryption function.
 
@@ -36,7 +33,7 @@ void aes_enc( iu8 *v, iu8 *k, iu32 v_len );
        \param v Array of two long values containing the data block.
        \param k Array of four long values containing the key.
 */
-void aes_dec( iu8 *v, iu8 *k, iu32 v_len );
+void aes_dec( iu8 *v, iu8 *k); //, iu32 v_len );
 
 void addRoundKeyAndSubstituteBytes(iu8 *, iu8 *);
 void shiftRows(iu8 *);
@@ -50,5 +47,5 @@ void calculateLastRoundKey(iu8 *, iu8 *, iu8 *);
 void swap(iu8 *, iu8 *);
 iu8 xtime(iu8);
 
-#endif /* SOSSE_AES_H */
+#endif /* ATMOS_AES_H */
 
index 1b9fa23..c19f100 100644 (file)
@@ -35,8 +35,8 @@
        $Id: auth.h,v 1.11 2002/12/22 15:42:55 m Exp $
 */
 
-#ifndef SOSSE_AUTH_H
-#define SOSSE_AUTH_H
+#ifndef ATMOS_AUTH_H
+#define ATMOS_AUTH_H
 
 #include <types.h>
 
@@ -196,5 +196,5 @@ bool auth_getChallenge( iu8 *dst, iu8 rndlen );
 bool auth_createVerifyCryptogram( iu8 *cry, iu8 crylen, bool create,
        bool enc );
 
-#endif /* SOSSE_AUTH_H */
+#endif /* ATMOS_AUTH_H */
 
index 1eae20d..fecde9a 100644 (file)
@@ -26,8 +26,8 @@
        $Id: commands.h,v 1.15 2002/12/22 15:42:55 m Exp $
 */
 
-#ifndef SOSSE_COMMANDS_H
-#define SOSSE_COMMANDS_H
+#ifndef ATMOS_COMMANDS_H
+#define ATMOS_COMMANDS_H
 
 #define CLA_PROP                       0x80    //!< CLA byte: Proprietary
 
@@ -109,4 +109,4 @@ void cmd_updateBinary( void );
 */
 void cmd_verifyKeyPIN( void );
 
-#endif /* SOSSE_COMMANDS_H */
+#endif /* ATMOS_COMMANDS_H */
index 7fecef8..37aaa18 100644 (file)
@@ -21,8 +21,8 @@
   \brief Configuration settings (build options).
 */
 
-#ifndef SOSSE_CONFIG_H
-#define SOSSE_CONFIG_H
+#ifndef ATMOS_CONFIG_H
+#define ATMOS_CONFIG_H
 
 
 /* Configuration defines */
 #define ESIZ EXT_EEPROM_SIZE
 
 
-#endif /* SOSSE_CONFIG_H */
+#endif /* ATMOS_CONFIG_H */
 
index c8fd11f..9e65f79 100644 (file)
@@ -23,8 +23,8 @@
        $Id: crypt.h,v 1.1 2003/03/30 12:42:21 m Exp $
 */
 
-#ifndef SOSSE_CRYPT_H
-#define SOSSE_CRYPT_H
+#ifndef ATMOS_CRYPT_H
+#define ATMOS_CRYPT_H
 
 #include <config.h>
 
@@ -77,5 +77,5 @@
 #error No valid crypto algorithm selected.
 #endif
 
-#endif /* SOSSE_CRYPT_H */
+#endif /* ATMOS_CRYPT_H */
 
index d1b0c7f..0e8f323 100644 (file)
--- a/src/fs.h
+++ b/src/fs.h
@@ -49,8 +49,8 @@
        $Id: fs.h,v 1.13 2002/12/22 15:42:55 m Exp $
 */
 
-#ifndef SOSSE_FS_H
-#define SOSSE_FS_H
+#ifndef ATMOS_FS_H
+#define ATMOS_FS_H
 
 #include <types.h>
 #include <fstream.h>
@@ -179,5 +179,5 @@ bool fs_delete( iu16 fid );
 */
 bool fs_create( S_FINFO *fi );
 
-#endif /* SOSSE_FS_H */
+#endif /* ATMOS_FS_H */
 
index 19604fa..c2c7e1d 100644 (file)
@@ -30,8 +30,8 @@
        $Id: fstream.h,v 1.8 2002/12/22 15:42:55 m Exp $
 */
 
-#ifndef SOSSE_FSTREAM_H
-#define SOSSE_FSTREAM_H
+#ifndef ATMOS_FSTREAM_H
+#define ATMOS_FSTREAM_H
 
 #include <types.h>
 
@@ -77,5 +77,5 @@ bool fstream_write( S_FSTREAM *fs, iu8 *src, iu8 len );
 */
 bool fstream_test( S_FSTREAM *fs, iu16 len );
 
-#endif /* SOSSE_FSTREAM_H */
+#endif /* ATMOS_FSTREAM_H */
 
index b35b606..18c6ce3 100644 (file)
--- a/src/hal.h
+++ b/src/hal.h
@@ -23,8 +23,8 @@
        $Id: hal.h,v 1.15 2002/12/22 15:42:55 m Exp $
 */
 
-#ifndef SOSSE_HAL_H
-#define SOSSE_HAL_H
+#ifndef ATMOS_HAL_H
+#define ATMOS_HAL_H
 
 #include <types.h>
 
@@ -163,4 +163,4 @@ bool hal_rnd_getBlock( iu8 *dst );
 */
 bool hal_led( char set );
 
-#endif /* SOSSE_HAL_H */
+#endif /* ATMOS_HAL_H */
index d691389..daf4783 100644 (file)
--- a/src/log.h
+++ b/src/log.h
@@ -31,8 +31,8 @@
        $Id: log.h,v 1.5 2002/12/22 15:42:55 m Exp $
 */
 
-#ifndef SOSSE_LOG_H
-#define SOSSE_LOG_H
+#ifndef ATMOS_LOG_H
+#define ATMOS_LOG_H
 
 #include <types.h>
 
@@ -84,4 +84,4 @@ void log_add( iu8 tag, iu8 *data, iu8 len );
 #define log_add(tag,data,len)
 #endif
 
-#endif /* SOSSE_LOG_H */
+#endif /* ATMOS_LOG_H */
index 070c3e8..d1ff985 100644 (file)
        MA 02111-1307 USA</P>
 */
 
-#ifndef SOSSE_MAIN_H
-#define SOSSE_MAIN_H
+#ifndef ATMOS_MAIN_H
+#define ATMOS_MAIN_H
 
 #if defined(CTAPI)
 void atmos_main( void );
 #endif
 
-#endif /* SOSSE_MAIN_H */
+#endif /* ATMOS_MAIN_H */
index b6e9bb0..9792174 100644 (file)
@@ -88,7 +88,7 @@
 #include <stdio.h>
 #endif
 
-#if CONF_WITH_CRYPT_ALGO==2
+#if CONF_WITH_CRYPT_ALGO==2 || TEST
 
 static const iu8 f[256] = {
        32,137,239,188,102,125,221,72,212,68,81,37,86,237,147,149,
index ec2e985..e866325 100644 (file)
@@ -4,8 +4,8 @@
        $Id: newdes-sk.h,v 1.1 2003/03/30 12:42:21 m Exp $
 */
 
-#ifndef SOSSE_NEWDESSK_H
-#define SOSSE_NEWDESSK_H
+#ifndef ATMOS_NEWDESSK_H
+#define ATMOS_NEWDESSK_H
 
 #include <types.h>
 
index cdde8e2..57a40b2 100644 (file)
@@ -8,7 +8,7 @@
 #include <stdio.h>
 #endif
 
-#if CONF_WITH_CRYPT_ALGO==1
+#if CONF_WITH_CRYPT_ALGO==1 || TEST
 
 // Currently decryption only works with SMALL_MEMORY=1. (Must be
 // an error somewhere in non-small code).
index ece0e25..b690447 100644 (file)
@@ -7,8 +7,8 @@
        $Id: skipjack.h,v 1.1 2003/03/30 12:42:21 m Exp $
 */
 
-#ifndef SOSSE_SKIPJACK_H
-#define SOSSE_SKIPJACK_H
+#ifndef ATMOS_SKIPJACK_H
+#define ATMOS_SKIPJACK_H
 
 #include <types.h>
 
@@ -35,5 +35,5 @@ void skipjack_enc( iu8* v, iu8* k );
 */
 void skipjack_dec( iu8* v, iu8* k );
 
-#endif /* SOSSE_SKIPJACK_H */
+#endif /* ATMOS_SKIPJACK_H */
 
index bc6315c..f1547c0 100644 (file)
--- a/src/sw.h
+++ b/src/sw.h
@@ -25,8 +25,8 @@
        $Id: sw.h,v 1.1 2002/12/22 15:42:55 m Exp $
 */
 
-#ifndef SOSSE_ERRNO_H
-#define SOSSE_ERRNO_H
+#ifndef ATMOS_ERRNO_H
+#define ATMOS_ERRNO_H
 
 #include <types.h>
 
@@ -137,5 +137,5 @@ void sw_set( iu16 value );
 iu16 sw_get( void );
 #endif /* CONF_WITH_RETCODEMGR==1 */
 
-#endif /* SOSSE_ERRNO_H */
+#endif /* ATMOS_ERRNO_H */
 
index 0873d2e..3991790 100644 (file)
--- a/src/t0.h
+++ b/src/t0.h
@@ -28,8 +28,8 @@
        $Id: t0.h,v 1.12 2002/12/22 15:42:55 m Exp $
 */
 
-#ifndef SOSSE_T0_H
-#define SOSSE_T0_H
+#ifndef ATMOS_T0_H
+#define ATMOS_T0_H
 
 /*! \brief Header of the current command.
 
@@ -92,4 +92,4 @@ bool t0_testP1P2( iu16 p1p2 );
 */
 bool t0_testP3( iu8 p3 );
 
-#endif /* SOSSE_T0_H */
+#endif /* ATMOS_T0_H */
index 4741a43..64675a6 100644 (file)
--- a/src/tea.c
+++ b/src/tea.c
@@ -47,7 +47,7 @@ delta is chosen to be the real part of (the golden ratio Sqrt(5/4) -
 #define hton_ul(x,y)
 
 // Tea is algorithm with ID 0 in our list
-#if CONF_WITH_CRYPT_ALGO==0
+#if CONF_WITH_CRYPT_ALGO==0 || TEST
 
 void tea_enc( iu32 *v, iu32 *k )
 {
index 185787a..9c81ee1 100644 (file)
--- a/src/tea.h
+++ b/src/tea.h
@@ -7,8 +7,8 @@
        $Id: tea.h,v 1.5 2002/12/22 15:42:55 m Exp $
 */
 
-#ifndef SOSSE_TEA_H
-#define SOSSE_TEA_H
+#ifndef ATMOS_TEA_H
+#define ATMOS_TEA_H
 
 #include <types.h>
 
@@ -38,5 +38,5 @@ void tea_enc( iu32 *v, iu32 *k );
 */
 void tea_dec( iu32 *v, iu32 *k );
 
-#endif /* SOSSE_TEA_H */
+#endif /* ATMOS_TEA_H */
 
index 5810321..8353459 100644 (file)
@@ -23,8 +23,8 @@
        $Id: tools.h,v 1.11 2002/12/22 15:42:56 m Exp $
 */
 
-#ifndef SOSSE_TOOLS_H
-#define SOSSE_TOOLS_H
+#ifndef ATMOS_TOOLS_H
+#define ATMOS_TOOLS_H
 
 #include <config.h>
 #include <types.h>
@@ -58,4 +58,4 @@ void hton_ul( iu32 *ul, iu8 num );
 /*! Return maximum value */
 #define max(a,b) ((a)>(b)?(a):(b))
 
-#endif /* SOSSE_TOOLS_H */
+#endif /* ATMOS_TOOLS_H */
index 0b1a39c..4cb2673 100644 (file)
@@ -53,8 +53,8 @@
        $Id: transaction.h,v 1.9 2002/12/22 15:42:56 m Exp $
 */
 
-#ifndef SOSSE_TRANSACTION_H
-#define SOSSE_TRANSACTION_H
+#ifndef ATMOS_TRANSACTION_H
+#define ATMOS_TRANSACTION_H
 
 #include <types.h>
 
@@ -99,4 +99,4 @@ bool ta_commit( void );
 */
 bool ta_rollback( void );
 
-#endif /* SOSSE_TRANSACTION_H */
+#endif /* ATMOS_TRANSACTION_H */
index 2b57509..effc620 100644 (file)
@@ -23,8 +23,8 @@
        $Id: types.h,v 1.12 2003/03/30 19:36:48 m Exp $
 */
 
-#ifndef SOSSE_TYPES_H
-#define SOSSE_TYPES_H
+#ifndef ATMOS_TYPES_H
+#define ATMOS_TYPES_H
 
 #define FALSE  0
 #define TRUE   !FALSE
@@ -47,4 +47,4 @@ typedef unsigned long iu32;
 //! Boolean data type.
 typedef unsigned char bool;
 
-#endif /* SOSSE_TYPES_H */
+#endif /* ATMOS_TYPES_H */