Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00020 #include "lib_crypt.h"
00021 #include "hal_aes.h"
00022 #include "memdefs.h"
00023 
00037 static uint8_t aes_counter[16];
00038 
00039 void lib_crypt_init(uint8_t * key, const uint8_t * init_counter)
00040 {
00041     hal_aes_setup(false, ECB, key, NULL);
00042 
00043     if(init_counter)
00044     {
00045         lib_crypt_set_counter(init_counter);
00046     }
00047 }
00048 
00049 void lib_crypt_set_counter(const uint8_t * counter)
00050 {
00051     uint8_t i;
00052     for(i=0;i<16;i++)
00053     {
00054         aes_counter[i] = counter[i];
00055     }
00056 }
00057 
00058 void lib_crypt(uint8_t * dest_buf, const uint8_t * src_buf, uint8_t length,const uint8_t * ls5b_value)
00059 {
00060     uint8_t i;
00061   uint8_t encr_buffer[16];   
00062 
00063   
00064     for(i=0;i<5;i++)
00065     {
00066         aes_counter[i] = ls5b_value[i];
00067     }   
00068 
00069   
00070     hal_aes_crypt(encr_buffer,aes_counter);
00071     
00072   
00073     for(i=0;i<length; i++)
00074     {
00075         dest_buf[i] = src_buf[i] ^ encr_buffer[i];
00076     }
00077 }