#define SIGMA(p) (( ((uint64_t)(pgm_read_dword((prog_uint32_t*)camellia_sigma+2*(p)+1)))<<32) | \
((uint64_t)(pgm_read_dword((prog_uint32_t*)camellia_sigma+2*(p)+0))) )
*/
-#define SIGMA(p) (( ((uint64_t)(pgm_read_dword(((prog_uint32_t*)camellia_sigma)[2*(p)+1])))<<32) | \
- ((uint64_t)(pgm_read_dword(((prog_uint32_t*)camellia_sigma)[2*(p)+0]))) )
+#define SIGMA(p) (( ((uint64_t)(pgm_read_dword(&(((prog_uint32_t*)camellia_sigma)[2*(p)+1]))))<<32) | \
+ ((uint64_t)(pgm_read_dword(&(((prog_uint32_t*)camellia_sigma)[2*(p)+0])))) )
/*****************************************************************************/
/* extern prog_uint64_t camellia_sigma[6]; */
-void camellia128_init(uint8_t* key, camellia128_ctx_t* s){
+void camellia128_init(const uint8_t* key, camellia128_ctx_t* s){
uint8_t i;
s->kll = 0; /* ((uint64_t*)key)[0]; */
/*****************************************************************************/
void camellia128_keyop(camellia128_ctx_t* s, int8_t q);
/*****************************************************************************/
-void camellia128_keyop_inv(camellia128_ctx_t* s, int8_t q);
+void camellia128_keyop_inv(camellia128_ctx_t* s, int8_t q);
/*****************************************************************************/
#define SEL_KA 1
#define KEY_ROL17 0x08
#define KEY_ROL15 0x00
-void camellia_6rounds(camellia128_ctx_t* s, uint64_t* bl, uint64_t* br,
+void camellia_6rounds(const camellia128_ctx_t* s, uint64_t* bl, uint64_t* br,
uint8_t roundop, uint8_t keychoice);
/*****************************************************************************/
-void camellia128_enc(void* block, camellia128_ctx_t* s){
+void camellia128_enc(void* block, const camellia128_ctx_t* s){
#define BL (((uint64_t*)block)[0])
#define BR (((uint64_t*)block)[1])
/* the first 6 */
camellia_6rounds(s, &BL, &BR, KEY_ROL15 | KEY_DIR_NORM | KEY_POSTC1 , 0x33);
/* FL injection */
- camellia128_keyop(s, -1);
+ camellia128_keyop((camellia128_ctx_t*)s, -1);
BL = camellia_fl(BL, s->kal);
BR = camellia_fl_inv(BR, s->kar);
- camellia128_keyop(s, -1);
+ camellia128_keyop((camellia128_ctx_t*)s, -1);
/* middle 6 */
camellia_6rounds(s, &BL, &BR, KEY_ROL15 | KEY_DIR_NORM | KEY_INC2 , 0x34);
/* FL injection */
- camellia128_keyop(s, 1);
+ camellia128_keyop((camellia128_ctx_t*)s, 1);
BL = camellia_fl(BL, s->kll);
BR = camellia_fl_inv(BR, s->klr);
- camellia128_keyop(s, 1);
+ camellia128_keyop((camellia128_ctx_t*)s, 1);
/* last 6 */
camellia_6rounds(s, &BL, &BR, KEY_ROL17 | KEY_DIR_NORM | KEY_POSTC2 , 0x0C);
/* Postwhitening */
BR = BL;
BL = temp64;
- camellia128_keyop(s,1);
+ camellia128_keyop((camellia128_ctx_t*)s,1);
change_endian(&BL, 64/8);
change_endian(&BR, 64/8);
/*****************************************************************************/
-void camellia128_dec(void* block, camellia128_ctx_t* s){
+void camellia128_dec(void* block, const camellia128_ctx_t* s){
#define BL (((uint64_t*)block)[1])
#define BR (((uint64_t*)block)[0])
/* endian adjustment */
/*BL*/
- /* 1 2 3 4 5 6 7 8
- * 8 7 6 5 4 3 2 1
+ /* 1 2 3 4 5 6 7 8
+ * 8 7 6 5 4 3 2 1
*/
uint64_t temp64;
change_endian(&BL, 64/8);
change_endian(&BR, 64/8);
- camellia128_keyop_inv(s, 1);
+ camellia128_keyop_inv((camellia128_ctx_t*)s, 1);
/* Prewhitening */
BR ^= s->kal; /* kw3 */
BL ^= s->kar; /* kw4 */
/* the first 6 */
camellia_6rounds(s, &BR, &BL, KEY_ROL17 | KEY_DIR_INV | KEY_POSTC1 , 0x0C);
/* FL injection */
- camellia128_keyop_inv(s, 1);
+ camellia128_keyop_inv((camellia128_ctx_t*)s, 1);
BR = camellia_fl(BR, s->klr);
BL = camellia_fl_inv(BL, s->kll);
- camellia128_keyop_inv(s, 1);
+ camellia128_keyop_inv((camellia128_ctx_t*)s, 1);
/* middle 6 */
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(s, -1);
+ camellia128_keyop_inv((camellia128_ctx_t*)s, -1);
/* last 6 */
camellia_6rounds(s, &BR, &BL, KEY_ROL15 | KEY_DIR_INV | KEY_POSTC2 , 0x33);