X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilccrypt%2Frc5.h;h=3adbee4cf75e9d871a05b7c865f07bb161b1ce25;hb=e7b6c157b80152bf9fb9266e6bdd93f9fb0db776;hp=7d5a23ed14dedf76bd38e693fdf4ea16686bb860;hpb=318d79b391bf6288e3e28c840217a7097f3d0392;p=silc.git diff --git a/lib/silccrypt/rc5.h b/lib/silccrypt/rc5.h index 7d5a23ed..3adbee4c 100644 --- a/lib/silccrypt/rc5.h +++ b/lib/silccrypt/rc5.h @@ -2,133 +2,32 @@ rc5.h - Author: Pekka Riikonen + Author: Pekka Riikonen Copyright (C) 1997 - 2000 Pekka Riikonen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - + the Free Software Foundation; version 2 of the License. + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. */ -/* - * $Id$ - * $Log$ - * Revision 1.1 2000/06/27 11:36:54 priikone - * Initial revision - * - * - */ #ifndef RC5_H #define RC5_H -#include "rc5_internal.h" - -/* +/* * SILC Crypto API for RC5 */ -/* Sets the key for the cipher. */ - -SILC_CIPHER_API_SET_KEY(rc5) -{ - rc5_set_key((RC5Context *)context, (unsigned char *)key, keylen); - return 1; -} - -/* Sets the string as a new key for the cipher. The string is first - hashed and then used as a new key. */ - -SILC_CIPHER_API_SET_KEY_WITH_STRING(rc5) -{ - /* unsigned char key[md5_hash_len]; - SilcMarsContext *ctx = (SilcMarsContext *)context; - - make_md5_hash(string, &key); - memcpy(&ctx->key, mars_set_key(&key, keylen), keylen); - memset(&key, 'F', sizeoof(key)); - */ - - return 1; -} - -/* Returns the size of the cipher context. */ - -SILC_CIPHER_API_CONTEXT_LEN(rc5) -{ - return sizeof(RC5Context); -} - -/* Encrypts with the cipher in CBC mode. */ - -SILC_CIPHER_API_ENCRYPT_CBC(rc5) -{ - unsigned int *in, *out, *tiv; - unsigned int tmp[2]; - int i; - - in = (unsigned int *)src; - out = (unsigned int *)dst; - tiv = (unsigned int *)iv; - - tmp[0] = in[0] ^ tiv[0]; - tmp[1] = in[1] ^ tiv[1]; - rc5_encrypt((RC5Context *)context, tmp, out); - in += 2; - out += 2; - - for (i = 8; i < len; i += 8) { - tmp[0] = in[0] ^ out[0 - 2]; - tmp[1] = in[1] ^ out[1 - 2]; - rc5_encrypt((RC5Context *)context, tmp, out); - in += 2; - out += 2; - } - - return TRUE; -} - -/* Decrypts with the cipher in CBC mode. */ - -SILC_CIPHER_API_DECRYPT_CBC(rc5) -{ - unsigned int *in, *out, *tiv; - unsigned int tmp[2], tmp2[2]; - int i; - - in = (unsigned int *)src; - out = (unsigned int *)dst; - tiv = (unsigned int *)iv; - - tmp[0] = in[0]; - tmp[1] = in[1]; - tmp[3] = in[3]; - rc5_decrypt((RC5Context *)context, in, out); - out[0] ^= tiv[0]; - out[1] ^= tiv[1]; - in += 2; - out += 2; - - for (i = 8; i < len; i += 8) { - tmp2[0] = tmp[0]; - tmp2[1] = tmp[1]; - tmp[0] = in[0]; - tmp[1] = in[1]; - rc5_decrypt((RC5Context *)context, in, out); - out[0] ^= tmp2[0]; - out[1] ^= tmp2[1]; - in += 2; - out += 2; - } - - return TRUE; -} +SILC_CIPHER_API_SET_KEY(rc5_cbc); +SILC_CIPHER_API_SET_IV(rc5_cbc); +SILC_CIPHER_API_CONTEXT_LEN(rc5_cbc); +SILC_CIPHER_API_ENCRYPT(rc5_cbc); +SILC_CIPHER_API_DECRYPT(rc5_cbc); #endif