]> git.saurik.com Git - apple/security.git/blob - libsecurity_apple_csp/lib/ascContext.h
Security-55471.14.8.tar.gz
[apple/security.git] / libsecurity_apple_csp / lib / ascContext.h
1 /*
2 * ascContext.h - glue between BlockCrytpor and ComCryption (a.k.a. Apple
3 * Secure Compression).
4 * Written by Doug Mitchell 4/4/2001
5 */
6
7 #ifdef ASC_CSP_ENABLE
8
9 #ifndef _ASC_CONTEXT_H_
10 #define _ASC_CONTEXT_H_
11
12 #include "AppleCSPContext.h"
13 #include <security_comcryption/comcryption.h>
14
15 /* symmetric encrypt/decrypt context */
16 class ASCContext : public AppleCSPContext {
17 public:
18 ASCContext(AppleCSPSession &session) :
19 AppleCSPContext(session),
20 mCcObj(NULL) { }
21 ~ASCContext();
22
23 // called by CSPFullPluginSession
24 void init(
25 const Context &context,
26 bool encoding = true);
27 void update(
28 void *inp,
29 size_t &inSize, // in/out
30 void *outp,
31 size_t &outSize); // in/out
32 void final(
33 CssmData &out);
34
35 size_t inputSize(
36 size_t outSize); // input for given output size
37 size_t outputSize(
38 bool final = false,
39 size_t inSize = 0); // output for given input size
40 void minimumProgress(
41 size_t &in,
42 size_t &out); // minimum progress chunks
43
44 private:
45 comcryptObj mCcObj;
46
47 /*
48 * For first implementation, we have to cope with the fact that the final
49 * decrypt call down to the comcryption engine requires *some* ciphertext.
50 * On decrypt, we'll just save one byte on each update in preparation for
51 * the final call. Hopefull we'll have time to fix deComcryptData() so this
52 * is unneccesary.
53 */
54 unsigned char mDecryptBuf;
55 bool mDecryptBufValid;
56
57 }; /* RC4Context */
58
59 #endif /*_ASC_CONTEXT_H_ */
60 #endif /* ASC_CSP_ENABLE */