]> git.saurik.com Git - apple/security.git/blob - OSX/libsecurity_apple_csp/lib/ascContext.h
Security-58286.200.222.tar.gz
[apple/security.git] / OSX / libsecurity_apple_csp / lib / ascContext.h
1 /*
2 * Copyright (c) 2001,2011,2013-2014 Apple Inc. All Rights Reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23
24
25 #ifdef ASC_CSP_ENABLE
26
27 #ifndef _ASC_CONTEXT_H_
28 #define _ASC_CONTEXT_H_
29
30 #include "AppleCSPContext.h"
31 #include <security_comcryption/comcryption.h>
32
33 /* symmetric encrypt/decrypt context */
34 class ASCContext : public AppleCSPContext {
35 public:
36 ASCContext(AppleCSPSession &session) :
37 AppleCSPContext(session),
38 mCcObj(NULL) { }
39 ~ASCContext();
40
41 // called by CSPFullPluginSession
42 void init(
43 const Context &context,
44 bool encoding = true);
45 void update(
46 void *inp,
47 size_t &inSize, // in/out
48 void *outp,
49 size_t &outSize); // in/out
50 void final(
51 CssmData &out);
52
53 size_t inputSize(
54 size_t outSize); // input for given output size
55 size_t outputSize(
56 bool final = false,
57 size_t inSize = 0); // output for given input size
58 void minimumProgress(
59 size_t &in,
60 size_t &out); // minimum progress chunks
61
62 private:
63 comcryptObj mCcObj;
64
65 /*
66 * For first implementation, we have to cope with the fact that the final
67 * decrypt call down to the comcryption engine requires *some* ciphertext.
68 * On decrypt, we'll just save one byte on each update in preparation for
69 * the final call. Hopefull we'll have time to fix deComcryptData() so this
70 * is unneccesary.
71 */
72 unsigned char mDecryptBuf;
73 bool mDecryptBufValid;
74
75 }; /* RC4Context */
76
77 #endif /*_ASC_CONTEXT_H_ */
78 #endif /* ASC_CSP_ENABLE */