/* rc6 (TM)
* Unoptimized sample implementation of Ron Rivest's submission to the
* AES bakeoff.
*
* Salvo Salasio, 19 June 1998
*
* Intellectual property notes: The name of the algorithm (RC6) is
* trademarked; any property rights to the algorithm or the trademark
* should be discussed with discussed with the authors of the defining
* paper "The RC6(TM) Block Cipher": Ronald L. Rivest (MIT),
* M.J.B. Robshaw (RSA Labs), R. Sidney (RSA Labs), and Y.L. Yin (RSA Labs),
* distributed 18 June 1998 and available from the lead author's web site.
*
* This sample implementation is placed in the public domain by the author,
* Salvo Salasio. The ROTL and ROTR definitions were cribbed from RSA Labs'
* RC5 reference implementation.
*/
/* RC6 is parameterized for w-bit words, b bytes of key, and
* r rounds. The AES version of RC6 specifies b=16, 24, or 32;
* w=32; and r=20.
*/
#define rc6keylen 43
typedef unsigned int RC6KEY[rc6keylen];
/*
* K=plain key
* b=plain key len
* S=prepared key by setup
* pt=uncrypted data
* ct=crypted data
* block size is always 16bytes
*/
void rc6_key_setup(unsigned char *K, int b, unsigned int *S);
void rc6_block_encrypt(unsigned int *pt, unsigned int *ct, unsigned int *S);
void rc6_block_decrypt(unsigned int *ct, unsigned int *pt, unsigned int *S);