X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=grain%2Fgrain.c;h=ff6b97de41b46b689c211635d0d9613d557bca36;hb=701cee0d98aab48dd3192c8cc7c77eb42581bc56;hp=8d30d2266299a367a2f5891daa0220f58642fe2d;hpb=d32eba56ce10ea6b9eff123b50d9842673b38f2b;p=avr-crypto-lib.git diff --git a/grain/grain.c b/grain/grain.c index 8d30d22..ff6b97d 100644 --- a/grain/grain.c +++ b/grain/grain.c @@ -40,10 +40,10 @@ #define _B(i) (((ctx->nfsr[9-((i)/8)])>>(7-((i)%8)))&1) -uint8_t h_lut[4] PROGMEM = {0x4C, 0xB6, 0xD3, 0x26}; +const uint8_t h_lut[4] PROGMEM = {0x4C, 0xB6, 0xD3, 0x26}; #ifdef GRAIN_BADOPTIMISATION -uint8_t g_lut[128] PROGMEM = { +const uint8_t g_lut[128] PROGMEM = { 0xF0, 0xA5, 0x0F, 0x5A, 0x0F, 0x5A, 0xF0, 0xA5, 0x0F, 0x5A, 0xF0, 0xA5, 0xF0, 0x5A, 0x0F, 0x0F, 0xC3, 0x96, 0x3C, 0x69, 0x3C, 0x69, 0xC3, 0x96, 0x9C, 0xC9, 0x63, 0x36, 0x63, 0xC9, 0x9C, 0x9C, 0x0F, 0x5A, 0x0F, 0x5A, 0xF0, 0xA5, 0xF0, 0x5A, 0xF0, 0xA5, 0xF0, 0xA5, 0x0F, 0xA5, 0x0F, 0xF0, @@ -134,7 +134,17 @@ uint8_t grain_enc(grain_ctx_t* ctx){ h = (pgm_read_byte(h_lut+(i/8)))>>(i%8); h ^= B(0) ^ B(1) ^ B(3) ^ B(9) ^ B(30) ^ B(42) ^ B(55); - return h&1; + return (h&1); +} + +uint8_t grain_getbyte(grain_ctx_t* ctx){ + uint8_t i=0; + uint8_t r=0; + do{ + r >>= 1; + r |= grain_enc(ctx)?0x80:0x00; + }while(++i<8); + return r; } #ifdef GRAIN_REVERSEKEY