/* khazad.c */
/*
This file is part of the AVR-Crypto-Lib.
- Copyright (C) 2006-2011 Daniel Otte (daniel.otte@rub.de)
+ Copyright (C) 2006-2015 Daniel Otte (bg@nerilex.org)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
9x Ex 5x 6x Ax 2x 3x Cx Fx 0x 4x Dx 7x Bx 1x 8x
*/
-static uint8_t pq_lut[16] PROGMEM = {
+static const uint8_t pq_lut[16] PROGMEM = {
0x39, 0xFE, 0xE5, 0x06, 0x5A, 0x42, 0xB3, 0xCC,
0xDF, 0xA0, 0x94, 0x6D, 0x77, 0x8B, 0x21, 0x18
};
return b|c;
}
-static void gamma(uint8_t* a){
+static void gamma_1(uint8_t *a){
uint8_t i;
for(i=0; i<8; ++i){
*a = khazad_sbox(*a);
* 07x 0Bx 08x 06x 05x 04x 03x 01x
*/
-static uint8_t h[8][4] PROGMEM = {
+static const uint8_t h[8][4] PROGMEM = {
{ 0x13, 0x45, 0x68, 0xB7 },
{ 0x31, 0x54, 0x86, 0x7B },
{ 0x45, 0x13, 0xB7, 0x68 },
{ 0x7B, 0x86, 0x54, 0x31 }
};
-static void theta(uint8_t* a){
+static void theta(uint8_t *a){
uint8_t i,j,x,accu;
uint8_t c[8];
uint8_t *hp;
/******************************************************************************/
-static void khazad_round(uint8_t* a, const uint8_t* k){
- gamma(a);
+static void khazad_round(uint8_t *a, const uint8_t *k){
+ gamma_1(a);
theta(a);
memxor(a, k, 8);
}
/******************************************************************************/
-void khazad_init(const void* key, khazad_ctx_t* ctx){
+void khazad_init(const void *key, khazad_ctx_t *ctx){
uint8_t c[8];
uint8_t i,r=0;
for(i=0; i<8; ++i){
/******************************************************************************/
-void khazad_enc(void* buffer, const khazad_ctx_t* ctx){
+void khazad_enc(void *buffer, const khazad_ctx_t *ctx){
uint8_t r;
memxor(buffer, ctx->k[0], 8);
for(r=1; r<8; ++r){
khazad_round(buffer, ctx->k[r]);
}
- gamma(buffer);
+ gamma_1(buffer);
memxor(buffer, ctx->k[8], 8);
}
/******************************************************************************/
-void khazad_dec(void* buffer, const khazad_ctx_t* ctx){
+void khazad_dec(void *buffer, const khazad_ctx_t *ctx){
uint8_t r=7;
memxor(buffer, ctx->k[8], 8);
- gamma(buffer);
+ gamma_1(buffer);
do{
memxor(buffer, ctx->k[r--], 8);
theta(buffer);
- gamma(buffer);
+ gamma_1(buffer);
}while(r);
memxor(buffer, ctx->k[0], 8);
}