fixing lot of typos, camellia_C now seems to work

This commit is contained in:
bg 2008-12-10 15:18:23 +00:00
parent 12883cff6e
commit 9b567bc05f
38 changed files with 155 additions and 223 deletions

View File

@ -407,26 +407,26 @@ B1 = 18
B2 = 19
.global camellia128_keyop_rot15
camellia128_keyop_rot15:
movw r30, r24 ; Z points at LSB of kl ;-- 0
movw r30, r24 ; Z points at LSB of kl ;-- 0
ldi r22, 2
2: adiw r30, 15 ;-- 15
2: adiw r30, 15 ;-- 15
ld r21, Z
ld r20, -Z ;-- 14
ld r20, -Z ;-- 14
movw B1, r20 ; store Backup of the 2 MSB of kl
ror r20
ldi r21, 14
1: ld r20, -Z ;-- 13..0
1: ld r20, -Z ;-- 13..0
ror r20
std Z+2, r20 ;-- (15..2)
std Z+2, r20 ;-- (15..2)
dec r21
brne 1b
ror B2
ror B1
st Z+, B1 ;-- 1
st Z+, B1 ;-- 1
st Z, B2
adiw r30, 15 ;-- 16
adiw r30, 15 ;-- 16
dec r22
brne 2b
@ -513,26 +513,26 @@ B1 = 18
B2 = 19
.global camellia128_keyop_inv_rot15
camellia128_keyop_inv_rot15:
movw r30, r24 ; Z points at LSB of kl ;-- 0
movw r30, r24 ; Z points at LSB of kl ;-- 0
movw r26, r24 ; X also
ldi r22, 2
2: ;-- 0
ld r20, Z+ ;-- 0/1
ld r21, Z+ ;-- 1/2
2: ;-- 0
ld r20, Z+ ;-- 0/1
ld r21, Z+ ;-- 1/2
movw B1, r20 ; store Backup of the 2 LSB of kl
rol r21
ldi r20, 14
1: ld r21, Z+ ;-- 2/14..3/16
1: ld r21, Z+ ;-- 2/14..3/16
rol r21
st X+, r21 ;-- (0..13)/(1..14)
st X+, r21 ;-- (0..13)/(1..14)
dec r20
brne 1b
rol B1
rol B2
st X+, B1 ;-- 14/15
st X+, B2 ;-- 15/16
st X+, B1 ;-- 14/15
st X+, B2 ;-- 15/16
dec r22
brne 2b

View File

@ -29,7 +29,7 @@ typedef struct camellia128_ctx_s{
}camellia128_ctx_t;
void camellia128_init(const uint8_t* key, camellia128_ctx_t* s);
void camellia128_init(const void* key, camellia128_ctx_t* s);
void camellia128_enc(void* block, const camellia128_ctx_t* s);
void camellia128_dec(void* block, const camellia128_ctx_t* s);

View File

