X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/fbac94e6d8347650fbc9fd0b9e6062f582ddffcd..025c5f4aa5ffbf8948482a4233318db81c2df5d2:/twofish.h diff --git a/twofish.h b/twofish.h index ef666d1..0f47569 100644 --- a/twofish.h +++ b/twofish.h @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: twofish.h,v 1.2 2000/10/08 15:48:58 mdw Exp $ + * $Id: twofish.h,v 1.5 2004/04/08 01:36:15 mdw Exp $ * * The Twofish block cipher * @@ -27,17 +27,6 @@ * MA 02111-1307, USA. */ -/*----- Revision history --------------------------------------------------* - * - * $Log: twofish.h,v $ - * Revision 1.2 2000/10/08 15:48:58 mdw - * Update comments now that AES has been chosen. - * - * Revision 1.1 2000/06/17 12:10:17 mdw - * New cipher. - * - */ - /*----- Notes on the Twofish block cipher ---------------------------------* * * Twofish was designed by Bruce Schneier, John Kelsey, Doug Whiting, David @@ -76,8 +65,30 @@ typedef struct twofish_ctx { uint32 g[4][256]; } twofish_ctx; +typedef struct twofish_fk { + uint32 t0[8], t23[8], t4[2]; + octet t1[32]; +} twofish_fk; + /*----- Functions provided ------------------------------------------------*/ +/* --- @twofish_initfk@ --- * + * + * Arguments: @twofish_ctx *k@ = pointer to key block to fill in + * @const void *buf@ = pointer to buffer of key material + * @size_t sz@ = size of key material + * @const twofish_fk *fk@ = family-key information + * + * Returns: --- + * + * Use: Does the underlying Twofish key initialization with family + * key. Pass in a family-key structure initialized to + * all-bits-zero for a standard key schedule. + */ + +extern void twofish_initfk(twofish_ctx */*k*/, const void */*buf*/, + size_t /*sz*/, const twofish_fk */*fk*/); + /* --- @twofish_init@ --- * * * Arguments: @twofish_ctx *k@ = pointer to key block to fill in @@ -93,6 +104,21 @@ typedef struct twofish_ctx { extern void twofish_init(twofish_ctx */*k*/, const void */*buf*/, size_t /*sz*/); +/* --- @twofish_fkinit@ --- * + * + * Arguments: @twofish_fk *fk@ = pointer to family key block + * @const void *buf@ = pointer to buffer of key material + * @size_t sz@ = size of key material + * + * Returns: --- + * + * Use: Initializes a family-key buffer. This implementation allows + * family keys of any size acceptable to the Twofish algorithm. + */ + +extern void twofish_fkinit(twofish_fk */*fk*/, + const void */*buf*/, size_t /*sz*/); + /* --- @twofish_eblk@, @twofish_dblk@ --- * * * Arguments: @const twofish_ctx *k@ = pointer to key block @@ -108,7 +134,7 @@ extern void twofish_eblk(const twofish_ctx */*k*/, const uint32 */*s*/, uint32 */*d*/); extern void twofish_dblk(const twofish_ctx */*k*/, - const uint32 */*s*/, uint32 */*d*/); + const uint32 */*s*/, uint32 */*d*/); /*----- That's all, folks -------------------------------------------------*/