kernel_samsung_a53x/crypto/fips140_test.h
2024-06-15 16:02:09 -03:00

94 lines
2.4 KiB
C
Executable file

#ifndef _CRYPTO_FIPS140_TEST_H
#define _CRYPTO_FIPS140_TEST_H
#include <linux/types.h>
#define FIPS140_MAX_LEN_IV 48
#define FIPS140_MAX_LEN_KEY 132
#define FIPS140_MAX_LEN_DIGEST 64
#define FIPS140_MAX_LEN_PCTEXT 1024
#define FIPS140_MAX_LEN_ENTROPY 48
#define FIPS140_MAX_LEN_STR 128
#define FIPS140_TEST_ENCRYPT 1
#define FIPS140_TEST_DECRYPT 0
#ifdef CONFIG_CRYPTO_FIPS_FUNC_TEST
void set_fips_functest_KAT_mode(const int num);
void set_fips_functest_conditional_mode(const int num);
char *get_fips_functest_mode(void);
#define SKC_FUNCTEST_KAT_CASE_NUM 25
#define SKC_FUNCTEST_CONDITIONAL_CASE_NUM 1
#define SKC_FUNCTEST_NO_TEST "NO_TEST"
#endif // CONFIG_CRYPTO_FIPS_FUNC_TEST
typedef struct {
const char key[FIPS140_MAX_LEN_KEY];
const char iv[FIPS140_MAX_LEN_IV];
const char ptext[FIPS140_MAX_LEN_PCTEXT];
const char ctext[FIPS140_MAX_LEN_PCTEXT];
unsigned char klen;
unsigned char iv_len;
unsigned short len;
} cipher_testvec_t;
typedef struct {
const char key[FIPS140_MAX_LEN_KEY];
const char ptext[FIPS140_MAX_LEN_PCTEXT];
const char digest[FIPS140_MAX_LEN_DIGEST];
unsigned short plen;
unsigned short klen;
} hash_testvec_t;
typedef struct {
const char key[FIPS140_MAX_LEN_KEY];
const char iv[FIPS140_MAX_LEN_IV];
const char input[FIPS140_MAX_LEN_PCTEXT];
const char assoc[FIPS140_MAX_LEN_PCTEXT];
const char result[FIPS140_MAX_LEN_PCTEXT];
unsigned int iv_len;
unsigned char klen;
unsigned short ilen;
unsigned short alen;
unsigned short rlen;
} aead_testvec_t;
typedef struct {
const unsigned char entropy[FIPS140_MAX_LEN_ENTROPY];
size_t entropylen;
const unsigned char entpra[FIPS140_MAX_LEN_ENTROPY];
const unsigned char entprb[FIPS140_MAX_LEN_ENTROPY];
size_t entprlen;
const unsigned char addtla[FIPS140_MAX_LEN_IV];
const unsigned char addtlb[FIPS140_MAX_LEN_IV];
size_t addtllen;
const unsigned char pers[FIPS140_MAX_LEN_STR];
size_t perslen;
const unsigned char expected[FIPS140_MAX_LEN_STR];
size_t expectedlen;
} drbg_testvec_t;
typedef struct {
const cipher_testvec_t *vecs;
unsigned int tv_count;
} cipher_test_suite_t;
typedef struct {
const hash_testvec_t *vecs;
unsigned int tv_count;
} hash_test_suite_t;
typedef struct {
const aead_testvec_t *vecs;
unsigned int tv_count;
} aead_test_suite_t;
typedef struct {
const drbg_testvec_t *vecs;
unsigned int tv_count;
} drbg_test_suite_t;
extern int alg_test_fips140(const char *driver, const char *alg);
int fips140_kat(void);
#endif /* _CRYPTO_FIPS140_TEST_H */