@ -1,4 +1,4 @@
/* camellia.c */
/* camellia128-stub.c */
/*
This file is part of the Crypto-avr-lib/microcrypt-lib.
Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de)
@ -27,10 +27,11 @@
#include <avr/io.h>
#include <avr/pgmspace.h>
#include "camellia.h"
#include "uart.h"
#include "debug.h"
#include <util/delay.h>
#if 0
#include "uart.h"
#include "debug.h"
#include <util/delay.h>
#endif
/*****************************************************************************/
uint64_t camellia_f(uint64_t x, uint64_t k);
/*****************************************************************************/
@ -69,7 +70,7 @@ uint32_t PROGMEM camellia_sigma[12]={ /* 48 byte table */
/*****************************************************************************/
/*
void camellia128_ctx_dump(camellia128_ctx_t *s){
uart_putstr_P(PSTR("\r\n==State Dump=="));
uart_putstr_P(PSTR("\n\rKAl: ")); uart_hexdump(&(s->kal), 8);
@ -78,22 +79,24 @@ void camellia128_ctx_dump(camellia128_ctx_t *s){
uart_putstr_P(PSTR("\n\rKLr: ")); uart_hexdump(&(s->klr), 8);
return;
}
*/
/*****************************************************************************/
/* extern prog_uint64_t camellia_sigma[6]; */
void camellia128_init(const uint8_t* key, camellia128_ctx_t* s){
void camellia128_init(const void* key, camellia128_ctx_t* s){
uint8_t i;
s->kll = 0; /* ((uint64_t*)key)[0]; */
/* load the key, endian-adjusted, to kll,klr */
for(i=0; i<8; ++i){
s->kll <<= 8;
s->kll |= *key++;
s->kll |= *((uint8_t*)key);
key = (uint8_t*)key+1;
}
for(i=0; i<8; ++i){
s->klr <<= 8;
s->klr |= *key++;
s->klr |= *((uint8_t*)key);
key = (uint8_t*)key+1;
}
s->kal = s->kll;

View File

@ -27,10 +27,11 @@
#include <avr/io.h>
#include <avr/pgmspace.h>
#include "camellia.h"
#include "uart.h"
#include "debug.h"
#include <util/delay.h>
#if 0
#include "uart.h"
#include "debug.h"
#include <util/delay.h>
#endif
/*****************************************************************************/
uint8_t rol(uint8_t a, uint8_t n){return ((a<<n) | (a>>(8-n)));}
@ -54,22 +55,22 @@ uint64_t rol64(uint64_t a, uint8_t n){
/*****************************************************************************/
uint8_t camellia_s1_table[256] PROGMEM = {
112, 130, 44, 236, 179, 39, 192, 229, 228, 133, 87, 53, 234, 12, 174, 65,
35, 239, 107, 147, 69, 25, 165, 33, 237, 14, 79, 78, 29, 101, 146, 189,
134, 184, 175, 143, 124, 235, 31, 206, 62, 48, 220, 95, 94, 197, 11, 26,
166, 225, 57, 202, 213, 71, 93, 61, 217, 1, 90, 214, 81, 86, 108, 77,
139, 13, 154, 102, 251, 204, 176, 45, 116, 18, 43, 32, 240, 177, 132, 153,
223, 76, 203, 194, 52, 126, 118, 5, 109, 183, 169, 49, 209, 23, 4, 215,
20, 88, 58, 97, 222, 27, 17, 28, 50, 15, 156, 22, 83, 24, 242, 34,
254, 68, 207, 178, 195, 181, 122, 145, 36, 8, 232, 168, 96, 252, 105, 80,
170, 208, 160, 125, 161, 137, 98, 151, 84, 91, 30, 149, 224, 255, 100, 210,
16, 196, 0, 72, 163, 247, 117, 219, 138, 3, 230, 218, 9, 63, 221, 148,
135, 92, 131, 2, 205, 74, 144, 51, 115, 103, 246, 243, 157, 127, 191, 226,
82, 155, 216, 38, 200, 55, 198, 59, 129, 150, 111, 75, 19, 190, 99, 46,
233, 121, 167, 140, 159, 110, 188, 142, 41, 245, 249, 182, 47, 253, 180, 89,
120, 152, 6, 106, 231, 70, 113, 186, 212, 37, 171, 66, 136, 162, 141, 250,
114, 7, 185, 85, 248, 238, 172, 10, 54, 73, 42, 104, 60, 56, 241, 164,
64, 40, 211, 123, 187, 201, 67, 193, 21, 227, 173, 244, 119, 199, 128, 158
112, 130, 44, 236, 179, 39, 192, 229, 228, 133, 87, 53, 234, 12, 174, 65,
35, 239, 107, 147, 69, 25, 165, 33, 237, 14, 79, 78, 29, 101, 146, 189,
134, 184, 175, 143, 124, 235, 31, 206, 62, 48, 220, 95, 94, 197, 11, 26,
166, 225, 57, 202, 213, 71, 93, 61, 217, 1, 90, 214, 81, 86, 108, 77,
139, 13, 154, 102, 251, 204, 176, 45, 116, 18, 43, 32, 240, 177, 132, 153,
223, 76, 203, 194, 52, 126, 118, 5, 109, 183, 169, 49, 209, 23, 4, 215,
20, 88, 58, 97, 222, 27, 17, 28, 50, 15, 156, 22, 83, 24, 242, 34,
254, 68, 207, 178, 195, 181, 122, 145, 36, 8, 232, 168, 96, 252, 105, 80,
170, 208, 160, 125, 161, 137, 98, 151, 84, 91, 30, 149, 224, 255, 100, 210,
16, 196, 0, 72, 163, 247, 117, 219, 138, 3, 230, 218, 9, 63, 221, 148,
135, 92, 131, 2, 205, 74, 144, 51, 115, 103, 246, 243, 157, 127, 191, 226,
82, 155, 216, 38, 200, 55, 198, 59, 129, 150, 111, 75, 19, 190, 99, 46,
233, 121, 167, 140, 159, 110, 188, 142, 41, 245, 249, 182, 47, 253, 180, 89,
120, 152, 6, 106, 231, 70, 113, 186, 212, 37, 171, 66, 136, 162, 141, 250,
114, 7, 185, 85, 248, 238, 172, 10, 54, 73, 42, 104, 60, 56, 241, 164,
64, 40, 211, 123, 187, 201, 67, 193, 21, 227, 173, 244, 119, 199, 128, 158
};
/*****************************************************************************/
@ -155,29 +156,24 @@ uint64_t camellia_p(uint64_t d){
uint64_t camellia_f(uint64_t x, uint64_t k){
uint64_t y;
y = camellia_p(camellia_s(x ^ k));
/*
uart_putstr("\r\nEfunc X=");
uart_hexdump(&(x), 8);
uart_putstr(" K=");
uart_hexdump(&(k), 8);
uart_putstr(" Y=");
uart_hexdump(&(y), 8);
*/
return y;
}
/*****************************************************************************/
uint64_t camellia_fl(uint64_t x, uint64_t k){
uint64_t lx[1], lk[1], y[1];
lx[0]=x; lk[0] = k;
// uint64_t lx, lk, y;
uint32_t lx[2], lk[2], yr, yl;
lx[0]=(uint32_t)x;
lx[1]=(uint32_t)(x>>32);
lk[0]=(uint32_t)k;
lk[1]=(uint32_t)(k>>32);
#define Y ((uint32_t*)y)
#define X ((uint32_t*)lx)
#define K ((uint32_t*)lk)
Y[0] = rol32((X[1]) & K[1] ,1) ^ (X[0]); /* Yr */
Y[1] = (Y[0] | K[0]) ^ (X[1]); /* Yl */
yr = rol32((X[1]) & (K[1]) ,1) ^ (X[0]); /* Yr */
yl = (yr | K[0]) ^ (X[1]); /* Yl */
/*
uart_putstr("\r\nFL(");
@ -190,15 +186,18 @@ uint64_t camellia_fl(uint64_t x, uint64_t k){
#undef K
#undef X
#undef Y
return y[0];
return (((uint64_t)yl)<<32 | yr);
}
/*****************************************************************************/
uint64_t camellia_fl_inv(uint64_t y, uint64_t k){
//volatile uint32_t xl, xr;
volatile uint64_t ly[1], lk[1], x[1];
ly[0]=y; lk[0] = k;
uint32_t ly[2], lk[2], x[2];
ly[0]=(uint32_t)y;
ly[1]=(uint32_t)(y>>32);
lk[0]=(uint32_t)k;
lk[1]=(uint32_t)(k>>32);
#define Y ((uint32_t*)ly)
#define X ((uint32_t*)x)
#define K ((uint32_t*)lk)
@ -216,7 +215,7 @@ uint64_t camellia_fl_inv(uint64_t y, uint64_t k){
#undef K
#undef X
#undef Y
return x[0];
return ((uint64_t)(x[1]))<<32 | x[0];
}
/*****************************************************************************/
@ -231,7 +230,7 @@ uint64_t camellia_sigma[6]={
};
/*****************************************************************************/
#if 0
void camellia128_ctx_dump(camellia128_ctx_t *s){
uart_putstr("\r\n==State Dump==");
uart_putstr("\n\rKAl: "); uart_hexdump(&(s->kal), 8);
@ -240,21 +239,23 @@ void camellia128_ctx_dump(camellia128_ctx_t *s){
uart_putstr("\n\rKLr: "); uart_hexdump(&(s->klr), 8);
return;
}
#endif
/*****************************************************************************/
void camellia128_init(const uint8_t* key, camellia128_ctx_t* s){
void camellia128_init(const void* key, camellia128_ctx_t* s){
uint8_t i;
s->kll = 0; //((uint64_t*)key)[0];
/* load the key, endian-adjusted, to kll,klr */
for(i=0; i<8; ++i){
s->kll <<= 8;
s->kll |= *key++;
s->kll |= *((uint8_t*)key);
key = (uint8_t*)key+1;
}
for(i=0; i<8; ++i){
s->klr <<= 8;
s->klr |= *key++;
s->klr |= *((uint8_t*)key);
key = (uint8_t*)key+1;
}
s->kal = s->kll;
@ -309,31 +310,31 @@ void camellia128_keyop_inv(camellia128_ctx_t* s, int8_t q){
#define SEL_KA 1
#define SEL_KL 0
#define KEY_POSTC1 0x00
#define KEY_POSTC2 0x01
#define KEY_INC2 0x02
#define KEY_POSTC1 0x00
#define KEY_POSTC2 0x01
#define KEY_INC2 0x02
#define KEY_DIR 0x04
#define KEY_DIR_NORM 0x00
#define KEY_DIR_INV 0x04
#define KEY_DIR 0x04
#define KEY_DIR_NORM 0x00
#define KEY_DIR_INV 0x04
#define KEY_AMMOUNT 0x08
#define KEY_ROL17 0x08
#define KEY_ROL15 0x00
#define KEY_AMMOUNT 0x08
#define KEY_ROL17 0x08
#define KEY_ROL15 0x00
void camellia_6rounds(const camellia128_ctx_t* s, uint64_t* bl, uint64_t* br, uint8_t roundop, uint8_t keychoice){
uint8_t i;
uint64_t* k[4];
k[0] = &(s->kll);
k[1] = &(s->klr);
k[2] = &(s->kal);
k[3] = &(s->kar);
k[0] = &(((camellia128_ctx_t*)s)->kll);
k[1] = &(((camellia128_ctx_t*)s)->klr);
k[2] = &(((camellia128_ctx_t*)s)->kal);
k[3] = &(((camellia128_ctx_t*)s)->kar);
for(i=0; i<3; ++i){ /* each cycle */
br[0] ^= camellia_f(bl[0],*(k[(keychoice&1)*2+((roundop&KEY_DIR)?1:0)]));
keychoice >>= 1;
if((i == 1) && (roundop&KEY_INC2)){
((roundop&KEY_DIR)?camellia128_keyop_inv:camellia128_keyop)(s,(roundop&KEY_AMMOUNT)?1:-1);
((roundop&KEY_DIR)?camellia128_keyop_inv:camellia128_keyop)(((camellia128_ctx_t*)s),(roundop&KEY_AMMOUNT)?1:-1);
}
bl[0] ^= camellia_f(br[0],*(k[(keychoice&1)*2+((roundop&KEY_DIR)?0:1)]));
@ -341,7 +342,7 @@ void camellia_6rounds(const camellia128_ctx_t* s, uint64_t* bl, uint64_t* br, ui
/* check if we should do some keyop */
if((i == (roundop&1)) && (!(roundop&KEY_INC2)) ){
((roundop&KEY_DIR)?camellia128_keyop_inv:camellia128_keyop)(s,(roundop&KEY_AMMOUNT)?1:-1);
((roundop&KEY_DIR)?camellia128_keyop_inv:camellia128_keyop)(((camellia128_ctx_t*)s),(roundop&KEY_AMMOUNT)?1:-1);
/* isn't it fuckin nice what we can do in C?! */
}
}
@ -349,6 +350,16 @@ void camellia_6rounds(const camellia128_ctx_t* s, uint64_t* bl, uint64_t* br, ui
/*****************************************************************************/
void change_endian(void* data, uint8_t length){
uint8_t i,a;
for(i=0; i<length/2; ++i){
a = ((uint8_t*)data)[i];
((uint8_t*)data)[i] = ((uint8_t*)data)[length-i-1];
((uint8_t*)data)[length-i-1] = a;
}
}
/*****************************************************************************/
void camellia128_enc(void* block, const camellia128_ctx_t* s){
@ -361,32 +372,15 @@ void camellia128_enc(void* block, const camellia128_ctx_t* s){
*/
uint64_t temp64;
temp64 = BL;
BL = temp64 >> 56 | temp64 << 56 /* swap the most out bytes (1 & 8) */
| (temp64 & (0xffLL<<48))>>(5*8) | (temp64 & (0xffLL<< 8))<<(5*8) /* 2 & 7 */
| (temp64 & (0xffLL<<40))>>(3*8) | (temp64 & (0xffLL<<16))<<(3*8) /* 3 & 6 */
| (temp64 & (0xffLL<<32))>>(1*8) | (temp64 & (0xffLL<<24))<<(1*8); /* 4 & 5 */
temp64 = BR;
BR = temp64 >> 56 | temp64 << 56 /* swap the most out bytes (1 & 8) */
| (temp64 & (0xffLL<<48))>>(5*8) | (temp64 & (0xffLL<< 8))<<(5*8) /* 2 & 7 */
| (temp64 & (0xffLL<<40))>>(3*8) | (temp64 & (0xffLL<<16))<<(3*8) /* 3 & 6 */
| (temp64 & (0xffLL<<32))>>(1*8) | (temp64 & (0xffLL<<24))<<(1*8); /* 4 & 5 */
change_endian(&BL, 64/8);
change_endian(&BR, 64/8);
/* Prewhitening */
BL ^= s->kll;
BR ^= s->klr;
/* the first 6 */
/*
BR ^= camellia_f(BL, s->kal);
BL ^= camellia_f(BR, s->kar);
camellia128_keyop(s, -1);
BR ^= camellia_f(BL, s->kll);
BL ^= camellia_f(BR, s->klr);
BR ^= camellia_f(BL, s->kal);
BL ^= camellia_f(BR, s->kar);
*/
camellia_6rounds(s, &BL, &BR, KEY_ROL15 | KEY_DIR_NORM | KEY_POSTC1 , 0x33);
/* FL injection */
camellia128_keyop((camellia128_ctx_t*)s, -1);
@ -394,14 +388,6 @@ void camellia128_enc(void* block, const camellia128_ctx_t* s){
BR = camellia_fl_inv(BR, s->kar);
camellia128_keyop((camellia128_ctx_t*)s, -1);
/* middle 6 */
/* BR ^= camellia_f(BL, s->kll);
BL ^= camellia_f(BR, s->klr);
BR ^= camellia_f(BL, s->kal);
camellia128_keyop(s, -1);
BL ^= camellia_f(BR, s->klr);
BR ^= camellia_f(BL, s->kal);
BL ^= camellia_f(BR, s->kar);
/*/
camellia_6rounds(s, &BL, &BR, KEY_ROL15 | KEY_DIR_NORM | KEY_INC2 , 0x34);
/* FL injection */
camellia128_keyop((camellia128_ctx_t*)s, 1);
@ -409,15 +395,6 @@ void camellia128_enc(void* block, const camellia128_ctx_t* s){
BR = camellia_fl_inv(BR, s->klr);
camellia128_keyop((camellia128_ctx_t*)s, 1);
/* last 6 */
/* BR ^= camellia_f(BL, s->kll);
BL ^= camellia_f(BR, s->klr);
BR ^= camellia_f(BL, s->kal);
BL ^= camellia_f(BR, s->kar);
camellia128_keyop(s, 1);
BR ^= camellia_f(BL, s->kll);
BL ^= camellia_f(BR, s->klr);
*/
camellia_6rounds(s, &BL, &BR, KEY_ROL17 | KEY_DIR_NORM | KEY_POSTC2 , 0x0C);
/* Postwhitening */
BR ^= s->kal;
@ -427,16 +404,10 @@ void camellia128_enc(void* block, const camellia128_ctx_t* s){
BR = BL;
BL = temp64;
camellia128_keyop((camellia128_ctx_t*)s,1);
BL = temp64 >> 56 | temp64 << 56 /* swap the most out bytes (1 & 8) */
| (temp64 & (0xffLL<<48))>>(5*8) | (temp64 & (0xffLL<< 8))<<(5*8) /* 2 & 7 */
| (temp64 & (0xffLL<<40))>>(3*8) | (temp64 & (0xffLL<<16))<<(3*8) /* 3 & 6 */
| (temp64 & (0xffLL<<32))>>(1*8) | (temp64 & (0xffLL<<24))<<(1*8); /* 4 & 5 */
temp64 = BR;
BR = temp64 >> 56 | temp64 << 56 /* swap the most out bytes (1 & 8) */
| (temp64 & (0xffLL<<48))>>(5*8) | (temp64 & (0xffLL<< 8))<<(5*8) /* 2 & 7 */
| (temp64 & (0xffLL<<40))>>(3*8) | (temp64 & (0xffLL<<16))<<(3*8) /* 3 & 6 */
| (temp64 & (0xffLL<<32))>>(1*8) | (temp64 & (0xffLL<<24))<<(1*8); /* 4 & 5 */
change_endian(&BL, 64/8);
change_endian(&BR, 64/8);
#undef BL
#undef BR
@ -455,67 +426,28 @@ void camellia128_dec(void* block, const camellia128_ctx_t* s){
*/
uint64_t temp64;
temp64 = BL;
BL = temp64 >> 56 | temp64 << 56 /* swap the most out bytes (1 & 8) */
| (temp64 & (0xffLL<<48))>>(5*8) | (temp64 & (0xffLL<< 8))<<(5*8) /* 2 & 7 */
| (temp64 & (0xffLL<<40))>>(3*8) | (temp64 & (0xffLL<<16))<<(3*8) /* 3 & 6 */
| (temp64 & (0xffLL<<32))>>(1*8) | (temp64 & (0xffLL<<24))<<(1*8); /* 4 & 5 */
temp64 = BR;
BR = temp64 >> 56 | temp64 << 56 /* swap the most out bytes (1 & 8) */
| (temp64 & (0xffLL<<48))>>(5*8) | (temp64 & (0xffLL<< 8))<<(5*8) /* 2 & 7 */
| (temp64 & (0xffLL<<40))>>(3*8) | (temp64 & (0xffLL<<16))<<(3*8) /* 3 & 6 */
| (temp64 & (0xffLL<<32))>>(1*8) | (temp64 & (0xffLL<<24))<<(1*8); /* 4 & 5 */
change_endian(&BL, 64/8);
change_endian(&BR, 64/8);
camellia128_keyop_inv((camellia128_ctx_t*)s, 1);
/* Prewhitening */
BR ^= s->kal; /* kw3 */
BL ^= s->kar; /* kw4 */
/* the first 6 */
/*
BL ^= camellia_f(BR, s->klr); /* k18 * /
BR ^= camellia_f(BL, s->kll); /* k17 * /
camellia128_keyop_inv(s, 1);
BL ^= camellia_f(BR, s->kar);
BR ^= camellia_f(BL, s->kal);
BL ^= camellia_f(BR, s->klr);
BR ^= camellia_f(BL, s->kll);
*/
camellia_6rounds(s, &BR, &BL, KEY_ROL17 | KEY_DIR_INV | KEY_POSTC1 , 0x0C);
/* FL injection */
camellia128_keyop_inv((camellia128_ctx_t*)s, 1);
BR = camellia_fl(BR, s->klr);
BL = camellia_fl_inv(BL, s->kll);
camellia128_keyop_inv((camellia128_ctx_t*)s, 1);
/* middle 6 */
/* BL ^= camellia_f(BR, s->kar);
BR ^= camellia_f(BL, s->kal);
BL ^= camellia_f(BR, s->klr);
camellia128_keyop_inv(s, -1);
BR ^= camellia_f(BL, s->kal);
BL ^= camellia_f(BR, s->klr);
BR ^= camellia_f(BL, s->kll);
*/
camellia_6rounds(s, &BR, &BL, KEY_ROL15 | KEY_DIR_INV | KEY_INC2 , 0x0B);
/* FL injection */
camellia128_keyop_inv(s, -1);
camellia128_keyop_inv((camellia128_ctx_t*)s, -1);
BR = camellia_fl(BR, s->kar);
BL = camellia_fl_inv(BL, s->kal);
camellia128_keyop_inv((camellia128_ctx_t*)s, -1);
/* last 6 */
/*
BL ^= camellia_f(BR, s->kar);
BR ^= camellia_f(BL, s->kal);
BL ^= camellia_f(BR, s->klr);
BR ^= camellia_f(BL, s->kll);
camellia128_keyop_inv(s, -1);
BL ^= camellia_f(BR, s->kar);
BR ^= camellia_f(BL, s->kal);
/*/
camellia_6rounds(s, &BR, &BL, KEY_ROL15 | KEY_DIR_INV | KEY_POSTC2 , 0x33);
/* Postwhitening */
@ -525,20 +457,14 @@ void camellia128_dec(void* block, const camellia128_ctx_t* s){
temp64 = BR;
BR = BL;
BL = temp64;
BL = temp64 >> 56 | temp64 << 56 /* swap the most out bytes (1 & 8) */
| (temp64 & (0xffLL<<48))>>(5*8) | (temp64 & (0xffLL<< 8))<<(5*8) /* 2 & 7 */
| (temp64 & (0xffLL<<40))>>(3*8) | (temp64 & (0xffLL<<16))<<(3*8) /* 3 & 6 */
| (temp64 & (0xffLL<<32))>>(1*8) | (temp64 & (0xffLL<<24))<<(1*8); /* 4 & 5 */
temp64 = BR;
BR = temp64 >> 56 | temp64 << 56 /* swap the most out bytes (1 & 8) */
| (temp64 & (0xffLL<<48))>>(5*8) | (temp64 & (0xffLL<< 8))<<(5*8) /* 2 & 7 */
| (temp64 & (0xffLL<<40))>>(3*8) | (temp64 & (0xffLL<<16))<<(3*8) /* 3 & 6 */
| (temp64 & (0xffLL<<32))>>(1*8) | (temp64 & (0xffLL<<24))<<(1*8); /* 4 & 5 */
change_endian(&BL, 64/8);
change_endian(&BR, 64/8);
}
/*****************************************************************************/
/*****************************************************************************/

View File

@ -8,5 +8,5 @@ $(ALGO_NAME)_OBJ := A5_1.o
$(ALGO_NAME)_TEST_BIN := main-a5_1-test.o debug.o uart.o serial-tools.o \
nessie_stream_test.o nessie_common.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -9,5 +9,5 @@ $(ALGO_NAME)_TEST_BIN := main-arcfour-test.o debug.o uart.o serial-tools.o \
nessie_stream_test.o nessie_common.o cli.o \
performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -9,5 +9,5 @@ $(ALGO_NAME)_TEST_BIN := main-arcfour-test.o debug.o uart.o serial-tools.o \
nessie_stream_test.o nessie_common.o cli.o \
performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -4,10 +4,10 @@ ALGO_NAME := CAMELLIA
# comment out the following line for removement of Camellia from the build process
BLOCK_CIPHERS += $(ALGO_NAME)
$(ALGO_NAME)_OBJ := camellia.o camellia-asm.o
$(ALGO_NAME)_OBJ := camellia128-stub.o camellia-asm.o
$(ALGO_NAME)_TEST_BIN := main-camellia-test.o debug.o uart.o serial-tools.o \
nessie_bc_test.o \
nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -8,5 +8,5 @@ $(ALGO_NAME)_OBJ := cast5.o
$(ALGO_NAME)_TEST_BIN := main-cast5-test.o debug.o uart.o serial-tools.o cli.o\
nessie_bc_test.o nessie_common.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -8,5 +8,5 @@ $(ALGO_NAME)_OBJ := des.o
$(ALGO_NAME)_TEST_BIN := main-des-test.o debug.o uart.o serial-tools.o \
nessie_bc_test.o nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -9,5 +9,5 @@ $(ALGO_NAME)_TEST_BIN := main-entropium-test.o debug.o uart.o serial-tools.o \
cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -9,5 +9,5 @@ $(ALGO_NAME)_TEST_BIN := main-grain-test.o debug.o uart.o serial-tools.o \
nessie_stream_test.o nessie_common.o cli.o \
performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -8,5 +8,5 @@ $(ALGO_NAME)_OBJ := hmac-sha1.o sha1-asm.o
$(ALGO_NAME)_TEST_BIN := main-hmac-sha1-test.o debug.o uart.o serial-tools.o cli.o \
nessie_mac_test.o nessie_common.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -8,5 +8,5 @@ $(ALGO_NAME)_OBJ := hmac-sha256.o sha256-asm.o
$(ALGO_NAME)_TEST_BIN := main-hmac-sha256-test.o debug.o uart.o serial-tools.o \
nessie_mac_test.o nessie_common.o cli.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -8,5 +8,5 @@ $(ALGO_NAME)_OBJ := md5.o
$(ALGO_NAME)_TEST_BIN := main-md5-test.o debug.o uart.o serial-tools.o \
nessie_hash_test.o nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -9,5 +9,5 @@ $(ALGO_NAME)_OBJ := noekeon_asm.o
$(ALGO_NAME)_TEST_BIN := main-noekeon-test.o debug.o uart.o serial-tools.o \
nessie_bc_test.o nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := test nessie
$(ALGO_NAME)_PEROFRMANCE_TEST := performance
$(ALGO_NAME)_PERFORMANCE_TEST := performance

View File

@ -9,5 +9,5 @@ $(ALGO_NAME)_OBJ := noekeon.o
$(ALGO_NAME)_TEST_BIN := main-noekeon-test.o debug.o uart.o serial-tools.o \
nessie_bc_test.o nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := test nessie
$(ALGO_NAME)_PEROFRMANCE_TEST := performance
$(ALGO_NAME)_PERFORMANCE_TEST := performance

View File

@ -9,5 +9,5 @@ $(ALGO_NAME)_OBJ := present.o
$(ALGO_NAME)_TEST_BIN := main-present-test.o debug.o uart.o serial-tools.o \
nessie_bc_test.o nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -10,5 +10,5 @@ $(ALGO_NAME)_TEST_BIN := main-rc5-test.o debug.o uart.o serial-tools.o \
nessie_bc_test.o \
nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := test nessie
$(ALGO_NAME)_PEROFRMANCE_TEST := performance
$(ALGO_NAME)_PERFORMANCE_TEST := performance

View File

@ -9,5 +9,5 @@ $(ALGO_NAME)_OBJ := rc6.o
$(ALGO_NAME)_TEST_BIN := main-rc6-test.o debug.o uart.o serial-tools.o \
nessie_bc_test.o nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := test nessie
$(ALGO_NAME)_PEROFRMANCE_TEST := performance
$(ALGO_NAME)_PERFORMANCE_TEST := performance

View File

@ -9,5 +9,5 @@ $(ALGO_NAME)_TEST_BIN := main-seed-test.o debug.o uart.o serial-tools.o \
nessie_bc_test.o nessie_common.o \
cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -9,5 +9,5 @@ $(ALGO_NAME)_OBJ := serpent-asm.o serpent-sboxes-bitslice.o memxor.o
$(ALGO_NAME)_TEST_BIN := main-serpent-test.o debug.o uart.o serial-tools.o \
nessie_bc_test.o nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -9,5 +9,5 @@ $(ALGO_NAME)_OBJ := serpent-asm.o serpent-sboxes-fast.o memxor.o
$(ALGO_NAME)_TEST_BIN := main-serpent-test.o debug.o uart.o serial-tools.o \
nessie_bc_test.o nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -9,5 +9,5 @@ $(ALGO_NAME)_OBJ := serpent-asm.o serpent-sboxes-small.o memxor.o
$(ALGO_NAME)_TEST_BIN := main-serpent-test.o debug.o uart.o serial-tools.o \
nessie_bc_test.o nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -9,5 +9,5 @@ $(ALGO_NAME)_OBJ := serpent.o serpent-sboxes_c.o memxor.o
$(ALGO_NAME)_TEST_BIN := main-serpent-test.o debug.o uart.o serial-tools.o \
nessie_bc_test.o nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -8,5 +8,5 @@ $(ALGO_NAME)_OBJ := sha1-asm.o
$(ALGO_NAME)_TEST_BIN := main-sha1-test.o debug.o uart.o serial-tools.o \
nessie_hash_test.o nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -9,5 +9,5 @@ $(ALGO_NAME)_TEST_BIN := main-sha1-test.o debug.o uart.o serial-tools.o \
nessie_hash_test.o nessie_common.o cli.o \
performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -8,5 +8,5 @@ $(ALGO_NAME)_OBJ := sha256-asm.o
$(ALGO_NAME)_TEST_BIN := main-sha256-test.o debug.o uart.o serial-tools.o \
nessie_hash_test.o nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -8,5 +8,5 @@ $(ALGO_NAME)_OBJ := sha256.o
$(ALGO_NAME)_TEST_BIN := main-sha256-test.o debug.o uart.o serial-tools.o \
nessie_hash_test.o nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -8,5 +8,5 @@ $(ALGO_NAME)_OBJ := shabea.o sha256-asm.o memxor.o
$(ALGO_NAME)_TEST_BIN := main-shabea-test.o debug.o uart.o serial-tools.o \
nessie_bc_test.o nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -9,5 +9,5 @@ $(ALGO_NAME)_OBJ := shacal1_enc.o sha1-asm.o
$(ALGO_NAME)_TEST_BIN := main-shacal1_enc-test.o debug.o uart.o serial-tools.o \
nessie_bc_test.o nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -9,5 +9,5 @@ $(ALGO_NAME)_OBJ := shacal2_enc.o sha256-asm.o
$(ALGO_NAME)_TEST_BIN := main-shacal2_enc-test.o debug.o uart.o serial-tools.o \
nessie_bc_test.o nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -9,5 +9,5 @@ $(ALGO_NAME)_TEST_BIN := main-skipjack-test.o debug.o uart.o serial-tools.o \
nessie_bc_test.o nessie_common.o cli.o \
performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -8,5 +8,5 @@ $(ALGO_NAME)_OBJ := des.o
$(ALGO_NAME)_TEST_BIN := main-tdes-test.o debug.o uart.o serial-tools.o \
nessie_bc_test.o nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -9,5 +9,5 @@ $(ALGO_NAME)_TEST_BIN := main-trivium-test.o debug.o uart.o serial-tools.o \
nessie_stream_test.o nessie_common.o cli.o \
performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -8,5 +8,5 @@ $(ALGO_NAME)_OBJ := xtea-asm.o
$(ALGO_NAME)_TEST_BIN := main-xtea-test.o debug.o uart.o serial-tools.o \
nessie_bc_test.o nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -8,5 +8,5 @@ $(ALGO_NAME)_OBJ := xtea.o
$(ALGO_NAME)_TEST_BIN := main-xtea-test.o debug.o uart.o serial-tools.o \
nessie_bc_test.o nessie_common.o cli.o performance_test.o
$(ALGO_NAME)_NESSIE_TEST := "nessie"
$(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
$(ALGO_NAME)_PERFORMANCE_TEST := "performance"

View File

@ -115,15 +115,15 @@ void testrun_camellia(void){
0x89, 0xab, 0xcd, 0xef,
0xfe, 0xdc, 0xba, 0x98,
0x76, 0x54, 0x32, 0x10 };
/*
uint8_t data[16] = {
0x10, 0x32, 0x54, 0x76,
0x98, 0xba, 0xdc, 0xfe,
0xfe, 0xcd, 0xab, 0x89
0x67, 0x89, 0x67, 0x01};
*/
uint8_t key[16] = { 0x01, 0x23, 0x45, 0x67,
0x89, 0xab, 0xcd, 0xef,
0xfe, 0xdc, 0xba, 0x98,
0x76, 0x54, 0x32, 0x10 };
camellia128_ctx_t ctx;
camellia128_init(data, &ctx);
camellia128_init(key, &ctx);
uart_putstr_P(PSTR("\r\n key: "));
uart_hexdump(data, 16);
uart_putstr_P(PSTR("\r\n plaintext: "));
@ -131,6 +131,9 @@ void testrun_camellia(void){
camellia128_enc(data, &ctx);
uart_putstr_P(PSTR("\r\n ciphertext: "));
uart_hexdump(data, 16);
camellia128_dec(data, &ctx);
uart_putstr_P(PSTR("\r\n decrypted: "));
uart_hexdump(data, 16);
}