53 lines
2.5 KiB
C
53 lines
2.5 KiB
C
/* Copyright (c) (2010-2012,2014-2020) 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 _CORECRYPTO_CRYPTO_TEST_MODES_H_
|
||
#define _CORECRYPTO_CRYPTO_TEST_MODES_H_
|
||
|
||
#include "ccsymmetric.h"
|
||
|
||
typedef struct ccsymmetric_test_t {
|
||
char *keyStr;
|
||
char *twkStr;
|
||
char *init_ivStr; // or nonce
|
||
char *block_ivStr;
|
||
char *aDataStr;
|
||
char *aData2Str;
|
||
char *ptStr;
|
||
char *ctStr;
|
||
char *tagStr;
|
||
} ccsymmetric_test_vector;
|
||
|
||
typedef struct duplex_cryptor_t {
|
||
ciphermode_t encrypt_ciphermode;
|
||
ciphermode_t decrypt_ciphermode;
|
||
cc_cipher_select cipher;
|
||
cc_mode_select mode;
|
||
cc_digest_select digest;
|
||
} duplex_cryptor_s, *duplex_cryptor;
|
||
|
||
int test_mode(ciphermode_t encrypt_ciphermode, ciphermode_t decrypt_ciphermode, cc_cipher_select cipher, cc_mode_select mode);
|
||
int test_hmac_mode(ciphermode_t encrypt_ciphermode, ciphermode_t decrypt_ciphermode, cc_cipher_select cipher, cc_mode_select mode, cc_digest_select digest);
|
||
int test_gcm(const struct ccmode_gcm *encrypt_ciphermode, const struct ccmode_gcm *decrypt_ciphermode);
|
||
int test_ccm(const struct ccmode_ccm *encrypt_ciphermode, const struct ccmode_ccm *decrypt_ciphermode);
|
||
int test_xts(const struct ccmode_xts *encrypt_ciphermode, const struct ccmode_xts *decrypt_ciphermode);
|
||
int test_siv_hmac_corner_cases(duplex_cryptor cryptor);
|
||
int ccmode_siv_hmac_state_tests(cc_ciphermode_descriptor cm, cc_symmetric_context_p ctx);
|
||
int ccmode_aes_siv_encrypt_decrypt_in_place_tests(cc_ciphermode_descriptor cm, cc_symmetric_context_p ctx, cc_ciphermode_descriptor dcm, cc_symmetric_context_p dctx);
|
||
int test_aes_siv_corner_cases(duplex_cryptor cryptor);
|
||
|
||
/* This function is intended to work for any block cipher
|
||
It can be called from ccaes for AES-CTR, or ccdes for DES-CTR for example */
|
||
int test_ctr(const char *name, const struct ccmode_ctr *encrypt_ciphermode, const struct ccmode_ctr *decrypt_ciphermode,
|
||
const ccsymmetric_test_vector *sym_vectors);
|
||
|
||
#endif /* _CORECRYPTO_CRYPTO_TEST_MODES_H_ */
|