1/* Copyright (c) 1998,2011,2014 Apple 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, INC. AND THE
6 * ORIGINAL LICENSEE THAT OBTAINED THESE MATERIALS FROM APPLE,
7 * INC.  ANY USE OF THESE MATERIALS NOT PERMITTED BY SUCH AGREEMENT WILL
8 * EXPOSE YOU TO LIABILITY.
9 ***************************************************************************
10 *
11 * DES.h - raw DES encryption engine interface
12 *
13 * Revision History
14 * ----------------
15 * 31 Mar 97 at Apple
16 *	Put per-instance data in struct _desInst
17 * 21 Aug 96 at NeXT
18 *	Broke out from NSDESCryptor.m
19 * 22 Feb 96 at NeXT
20 *	Created.
21 */
22
23#ifndef	_CK_DES_H_
24#define _CK_DES_H_
25
26#include "ckconfig.h"
27
28#if CRYPTKIT_SYMMETRIC_ENABLE
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
34#define DES_BLOCK_SIZE_BYTES		8	/* in bytes */
35#define DES_KEY_SIZE_BITS			56	/* effective key size in bits */
36#define DES_KEY_SIZE_BITS_EXTERNAL	64	/* clients actually pass in this much */
37#define DES_KEY_SIZE_BYTES_EXTERNAL	(DES_KEY_SIZE_BITS_EXTERNAL / 8)
38
39#define DES_MODE_STD	0	/* standard Data Encryption Algorithm */
40#define DES_MODE_FAST	1	/* DEA without initial and final */
41				/*    permutations for speed */
42#define DES_MODE_128	2	/* DEA without permutations and with */
43				/*    128-byte key (completely independent */
44				/*    subkeys for each round) */
45
46/*
47 * Per-instance data.
48 */
49struct _desInst {
50    	/* 8 16-bit subkeys for each of 16 rounds, initialized by setkey()
51    	 */
52	unsigned char kn[16][8];
53	int desmode;
54};
55
56typedef struct _desInst *desInst;
57
58int desinit(desInst dinst, int mode);
59void dessetkey(desInst dinst, char *key);
60void endes(desInst dinst, char *block);
61void dedes(desInst dinst, char *block);
62void desdone(desInst dinst);
63
64#ifdef __cplusplus
65}
66#endif
67
68#endif	/* CRYPTKIT_SYMMETRIC_ENABLE */
69
70#endif	/*_CK_DES_H_*/
71