]> git.saurik.com Git - apple/security.git/blame - AppleCSP/CryptKitCSP/FEEAsymmetricContext.h
Security-28.tar.gz
[apple/security.git] / AppleCSP / CryptKitCSP / FEEAsymmetricContext.h
CommitLineData
bac41a7b
A
1/*
2 * Copyright (c) 2000-2001 Apple Computer, 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 * FEEAsymmetricContext.h - CSPContexts for FEE asymmetric encryption
21 *
22 * Created March 8 2001 by dmitch.
23 */
24
25#ifdef CRYPTKIT_CSP_ENABLE
26
27#ifndef _FEE_ASYMMETRIC_CONTEXT_H_
28#define _FEE_ASYMMETRIC_CONTEXT_H_
29
30#include <Security/CSPsession.h>
31#include "AppleCSP.h"
32#include "AppleCSPContext.h"
33#include "AppleCSPSession.h"
34#include "BlockCryptor.h"
35#include <CryptKit/feeFEED.h>
36#include <CryptKit/feeFEEDExp.h>
37
38namespace CryptKit {
39
40class FEEDContext : public BlockCryptor {
41public:
42 FEEDContext(AppleCSPSession &session) :
43 BlockCryptor(session),
44 mFeeFeed(NULL),
45 mPrivKey(NULL),
46 mPubKey(NULL),
47 mInitFlag(false) { }
48 ~FEEDContext();
49
50 /* called by CSPFullPluginSession */
51 void init(const Context &context, bool encoding = true);
52
53 /* called by BlockCryptor */
54 void encryptBlock(
55 const void *plainText, // length implied (one block)
56 size_t plainTextLen,
57 void *cipherText,
58 size_t &cipherTextLen, // in/out, throws on overflow
59 bool final);
60 void decryptBlock(
61 const void *cipherText, // length implied (one cipher block)
62 void *plainText,
63 size_t &plainTextLen, // in/out, throws on overflow
64 bool final);
65
66 /*
67 * Additional query size support, necessary because we don't conform to
68 * BlockCryptor's standard one-to-one block scheme
69 */
70 size_t inputSize(
71 size_t outSize); // input for given output size
72 size_t outputSize(
73 bool final = false,
74 size_t inSize = 0); // output for given input size
75 void minimumProgress(
76 size_t &in,
77 size_t &out); // minimum progress chunks
78
79
80private:
81 feeFEED mFeeFeed;
82 feePubKey mPrivKey;
83 bool mAllocdPrivKey;
84 feePubKey mPubKey;
85 bool mAllocdPubKey;
86 bool mInitFlag; // allows easy reuse
87}; /* FEEDContext */
88
89
90class FEEDExpContext : public BlockCryptor {
91public:
92 FEEDExpContext(AppleCSPSession &session) :
93 BlockCryptor(session),
94 mFeeFeedExp(NULL),
95 mFeeKey(NULL),
96 mInitFlag(false) { }
97
98 ~FEEDExpContext();
99
100 /* called by CSPFullPluginSession */
101 void init(const Context &context, bool encoding = true);
102
103 /* called by BlockCryptor */
104 void encryptBlock(
105 const void *plainText, // length implied (one block)
106 size_t plainTextLen,
107 void *cipherText,
108 size_t &cipherTextLen, // in/out, throws on overflow
109 bool final);
110 void decryptBlock(
111 const void *cipherText, // length implied (one cipher block)
112 void *plainText,
113 size_t &plainTextLen, // in/out, throws on overflow
114 bool final);
115
116private:
117 feeFEEDExp mFeeFeedExp;
118 feePubKey mFeeKey;
119 bool mAllocdFeeKey;
120 bool mInitFlag; // allows easy reuse
121}; /* FEEDExpContext */
122
123} /* namespace CryptKit */
124
125#endif /* _FEE_ASYMMETRIC_CONTEXT_H_ */
126#endif /* CRYPTKIT_CSP_ENABLE */