1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*
3  * Copyright 2018-2021 NXP
4  *
5  * CAAM Cipher Local header.
6  */
7 #ifndef __LOCAL_H__
8 #define __LOCAL_H__
9 
10 #include "caam_common.h"
11 
12 /*
13  * Prime generator structure for RSA
14  */
15 struct prime_data_rsa {
16 	uint8_t era;	   /* CAAM Era version */
17 	size_t key_size;   /* Key size in bits */
18 	struct caambuf *e; /* Key exponent e */
19 	struct caambuf *p; /* Prime p */
20 	struct caambuf *q; /* Prime q (can be NULL of only p asked) */
21 };
22 
23 /*
24  * Generate prime numbers for RSA
25  * Algorithm based on the Chapter B.3.3 of the FIPS.184-6 specification
26  *
27  * @data  [in/out] Prime generation data
28  */
29 enum caam_status caam_prime_rsa_gen(struct prime_data_rsa *data);
30 
31 /*
32  * Prime generator structure for DSA
33  */
34 struct prime_data_dsa {
35 	struct caambuf *g; /* Generator g */
36 	struct caambuf *p; /* Prime p */
37 	struct caambuf *q; /* Prime q */
38 };
39 
40 /*
41  * Generate prime numbers for DSA
42  * Algorithm based on the Chapter A.1.2 of the FIPS.186-4 specification
43  *
44  * @data  [in/out] Prime generation data
45  */
46 enum caam_status caam_prime_dsa_gen(struct prime_data_dsa *data);
47 
48 #endif /* __LOCAL_H__ */
49