1 /* $OpenBSD: arc4.h,v 1.3 2007/09/11 12:07:05 djm Exp $ */ 2 /* 3 * Copyright (c) 2003 Markus Friedl <markus@openbsd.org> 4 * 5 * Permission to use, copy, modify, and distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 */ 17 18 #define RC4STATE 256 19 #define RC4KEYLEN 16 20 21 struct rc4_ctx { 22 u_int8_t x, y; 23 u_int8_t state[RC4STATE]; 24 }; 25 26 void rc4_keysetup(struct rc4_ctx *, u_char *, u_int32_t) 27 __attribute__((__bounded__(__buffer__,2,3))); 28 void rc4_crypt(struct rc4_ctx *, u_char *, u_char *, u_int32_t) 29 __attribute__((__bounded__(__buffer__,2,4))) 30 __attribute__((__bounded__(__buffer__,3,4))); 31 void rc4_getbytes(struct rc4_ctx *, u_char *, u_int32_t) 32 __attribute__((__bounded__(__buffer__,2,3))); 33 void rc4_skip(struct rc4_ctx *, u_int32_t); 34