]> git.saurik.com Git - apple/security.git/blob - AppleCSP/MiscCSPAlgs/desContext.h
Security-54.tar.gz
[apple/security.git] / AppleCSP / MiscCSPAlgs / desContext.h
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 * desContext.h - glue between BlockCrytpor and DES/3DES implementations
21 * Written by Doug Mitchell 3/28/2001
22 */
23 #ifndef _DES_CONTEXT_H_
24 #define _DES_CONTEXT_H_
25
26 #include <Security/CSPsession.h>
27 #include "AppleCSP.h"
28 #include "AppleCSPContext.h"
29 #include "AppleCSPSession.h"
30 #include "BlockCryptor.h"
31 #include <MiscCSPAlgs/DES.h>
32
33 /* DES Symmetric encryption context */
34 class DESContext : public BlockCryptor {
35 public:
36 DESContext(AppleCSPSession &session) :
37 BlockCryptor(session) { }
38 ~DESContext();
39
40 // called by CSPFullPluginSession
41 void init(const Context &context, bool encoding = true);
42
43 // called by BlockCryptor
44 void encryptBlock(
45 const void *plainText, // length implied (one block)
46 size_t plainTextLen,
47 void *cipherText,
48 size_t &cipherTextLen, // in/out, throws on overflow
49 bool final);
50 void decryptBlock(
51 const void *cipherText, // length implied (one cipher block)
52 void *plainText,
53 size_t &plainTextLen, // in/out, throws on overflow
54 bool final);
55
56 private:
57 struct _desInst DesInst;
58
59 }; /* DESContext */
60
61 /* Triple-DES (EDE, 24 byte key) Symmetric encryption context */
62
63 #define DES3_KEY_SIZE_BYTES (3 * (DES_KEY_SIZE_BITS_EXTERNAL / 8))
64 #define DES3_BLOCK_SIZE_BYTES DES_BLOCK_SIZE_BYTES
65
66 class DES3Context : public BlockCryptor {
67 public:
68 DES3Context(AppleCSPSession &session) :
69 BlockCryptor(session) { }
70 ~DES3Context();
71
72 // called by CSPFullPluginSession
73 void init(const Context &context, bool encoding = true);
74
75 // called by BlockCryptor
76 void encryptBlock(
77 const void *plainText, // length implied (one block)
78 size_t plainTextLen,
79 void *cipherText,
80 size_t &cipherTextLen, // in/out, throws on overflow
81 bool final);
82 void decryptBlock(
83 const void *cipherText, // length implied (one cipher block)
84 void *plainText,
85 size_t &plainTextLen, // in/out, throws on overflow
86 bool final);
87
88 private:
89 struct _desInst DesInst[3];
90
91 }; /* DES3Context */
92
93 #endif //_DES_CONTEXT_H_