13ff48bf5SDavid du Colombier /* Copyright (C) 2001 Artifex Software, Inc. All rights reserved. 23ff48bf5SDavid du Colombier 3*593dc095SDavid du Colombier This software is provided AS-IS with no warranty, either express or 4*593dc095SDavid du Colombier implied. 53ff48bf5SDavid du Colombier 6*593dc095SDavid du Colombier This software is distributed under license and may not be copied, 7*593dc095SDavid du Colombier modified or distributed except as expressly authorized under the terms 8*593dc095SDavid du Colombier of the license contained in the file LICENSE in this distribution. 93ff48bf5SDavid du Colombier 10*593dc095SDavid du Colombier For more information about licensing, please refer to 11*593dc095SDavid du Colombier http://www.ghostscript.com/licensing/. For information on 12*593dc095SDavid du Colombier commercial licensing, go to http://www.artifex.com/licensing/ or 13*593dc095SDavid du Colombier contact Artifex Software, Inc., 101 Lucas Valley Road #110, 14*593dc095SDavid du Colombier San Rafael, CA 94903, U.S.A., +1(415)492-9861. 153ff48bf5SDavid du Colombier */ 163ff48bf5SDavid du Colombier 17*593dc095SDavid du Colombier /* $Id: sarc4.h,v 1.6 2004/01/14 13:45:56 igor Exp $ */ 183ff48bf5SDavid du Colombier /* Definitions for Arcfour cipher and filter */ 193ff48bf5SDavid du Colombier /* Requires scommon.h; strimpl.h if any templates are referenced */ 203ff48bf5SDavid du Colombier 213ff48bf5SDavid du Colombier #ifndef sarc4_INCLUDED 223ff48bf5SDavid du Colombier # define sarc4_INCLUDED 233ff48bf5SDavid du Colombier 243ff48bf5SDavid du Colombier #include "scommon.h" 253ff48bf5SDavid du Colombier 263ff48bf5SDavid du Colombier /* Arcfour is a symmetric cipher whose state is maintained 273ff48bf5SDavid du Colombier * in two indices into an accompanying 8x8 S box. this will 283ff48bf5SDavid du Colombier * typically be allocated on the stack, and so has no memory 293ff48bf5SDavid du Colombier * management associated. 303ff48bf5SDavid du Colombier */ 31*593dc095SDavid du Colombier struct stream_arcfour_state_s 323ff48bf5SDavid du Colombier { 333ff48bf5SDavid du Colombier stream_state_common; /* a define from scommon.h */ 343ff48bf5SDavid du Colombier unsigned int x, y; 353ff48bf5SDavid du Colombier unsigned char S[256]; 36*593dc095SDavid du Colombier }; 37*593dc095SDavid du Colombier 38*593dc095SDavid du Colombier #ifndef stream_arcfour_state_DEFINED 39*593dc095SDavid du Colombier #define stream_arcfour_state_DEFINED 40*593dc095SDavid du Colombier typedef struct stream_arcfour_state_s stream_arcfour_state; 41*593dc095SDavid du Colombier #endif 423ff48bf5SDavid du Colombier 433ff48bf5SDavid du Colombier int s_arcfour_set_key(stream_arcfour_state * state, const unsigned char *key, 443ff48bf5SDavid du Colombier int keylength); 453ff48bf5SDavid du Colombier 463ff48bf5SDavid du Colombier #define private_st_arcfour_state() /* used in sarc4.c */\ 473ff48bf5SDavid du Colombier gs_private_st_simple(st_arcfour_state, stream_arcfour_state,\ 483ff48bf5SDavid du Colombier "Arcfour filter state") 493ff48bf5SDavid du Colombier extern const stream_template s_arcfour_template; 503ff48bf5SDavid du Colombier 51*593dc095SDavid du Colombier /* (de)crypt a section of text in a buffer -- the procedure is the same 52*593dc095SDavid du Colombier * in each direction. see strimpl.h for return codes. 53*593dc095SDavid du Colombier */ 54*593dc095SDavid du Colombier int s_arcfour_process_buffer(stream_arcfour_state *ss, byte *buf, int buf_size); 55*593dc095SDavid du Colombier 563ff48bf5SDavid du Colombier #endif /* sarc4_INCLUDED */ 57