Annotation of pgp/src/basslib.h, revision 1.1

1.1     ! root        1: /*     basslib.h - include file for BassOmatic encipherment functions.
        !             2: 
        !             3:        (c) Copyright 1988 by Philip Zimmermann.  All rights reserved.  
        !             4:        This software may not be copied without the written permission of 
        !             5:        Philip Zimmermann.  The author assumes no liability for damages
        !             6:        resulting from the use of this software, even if the damage results
        !             7:        from defects in this software.  No warranty is expressed or implied.
        !             8: */
        !             9: 
        !            10: /* Elaborate protection mechanisms to assure no redefinitions of types...*/
        !            11: #ifndef BOOLSTUFF
        !            12: #define BOOLSTUFF
        !            13: #ifndef TRUE
        !            14: #define FALSE 0
        !            15: #define TRUE (!FALSE)
        !            16: #endif /* if TRUE not already defined */
        !            17: typedef unsigned char boolean; /* values are TRUE or FALSE */
        !            18: #endif /* if BOOLSTUFF not already defined */
        !            19: #ifndef BYTESTUFF
        !            20: #define BYTESTUFF
        !            21: typedef unsigned char byte;    /* values are 0-255 */
        !            22: typedef byte *byteptr; /* pointer to byte */
        !            23: typedef char *string;  /* pointer to ASCII character string */
        !            24: #endif /* if BYTESTUFF not already defined */
        !            25: #ifndef WORDSTUFF
        !            26: #define WORDSTUFF
        !            27: typedef unsigned short word16; /* values are 0-65536 */
        !            28: typedef unsigned long word32;  /* values are 0-4294967296 */
        !            29: #endif /* if WORDSTUFF not already defined */
        !            30: #ifndef min    /* if min macro not already defined */
        !            31: #define min(a,b) ( (a)<(b) ? (a) : (b) )
        !            32: #define max(a,b) ( (a)>(b) ? (a) : (b) )
        !            33: #endif /* if min macro not already defined */
        !            34: 
        !            35: 
        !            36: #define MAXKEYLEN 254  /* max byte length of BassOmatic key */
        !            37: 
        !            38: #define NTABLES 8              /* number of random permutation vectors */
        !            39: 
        !            40: typedef struct {
        !            41:        boolean initialized;    /* determines whether key context is defined */
        !            42:        byteptr tlist[NTABLES]; /* list of permutation table pointers */
        !            43:        byte    bitmasks[NTABLES]; /* bitshredder bitmasks with 50% bits set */
        !            44:        byteptr iv; /* CFB Initialization Vector used by initcfb and basscfb */
        !            45:        boolean cfbuncryp;      /* TRUE means decrypting (in CFB mode) */
        !            46:        boolean uncryp;         /* TRUE means decrypting (in ECB mode) */
        !            47: /* The following parameters are computed from the key control byte...*/
        !            48:        char    nrounds;        /* specifies number of rounds thru BassOmatic */
        !            49:        boolean hardrand;       /* means regenerate tables with BassOmatic */
        !            50:        boolean shred8ways;     /* means use 8-way bit shredding */
        !            51:        boolean rerand;         /* means replenish tables with every block */
        !            52:        byteptr lfsr;           /* Linear Feedback Shift Register */
        !            53:        byte    rtail;          /* rtail is an index into LFSR buffer */
        !            54:        } KEYCONTEXT;
        !            55: 
        !            56: 
        !            57: /*
        !            58: **     initbassrand - initialize bassrand, BassOmatic random number generator.
        !            59: **             Must close via closebass().
        !            60: */
        !            61: void initbassrand(byteptr key, short keylen, byteptr seed, short seedlen);
        !            62: 
        !            63: 
        !            64: /*
        !            65: **     bassrand - BassOmatic pseudo-random number generator.
        !            66: */
        !            67: byte bassrand(void);
        !            68: 
        !            69: 
        !            70: /*
        !            71: **     bass_save - saves BassOmatic key context in context structure.
        !            72: */
        !            73: void bass_save(KEYCONTEXT *context);
        !            74: 
        !            75: 
        !            76: /*
        !            77: **     bass_restore - restore BassOmatic key context from context structure.
        !            78: */
        !            79: void bass_restore(KEYCONTEXT *context);
        !            80: 
        !            81: 
        !            82: /*
        !            83: **     closebass - end the current BassOmatic key context, freeing its buffers.
        !            84: */
        !            85: void closebass(void);
        !            86: 
        !            87: int initkey(byteptr key, short keylen, boolean decryp);
        !            88:        /* Sets up key schedule for BassOmatic. */
        !            89: 
        !            90: void bassomatic(byteptr in, byteptr out);
        !            91:        /* Encipher 1 block with the BassOmatic ECB mode. */
        !            92: 
        !            93: /*
        !            94: **     initcfb - Initializes the BassOmatic key schedule tables via key,
        !            95: **     and initializes the Cipher Feedback mode IV.
        !            96: */
        !            97: int initcfb(byteptr iv0, byteptr key, short keylen, boolean decryp);
        !            98: 
        !            99: 
        !           100: /*
        !           101: **     basscfb - encipher 1 block with BassOmatic enciphering algorithm,
        !           102: **             using Cipher Feedback (CFB) mode.
        !           103: **
        !           104: **     Assumes initcfb has already been called.  References global iv byteptr.
        !           105: */
        !           106: void basscfb(byteptr buf, int count);
        !           107: 
        !           108: 
        !           109: /*
        !           110: **     fillbuf(dst,count,c) - fill byte buffer dst with byte c
        !           111: */
        !           112: void fillbuf(register byteptr dst, register short count, register byte c);
        !           113: 
        !           114: 
        !           115: /*
        !           116: **     crc() - compute CRC-16 of buffer
        !           117: */
        !           118: word16 crc(register byteptr buf, int count);
        !           119: 
        !           120: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.