8 #include <botan/wid_wake.h>     9 #include <botan/loadstor.h>    10 #include <botan/internal/xor_buf.h>    19    while(length >= buffer.
size() - position)
    21       xor_buf(out, in, &buffer[position], buffer.
size() - position);
    22       length -= (buffer.
size() - position);
    23       in += (buffer.
size() - position);
    24       out += (buffer.
size() - position);
    25       generate(buffer.
size());
    27    xor_buf(out, in, &buffer[position], length);
    34 void WiderWake_41_BE::generate(
size_t length)
    37           R2 = state[2], 
R3 = state[3],
    40    for(
size_t i = 0; i != length; i += 8)
    46       R0a = R4 + 
R3; R3 += 
R2; R2 += 
R1; R1 += 
R0;
    47       R0a = (R0a >> 8) ^ T[(R0a & 0xFF)];
    48       R1  = (R1  >> 8) ^ T[(R1  & 0xFF)];
    49       R2  = (R2  >> 8) ^ T[(R2  & 0xFF)];
    50       R3  = (R3  >> 8) ^ T[(R3  & 0xFF)];
    55       R0a = R4 + 
R3; R3 += 
R2; R2 += 
R1; R1 += 
R0;
    56       R0a = (R0a >> 8) ^ T[(R0a & 0xFF)];
    57       R1  = (R1  >> 8) ^ T[(R1  & 0xFF)];
    58       R2  = (R2  >> 8) ^ T[(R2  & 0xFF)];
    59       R3  = (R3  >> 8) ^ T[(R3  & 0xFF)];
    75 void WiderWake_41_BE::key_schedule(
const byte key[], 
size_t)
    77    for(
size_t i = 0; i != 4; ++i)
    80    static const u32bit MAGIC[8] = {
    81       0x726A8F3B, 0xE69A3B5C, 0xD3C71FE5, 0xAB3C73D2,
    82       0x4D3A8EB3, 0x0396D6E8, 0x3D4C2F7A, 0x9EE27CF3 };
    84    for(
size_t i = 0; i != 4; ++i)
    87    for(
size_t i = 4; i != 256; ++i)
    89       u32bit X = T[i-1] + T[i-4];
    90       T[i] = (X >> 3) ^ MAGIC[X % 8];
    93    for(
size_t i = 0; i != 23; ++i)
    97    u32bit Z = (T[59] | 0x01000001) & 0xFF7FFFFF;
    98    for(
size_t i = 0; i != 256; ++i)
   100       X = (X & 0xFF7FFFFF) + Z;
   101       T[i] = (T[i] & 0x00FFFFFF) ^ X;
   104    X = (T[X & 0xFF] ^ X) & 0xFF;
   107    for(
size_t i = 1; i != 256; ++i)
   110       X = (T[i ^ X] ^ X) & 0xFF;
   117    const byte ZEROS[8] = { 0 };
   118    set_iv(ZEROS, 
sizeof(ZEROS));
   129    for(
size_t i = 0; i != 4; ++i)
   133    state[0] ^= state[4];
   137    generate(buffer.
size());
 
void cipher(const byte[], byte[], size_t)
void set_iv(const byte[], size_t)
u32bit load_be< u32bit >(const byte in[], size_t off)
bool valid_iv_length(size_t iv_len) const
void store_be(u16bit in, byte out[2])
void xor_buf(byte out[], const byte in[], size_t length)
void zeroise(MemoryRegion< T > &vec)