1/* 2 * Copyright (c) 2000-2001,2011,2013-2014 Apple Inc. All Rights Reserved. 3 * 4 * The contents of this file constitute Original Code as defined in and are 5 * subject to the Apple Public Source License Version 1.2 (the 'License'). 6 * You may not use this file except in compliance with the License. Please obtain 7 * a copy of the License at http://www.apple.com/publicsource and read it before 8 * using this file. 9 * 10 * This Original Code and all software distributed under the License are 11 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS 12 * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT 13 * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR 14 * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the 15 * specific language governing rights and limitations under the License. 16 */ 17 18 19/* 20 * rc4Context.h - glue between BlockCrytpor and ssleay RC4 implementation 21 */ 22#ifndef _RC4_CONTEXT_H_ 23#define _RC4_CONTEXT_H_ 24 25#include "AppleCSPContext.h" 26#include <CommonCrypto/CommonCryptor.h> 27#include <CommonCrypto/CommonCryptorSPI.h> 28 29class RC4Context : public AppleCSPContext { 30public: 31 RC4Context(AppleCSPSession &session) : 32 AppleCSPContext(session) { } 33 virtual ~RC4Context(); 34 35 // called by CSPFullPluginSession 36 void init( 37 const Context &context, 38 bool encoding = true); 39 void update( 40 void *inp, 41 size_t &inSize, // in/out 42 void *outp, 43 size_t &outSize); // in/out 44 void final( 45 CssmData &out); 46 47 size_t inputSize( 48 size_t outSize); // input for given output size 49 size_t outputSize( 50 bool final = false, 51 size_t inSize = 0); // output for given input size 52 void minimumProgress( 53 size_t &in, 54 size_t &out); // minimum progress chunks 55 56private: 57 CCCryptorRef rc4Key; 58 59}; /* RC4Context */ 60 61#endif //_RC4_CONTEXT_H_ 62