1/*
2 *  CCCryptorTestFuncs.h
3 *  CCRegressions
4 *
5 *
6 */
7
8#include "capabilities.h"
9#include <CommonCrypto/CommonCryptor.h>
10#ifdef CRYPTORWITHMODE
11#include <CommonCrypto/CommonCryptorSPI.h>
12#else
13typedef uint32_t CCMode;
14typedef uint32_t CCPadding;
15typedef uint32_t CCModeOptions;
16#endif
17
18/* This is a CCCrypt with the Updates split into two parts */
19
20CCCryptorStatus
21CCMultiCrypt(CCOperation op, CCAlgorithm alg, CCOptions options, const void *key, size_t keyLength, const void *iv, const void *dataIn, size_t dataInLength,
22	void *dataOut, size_t dataOutAvailable, size_t *dataOutMoved);
23
24
25/* This is a CCCrypt allowing mode specification */
26
27CCCryptorStatus
28CCCryptWithMode(CCOperation op, CCMode mode, CCAlgorithm alg, CCPadding padding, const void *iv,
29				const void *key, size_t keyLength, const void *tweak, size_t tweakLength,
30                int numRounds, CCModeOptions options,
31                const void *dataIn, size_t dataInLength,
32                void *dataOut, size_t dataOutAvailable, size_t *dataOutMoved);
33
34CCCryptorStatus
35CCMultiCryptWithMode(CCOperation op, CCMode mode, CCAlgorithm alg, CCPadding padding, const void *iv,
36	const void *key, size_t keyLength, const void *tweak, size_t tweakLength,
37	int numRounds, CCModeOptions options,
38    const void *dataIn, size_t dataInLength,
39	void *dataOut, size_t dataOutAvailable, size_t *dataOutMoved);
40
41/* This is a Test Case "doer" using CCCrypt */
42int
43CCCryptTestCase(char *keyStr, char *ivStr, CCAlgorithm alg, CCOptions options, char *cipherText, char *plainText);
44
45/* This is a Test Case "doer" using CCMultiCrypt */
46int
47CCMultiCryptTestCase(char *keyStr, char *ivStr, CCAlgorithm alg, CCOptions options, char *cipherText, char *plainText);
48
49/* This is a Test Case "doer" using CCCryptWithMode */
50int
51CCModeTestCase(char *keyStr, char *ivStr, CCMode mode, CCAlgorithm alg, CCPadding padding, char *cipherText, char *plainText);
52
53/* This is a Test Case "doer" using CCMultiCryptWithMode */
54int
55CCMultiModeTestCase(char *keyStr, char *ivStr, CCMode mode, CCAlgorithm alg, CCPadding padding, char *cipherText, char *plainText);
56/* This is a Test Case "doer" using CCCryptorGCM */
57int
58CCCryptorGCMTestCase(char *keyStr, char *ivStr, char *aDataStr, char *tagStr, CCAlgorithm alg, char *cipherText, char *plainText);
59int
60CCCryptorGCMDiscreetTestCase(char *keyStr, char *ivStr, char *aDataStr, char *tagStr, CCAlgorithm alg, char *cipherText, char *plainText);
61
62