#ifndef CRYPT_RAND_KEY_H
#define CRYPT_RAND_KEY_H
#include "crypt/sha1.h"
#include "base/dblock.h"
#include "crypt/blowfish.h"
#define RANDOM_KEY_LENGTH 20 //XTEA_KEY_LENGTH
#define RANDOM_KEY_BLOCK_LENGTH BLOWFISH_BLOCK_LENGTH//XTEA_BLOCK_LENGTH
#define RANDOM_KEY_PG 10 //maximum outputs before the generator key is changed
typedef struct RandomKey {
Sha1Contex Sha1;
DataBlock *key;
DataBlock *output;
DataBlock *counter;
BlowfishContext *blowfish;
int outputoffset;
int outputcounter;
} RandomKey;
RandomKey *randomkeyMake(void);
void randomkeyMakeKey(RandomKey *rk, DataBlock *seed);
void randomkeyRekey(RandomKey *rk);
void randomkeyCounterIncrement(RandomKey *rk);
void randomkeyGateKey(RandomKey *rk);
void randomkeyGenerateOutput(RandomKey *rk);
void randomkeyGetBuffer(RandomKey *rk, uint8 *buffer, int length);
#endif //CRYPT_RAND_KEY_H
syntax highlighted by Code2HTML, v. 0.9.1