1/*
2	File:		ckconfig.h
3
4	Contains:	Common config info.
5
6
7	Copyright:	Copyright (c) 1998,2011,2014 Apple Inc.
8                All rights reserved.
9
10	Change History (most recent first):
11
12	<7>	10/06/98	ap		Changed to compile with C++.
13
14	To Do:
15*/
16
17/* Copyright (c) 1998,2011,2014 Apple Inc.  All Rights Reserved.
18 *
19 * NOTICE: USE OF THE MATERIALS ACCOMPANYING THIS NOTICE IS SUBJECT
20 * TO THE TERMS OF THE SIGNED "FAST ELLIPTIC ENCRYPTION (FEE) REFERENCE
21 * SOURCE CODE EVALUATION AGREEMENT" BETWEEN APPLE, INC. AND THE
22 * ORIGINAL LICENSEE THAT OBTAINED THESE MATERIALS FROM APPLE,
23 * INC.  ANY USE OF THESE MATERIALS NOT PERMITTED BY SUCH AGREEMENT WILL
24 * EXPOSE YOU TO LIABILITY.
25 ***************************************************************************
26 */
27
28#ifndef	_CK_CONFIG_H_
29#define _CK_CONFIG_H_
30
31/*
32 * Common build flags.
33 */
34#define DEBUG_ENGINE	0
35
36#define ENGINE_127_BITS	0	/* hard-coded 127 elliptic() */
37
38/*
39 * These flags are set en masse, one set per target in the XCode project file or
40 * Makefile. They determine what gets compiled into the library. Every flag
41 * has to be defined for every configureation - preprocessors directives use
42 * #if, not #ifdef.
43 */
44
45#ifdef	CK_SECURITY_BUILD
46/*
47 * Standard Security.framework build
48 */
49#define	CRYPTKIT_DER_ENABLE	    1	    /* DER encoding support */
50#define	CRYPTKIT_LIBMD_DIGEST	    1	    /* use CommonCrypto digests */
51#define CRYPTKIT_ELL_PROJ_ENABLE    1	    /* elliptic projection */
52#define CRYPTKIT_ECDSA_ENABLE	    1	    /* ECDSA (requires ELL_PROJ_ENABLE) */
53#define CRYPTKIT_CIPHERFILE_ENABLE  0	    /* cipherfile w/symmetric encryption */
54#define CRYPTKIT_SYMMETRIC_ENABLE   0	    /* symmetric encryption */
55#define CRYPTKIT_ASYMMETRIC_ENABLE  1	    /* asymmetric encryption */
56#define CRYPTKIT_MD5_ENABLE	    1	    /* MD5 hash */
57#define CRYPTKIT_SHA1_ENABLE	    1	    /* SHA1 hash - needed for GHMAX_LEGACY */
58#define CRYPTKIT_HMAC_LEGACY	    1
59#define CRYPTKIT_KEY_EXCHANGE	    0	    /* FEE key exchange */
60#define CRYPTKIT_HIGH_LEVEL_SIG	    0	    /* high level one-shot signature */
61#define CRYPTKIT_GIANT_STACK_ENABLE 0	    /* cache of giants */
62
63#elif	defined(CK_STANDALONE_BUILD)
64/*
65 * Standalone library build
66 */
67#define	CRYPTKIT_DER_ENABLE	    0
68#define	CRYPTKIT_LIBMD_DIGEST	    0
69#define CRYPTKIT_ELL_PROJ_ENABLE    1
70#define CRYPTKIT_ECDSA_ENABLE	    1
71#define CRYPTKIT_CIPHERFILE_ENABLE  1
72#define CRYPTKIT_SYMMETRIC_ENABLE   1
73#define CRYPTKIT_ASYMMETRIC_ENABLE  1
74#define CRYPTKIT_MD5_ENABLE	    1
75#define CRYPTKIT_SHA1_ENABLE	    1
76#define CRYPTKIT_HMAC_LEGACY	    0
77#define CRYPTKIT_KEY_EXCHANGE	    1
78#define CRYPTKIT_HIGH_LEVEL_SIG	    1
79#define CRYPTKIT_GIANT_STACK_ENABLE 1
80
81#elif	defined(CK_MINIMUM_SIG_BUILD)
82/*
83 * Standalone, just ElGamal signature and key generation
84 */
85#define	CRYPTKIT_DER_ENABLE	    0
86#define	CRYPTKIT_LIBMD_DIGEST	    0
87#define CRYPTKIT_ELL_PROJ_ENABLE    0
88#define CRYPTKIT_ECDSA_ENABLE	    0
89#define CRYPTKIT_CIPHERFILE_ENABLE  0
90#define CRYPTKIT_SYMMETRIC_ENABLE   0
91#define CRYPTKIT_ASYMMETRIC_ENABLE  0
92#define CRYPTKIT_MD5_ENABLE	    1
93/* FIXME convert native ElGamal to use SHA1! */
94#define CRYPTKIT_SHA1_ENABLE	    0
95#define CRYPTKIT_HMAC_LEGACY	    0
96#define CRYPTKIT_KEY_EXCHANGE	    0
97#define CRYPTKIT_HIGH_LEVEL_SIG	    0
98#define CRYPTKIT_GIANT_STACK_ENABLE 1
99
100#else
101
102#error You must supply a build configuration.
103#endif
104
105#endif	/* _CK_CONFIG_H_ */
106