223 lines
8.7 KiB
C
223 lines
8.7 KiB
C
/* Copyright (c) (2011,2012,2013,2015,2016,2017,2018,2019) Apple Inc. All rights reserved.
|
||
*
|
||
* corecrypto is licensed under Apple Inc.’s Internal Use License Agreement (which
|
||
* is contained in the License.txt file distributed with corecrypto) and only to
|
||
* people who accept that license. IMPORTANT: Any license rights granted to you by
|
||
* Apple Inc. (if any) are limited to internal use within your organization only on
|
||
* devices and computers you own or control, for the sole purpose of verifying the
|
||
* security characteristics and correct functioning of the Apple Software. You may
|
||
* not, directly or indirectly, redistribute the Apple Software or any portions thereof.
|
||
*/
|
||
|
||
#ifndef _CCMODE_TEST_H_
|
||
#define _CCMODE_TEST_H_
|
||
|
||
int ccmode_ecb_test_one(const struct ccmode_ecb *ecb, size_t keylen, const void *keydata,
|
||
size_t nblocks, const void *in, const void *out);
|
||
|
||
int ccmode_ecb_test_key_self(const struct ccmode_ecb *encrypt, const struct ccmode_ecb *decrypt, size_t nblocks,
|
||
size_t keylen, const void *keydata, size_t loops);
|
||
|
||
int ccmode_cbc_test_one(const struct ccmode_cbc *cbc, size_t keylen, const void *keydata,
|
||
const void *iv, size_t nblocks, const void *in, const void *out);
|
||
|
||
int ccmode_cbc_test_one_chained(const struct ccmode_cbc *cbc, size_t keylen, const void *keydata,
|
||
const void *iv, size_t nblocks, const void *in, const void *out);
|
||
|
||
int ccmode_cbc_test_key_self(const struct ccmode_cbc *encrypt, const struct ccmode_cbc *decrypt, size_t nblocks,
|
||
size_t keylen, const void *keydata, size_t loops);
|
||
|
||
int ccmode_cbc_test_chaining_self(const struct ccmode_cbc *encrypt, const struct ccmode_cbc *decrypt, size_t nblocks,
|
||
size_t keylen, const void *keydata, size_t loops);
|
||
|
||
int ccmode_ofb_test_one(const struct ccmode_ofb *ofb, size_t keylen, const void *keydata,
|
||
const void *iv, size_t nbytes, const void *in, const void *out);
|
||
|
||
int ccmode_ofb_test_one_chained(const struct ccmode_ofb *ofb, size_t keylen, const void *keydata,
|
||
const void *iv, size_t nbytes, const void *in, const void *out);
|
||
|
||
int ccmode_cfb_test_one(const struct ccmode_cfb *cfb, size_t keylen, const void *keydata,
|
||
const void *iv, size_t nbytes, const void *in, const void *out);
|
||
|
||
int ccmode_cfb_test_one_chained(const struct ccmode_cfb *cfb, size_t keylen, const void *keydata,
|
||
const void *iv, size_t nbytes, const void *in, const void *out);
|
||
|
||
int ccmode_cfb8_test_one(const struct ccmode_cfb8 *cfb8, size_t keylen, const void *keydata,
|
||
const void *iv, size_t nbytes, const void *in, const void *out);
|
||
|
||
int ccmode_cfb8_test_one_chained(const struct ccmode_cfb8 *cfb8, size_t keylen, const void *keydata,
|
||
const void *iv, size_t nbytes, const void *in, const void *out);
|
||
|
||
int ccmode_ctr_test_one(const struct ccmode_ctr *ctr, size_t keylen, const void *keydata,
|
||
const void *iv, size_t nbytes, const void *in, const void *out);
|
||
|
||
int ccmode_ctr_test_one_chained(const struct ccmode_ctr *ctr, size_t keylen, const void *keydata,
|
||
const void *iv, size_t nbytes, const void *in, const void *out);
|
||
|
||
int ccmode_ctr_test_one_chained2(const struct ccmode_ctr *ctr, size_t keylen, const void *keydata,
|
||
const void *iv, size_t nbytes, const void *in, const void *out);
|
||
|
||
int ccmode_xts_test_one(const struct ccmode_xts *xts, size_t key_nbytes,
|
||
const void *dkey, const void *tkey, const void *tweak,
|
||
size_t nbytes, const void *in, void *out, int dec);
|
||
|
||
int ccmode_xts_test_one_chained(const struct ccmode_xts *xts,
|
||
size_t key_nbytes, const void *dkey,
|
||
const void *tkey, const void *tweak,
|
||
size_t nbytes, const void *in,
|
||
void *out, int dec);
|
||
|
||
int ccmode_gcm_test_one(const struct ccmode_gcm *gcm, size_t keylen, const void *keydata,
|
||
size_t ivlen, const void *iv, size_t adalen, const void *ada,
|
||
size_t nbytes, const void *in, const void *out,
|
||
size_t taglen, const void *tag);
|
||
|
||
int ccmode_gcm_test_one_chained(const struct ccmode_gcm *gcm, size_t keylen, const void *keydata,
|
||
size_t ivlen, const void *iv, size_t adalen, const void *ada,
|
||
size_t nbytes, const void *in, const void *out,
|
||
size_t taglen, const void *tag);
|
||
|
||
|
||
struct ccmode_ecb_vector {
|
||
size_t keylen;
|
||
const void *key;
|
||
size_t nblocks;
|
||
const void *pt;
|
||
const void *ct;
|
||
};
|
||
|
||
int ccmode_ecb_test_one_vector(const struct ccmode_ecb *ecb, const struct ccmode_ecb_vector *v, int dec);
|
||
|
||
|
||
struct ccmode_cbc_vector {
|
||
size_t keylen;
|
||
const void *key;
|
||
const char *iv;
|
||
size_t nblocks;
|
||
const char *pt;
|
||
const char *ct;
|
||
};
|
||
|
||
int ccmode_cbc_test_one_vector(const struct ccmode_cbc *cbc, const struct ccmode_cbc_vector *v, int dec);
|
||
int ccmode_cbc_test_one_vector_unaligned(const struct ccmode_cbc *cbc, const struct ccmode_cbc_vector *v, int dec);
|
||
int ccmode_cbc_test_one_vector_chained(const struct ccmode_cbc *cbc, const struct ccmode_cbc_vector *v, int dec);
|
||
|
||
struct ccmode_ofb_vector {
|
||
size_t keylen;
|
||
const void *key;
|
||
const char *iv;
|
||
size_t nbytes;
|
||
const char *pt;
|
||
const char *ct;
|
||
};
|
||
|
||
int ccmode_ofb_test_one_vector(const struct ccmode_ofb *ofb, const struct ccmode_ofb_vector *v, int dec);
|
||
|
||
int ccmode_ofb_test_one_vector_chained(const struct ccmode_ofb *ofb, const struct ccmode_ofb_vector *v, int dec);
|
||
|
||
struct ccmode_cfb_vector {
|
||
size_t keylen;
|
||
const void *key;
|
||
const char *iv;
|
||
size_t nbytes;
|
||
const char *pt;
|
||
const char *ct;
|
||
};
|
||
|
||
int ccmode_cfb_test_one_vector(const struct ccmode_cfb *cfb, const struct ccmode_cfb_vector *v, int dec);
|
||
|
||
int ccmode_cfb_test_one_vector_chained(const struct ccmode_cfb *cfb, const struct ccmode_cfb_vector *v, int dec);
|
||
|
||
struct ccmode_cfb8_vector {
|
||
size_t keylen;
|
||
const void *key;
|
||
const char *iv;
|
||
size_t nbytes;
|
||
const char *pt;
|
||
const char *ct;
|
||
};
|
||
|
||
int ccmode_cfb8_test_one_vector(const struct ccmode_cfb8 *cfb8, const struct ccmode_cfb8_vector *v, int dec);
|
||
|
||
int ccmode_cfb8_test_one_vector_chained(const struct ccmode_cfb8 *cfb8, const struct ccmode_cfb8_vector *v, int dec);
|
||
|
||
struct ccmode_xts_vector {
|
||
size_t keylen;
|
||
const void *dkey; /* keylen sized */
|
||
const void *tkey; /* keylen sized */
|
||
const char *tweak; /* 16 bytes */
|
||
size_t nbytes;
|
||
const char *pt; /* nbytes sized */
|
||
const char *ct; /* nbytes sized */
|
||
};
|
||
|
||
int ccmode_xts_test_one_vector(const struct ccmode_xts *xts,
|
||
const struct ccmode_xts_vector *v, void *out,
|
||
int dec);
|
||
|
||
int ccmode_xts_test_one_vector_chained(const struct ccmode_xts *xts,
|
||
const struct ccmode_xts_vector *v,
|
||
void *out, int dec);
|
||
|
||
struct ccmode_gcm_vector {
|
||
size_t keylen;
|
||
const void *key;
|
||
size_t ivlen;
|
||
const char *iv;
|
||
size_t ptlen;
|
||
const char *pt;
|
||
size_t adalen;
|
||
const char *ada;
|
||
size_t ctlen;
|
||
const char *ct;
|
||
size_t taglen;
|
||
const char *tag;
|
||
};
|
||
|
||
int ccmode_gcm_test_one_vector(const struct ccmode_gcm *gcm, const struct ccmode_gcm_vector *v, int dec);
|
||
|
||
int ccmode_gcm_test_one_vector_chained(const struct ccmode_gcm *gcm, const struct ccmode_gcm_vector *v, int dec);
|
||
|
||
struct ccmode_ccm_vector {
|
||
size_t keylen;
|
||
const void *key;
|
||
size_t noncelen;
|
||
const char *nonce;
|
||
size_t ptlen;
|
||
const char *pt;
|
||
size_t adalen;
|
||
const char *ada;
|
||
size_t ctlen;
|
||
const char *ct;
|
||
};
|
||
|
||
struct iterated_adata_ccm_test_vector
|
||
{
|
||
size_t key_n;
|
||
char *key;
|
||
size_t nonce_n;
|
||
char *nonce;
|
||
size_t aData_iterated_string_n;
|
||
char *iterated_string;
|
||
size_t aData_num_of_iterations;
|
||
size_t pdata_n;
|
||
char *pdata;
|
||
size_t full_ciphertext_n;
|
||
char *full_ciphertext;
|
||
size_t enc_data_n;
|
||
char *enc_data;
|
||
size_t tag_n;
|
||
char *tag;
|
||
};
|
||
|
||
|
||
int ccmode_ccm_test_one(const struct ccmode_ccm *ccm, size_t keylen, const void *keydata,
|
||
size_t nonce_len, const void *nonce, size_t adalen, const void *ada,
|
||
size_t nbytes, const void *in, const void *out,
|
||
size_t mac_size, const void *mac, int chained);
|
||
int ccmode_ccm_test_one_vector(const struct ccmode_ccm *ccm,
|
||
const struct ccmode_ccm_vector *v, int dec, int chained);
|
||
|
||
|
||
#endif /* _CCMODE_TEST_H_ */
|