/* KonTyps2.h */ /* Copyright (C) 2002, 2003, 2004 by J. David Sexton. All rights reserved. */ /* This header file contains type definitions for Konton2. */ #ifndef KonTypes_H #define KonTypes_H #include#if (UCHAR_MAX == 0xFF) typedef unsigned char Kon1ByteInt; #else #error "Kon1ByteInt must be unsigned and 1 byte (8 bits) long." #endif #if (USHRT_MAX == 0xFFFFFFFF) typedef unsigned short Kon4ByteInt; #elif (ULONG_MAX == 0xFFFFFFFF) typedef unsigned long Kon4ByteInt; #elif (UINT_MAX == 0xFFFFFFFF) typedef unsigned int Kon4ByteInt; #elif (ULONG_MAX > 0xFFFFFFFF) typedef unsigned long Kon4ByteInt; /* 4 bytes is more efficient. */ #define KON4BYTEINT_MORE_THAN_4BYTES #else #error "Kon4ByteInt must be unsigned and at least 4 bytes (32 bits) long." #endif /* Note that the #ifndef directive allows KONCRYPTSTRENGTH to be a predefined macro. */ #ifndef KONCRYPTSTRENGTH #define KONCRYPTSTRENGTH 4 #endif #if (KONCRYPTSTRENGTH != 1 && KONCRYPTSTRENGTH != 2 && KONCRYPTSTRENGTH != 3 && \ KONCRYPTSTRENGTH != 4 && KONCRYPTSTRENGTH != 5 && KONCRYPTSTRENGTH != 6 && \ KONCRYPTSTRENGTH != 7 && KONCRYPTSTRENGTH != 8) #error "The value of KONCRYPTSTRENGTH must be 1, 2, 3, 4, 5, 6, 7, or 8." #endif enum {kKonCryptKeyLength = KONCRYPTSTRENGTH * 32, kKonStateLength = kKonCryptKeyLength / 4}; typedef struct {Kon1ByteInt cryptKey [kKonCryptKeyLength]; Kon4ByteInt stateData [kKonStateLength]; Kon4ByteInt lastPRN; Kon1ByteInt lastRot;} KonEnvStruct; #endif