]> git.saurik.com Git - apple/security.git/blame - libsecurity_cryptkit/lib/feeDES.h
Security-55471.14.18.tar.gz
[apple/security.git] / libsecurity_cryptkit / lib / feeDES.h
CommitLineData
b1ab9ed8
A
1/* Copyright (c) 1998 Apple Computer, Inc. All rights reserved.
2 *
3 * NOTICE: USE OF THE MATERIALS ACCOMPANYING THIS NOTICE IS SUBJECT
4 * TO THE TERMS OF THE SIGNED "FAST ELLIPTIC ENCRYPTION (FEE) REFERENCE
5 * SOURCE CODE EVALUATION AGREEMENT" BETWEEN APPLE COMPUTER, INC. AND THE
6 * ORIGINAL LICENSEE THAT OBTAINED THESE MATERIALS FROM APPLE COMPUTER,
7 * INC. ANY USE OF THESE MATERIALS NOT PERMITTED BY SUCH AGREEMENT WILL
8 * EXPOSE YOU TO LIABILITY.
9 ***************************************************************************
10 *
11 * FeeDES.h - generic, portable DES encryption object
12 *
13 * Revision History
14 * ----------------
15 * 26 Aug 96 Doug Mitchell at NeXT
16 * Created.
17 */
18
19#ifndef _CK_FEEDES_H_
20#define _CK_FEEDES_H_
21
22#if !defined(__MACH__)
23#include <ckconfig.h>
24#include <feeTypes.h>
25#else
26#include <security_cryptkit/ckconfig.h>
27#include <security_cryptkit/feeTypes.h>
28#endif
29
30#if CRYPTKIT_SYMMETRIC_ENABLE
31
32#ifdef __cplusplus
33extern "C" {
34#endif
35
36#define FEE_DES_MIN_STATE_SIZE 8
37
38/*
39 * Opaque object handle.
40 */
41typedef void *feeDES;
42
43/*
44 * Alloc and init a feeDES object with specified initial state.
45 * State must be at least 8 bytes; only 8 bytes are used, ignoring
46 * MSB of each bytes.
47 */
48feeDES feeDESNewWithState(const unsigned char *state,
49 unsigned stateLen);
50
51void feeDESFree(feeDES des);
52
53/*
54 * Set new initial state.
55 */
56feeReturn feeDESSetState(feeDES des,
57 const unsigned char *state,
58 unsigned stateLen);
59
60/*
61 * Set block or chain (CBC) mode. CBC is default.
62 */
63void feeDESSetBlockMode(feeDES des);
64void feeDESSetChainMode(feeDES des);
65
66/*
67 * Plaintext block size.
68 */
69unsigned feeDESPlainBlockSize(feeDES des);
70
71/*
72 * Ciphertext block size used for decryption.
73 */
74unsigned feeDESCipherBlockSize(feeDES des);
75
76/*
77 * Required size of buffer for ciphertext, upon encrypting one
78 * block of plaintext.
79 */
80unsigned feeDESCipherBufSize(feeDES des);
81
82/*
83
84 * Return the size of ciphertext to hold specified size of plaintext.
85
86 */
87
88unsigned feeDESCipherTextSize(feeDES des, unsigned plainTextSize);
89
90
91/*
92 * Key size in bits.
93 */
94unsigned feeDESKeySize(feeDES des);
95
96/*
97 * Encrypt a block or less of data. Caller malloc's cipherText. Generates
98 * up to (2 * feeDESBlockSize) bytes of cipherText. If plainTextLen is
99 * less than feeDESBlockSize, finalBlock must be true.
100 */
101feeReturn feeDESEncryptBlock(feeDES des,
102 const unsigned char *plainText,
103 unsigned plainTextLen,
104 unsigned char *cipherText,
105 unsigned *cipherTextLen, // RETURNED
106 int finalBlock);
107
108/*
109 * Decrypt (exactly) a block of data. Caller malloc's plainText. Always
110 * generates feeDESBlockSize bytes of plainText, unless 'finalBlock' is
111 * non-zero (in which case feeDESBlockSize or less bytes of plainText are
112 * generated).
113 */
114feeReturn feeDESDecryptBlock(feeDES des,
115 const unsigned char *cipherText,
116 unsigned cipherTextLen,
117 unsigned char *plainText,
118 unsigned *plainTextLen, // RETURNED
119 int finalBlock);
120
121/*
122 * Convenience routines to encrypt & decrypt multi-block data.
123 */
124feeReturn feeDESEncrypt(feeDES des,
125 const unsigned char *plainText,
126 unsigned plainTextLen,
127 unsigned char **cipherText, // malloc'd and RETURNED
128 unsigned *cipherTextLen); // RETURNED
129
130feeReturn feeDESDecrypt(feeDES des,
131 const unsigned char *cipherText,
132 unsigned cipherTextLen,
133 unsigned char **plainText, // malloc'd and RETURNED
134 unsigned *plainTextLen); // RETURNED
135
136#ifdef __cplusplus
137}
138#endif
139
140#endif /* CRYPTKIT_SYMMETRIC_ENABLE */
141#endif /*_CK_FEEDES_H_*/