1/*
2 * ssleayUtils.h - common routines for CDSA/openssl compatibility testing
3 */
4
5/*
6 * Clients of this module do not need to know about or see anything from the
7 * libcrypt headers.
8 */
9#ifndef	_SSLEAY_UTILS_H_
10#define _SSLEAY_UTILS_H_
11#include <Security/cssmtype.h>
12
13typedef void *EAY_KEY;
14
15/*
16 * Create a symmetric key.
17 */
18CSSM_RETURN  eayGenSymKey(
19	CSSM_ALGORITHMS alg,
20	CSSM_BOOL		forEncr,
21	const CSSM_DATA	*keyData,
22	EAY_KEY			*key);			// RETURNED
23
24/*
25 * Free a key created in eayGenSymKey
26 */
27CSSM_RETURN eayFreeKey(
28	EAY_KEY			key);
29
30/*
31 * encrypt/decrypt
32 */
33CSSM_RETURN eayEncryptDecrypt(
34	EAY_KEY				key,
35	CSSM_BOOL			forEncrypt,
36	CSSM_ALGORITHMS		encrAlg,
37	CSSM_ENCRYPT_MODE	mode,				// CSSM_ALGMODE_CBC ONLY!
38	const CSSM_DATA		*iv,				//�optional per mode
39	const CSSM_DATA		*inData,
40	CSSM_DATA_PTR		outData);			// mallocd and RETURNED
41
42/*** EVP-based encrypt/decrypt ***/
43
44int evpEncryptDecrypt(
45	CSSM_ALGORITHMS		alg,				// AES 128 only for now
46	CSSM_BOOL			forEncr,
47	const CSSM_DATA		*keyData,			// may be larger than the key size we use
48	unsigned			keyLengthInBits,
49	CSSM_ENCRYPT_MODE	mode,				// CSSM_ALGMODE_CBC_IV8, ECB, always padding
50	const CSSM_DATA		*iv,				// optional per mode
51	const CSSM_DATA		*inData,
52	CSSM_DATA_PTR		outData);			// CSSM_MALLOCd and RETURNED
53
54#endif	/* _EAY_UTILS_H_ */
55