Mercurial > pidgin
changeset 16401:37f80fc83e39
Clean up old RC4 implementation.
author | Jeffrey Connelly <jaconnel@calpoly.edu> |
---|---|
date | Wed, 25 Apr 2007 03:54:22 +0000 |
parents | 9c9c627dbbfe |
children | 10d2958bd632 |
files | libpurple/protocols/myspace/crypt-rc4.c libpurple/protocols/myspace/crypt-rc4.h |
diffstat | 2 files changed, 0 insertions(+), 139 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/myspace/crypt-rc4.c Wed Apr 25 03:46:17 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,103 +0,0 @@ -/* - Unix SMB/CIFS implementation. - - a partial implementation of RC4 designed for use in the - SMB authentication protocol - - Copyright (C) Andrew Tridgell 1998 - - $Id: crypt-rc4.c 12116 2004-09-27 23:29:22Z guy $ - - 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. - - 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. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - - Modified by Jeff Connelly for MySpaceIM Gaim plugin. -*/ - -#include <glib.h> -#include <string.h> - -#include "crypt-rc4.h" - -/* Perform RC4 on a block of data using specified key. "data" is a pointer - to the block to be processed. Output is written to same memory as input, - so caller may need to make a copy before calling this function, since - the input will be overwritten. - - Taken from Samba source code. Modified to allow us to maintain state - between calls to crypt_rc4. -*/ - -void crypt_rc4_init(rc4_state_struct *rc4_state, - const unsigned char *key, int key_len) -{ - int ind; - unsigned char j = 0; - unsigned char *s_box; - - memset(rc4_state, 0, sizeof(rc4_state_struct)); - s_box = rc4_state->s_box; - - for (ind = 0; ind < 256; ind++) - { - s_box[ind] = (unsigned char)ind; - } - - for( ind = 0; ind < 256; ind++) - { - unsigned char tc; - - j += (s_box[ind] + key[ind%key_len]); - - tc = s_box[ind]; - s_box[ind] = s_box[j]; - s_box[j] = tc; - } - -} - -void crypt_rc4(rc4_state_struct *rc4_state, unsigned char *data, int data_len) -{ - unsigned char *s_box; - unsigned char index_i; - unsigned char index_j; - int ind; - - /* retrieve current state from the state struct (so we can resume where - we left off) */ - index_i = rc4_state->index_i; - index_j = rc4_state->index_j; - s_box = rc4_state->s_box; - - for( ind = 0; ind < data_len; ind++) - { - unsigned char tc; - unsigned char t; - - index_i++; - index_j += s_box[index_i]; - - tc = s_box[index_i]; - s_box[index_i] = s_box[index_j]; - s_box[index_j] = tc; - - t = s_box[index_i] + s_box[index_j]; - data[ind] = data[ind] ^ s_box[t]; - } - - /* Store the updated state */ - rc4_state->index_i = index_i; - rc4_state->index_j = index_j; -}
--- a/libpurple/protocols/myspace/crypt-rc4.h Wed Apr 25 03:46:17 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -/* - Unix SMB/CIFS implementation. - - a partial implementation of RC4 designed for use in the - SMB authentication protocol - - Copyright (C) Andrew Tridgell 1998 - - $Id: crypt-rc4.h 12116 2004-09-27 23:29:22Z guy $ - - 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. - - 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. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -typedef struct _rc4_state_struct { - unsigned char s_box[256]; - unsigned char index_i; - unsigned char index_j; -} rc4_state_struct; - -void crypt_rc4_init(rc4_state_struct *rc4_state, - const unsigned char *key, int key_len); - -void crypt_rc4(rc4_state_struct *rc4_state, unsigned char *data, int data_len); -