/ external / libecc / include / libecc / lib_ecc_types.h
lib_ecc_types.h
  1  /*
  2   *  Copyright (C) 2017 - This file is part of libecc project
  3   *
  4   *  Authors:
  5   *      Ryad BENADJILA <ryadbenadjila@gmail.com>
  6   *      Arnaud EBALARD <arnaud.ebalard@ssi.gouv.fr>
  7   *      Jean-Pierre FLORI <jean-pierre.flori@ssi.gouv.fr>
  8   *
  9   *  Contributors:
 10   *      Nicolas VIVET <nicolas.vivet@ssi.gouv.fr>
 11   *      Karim KHALFALLAH <karim.khalfallah@ssi.gouv.fr>
 12   *
 13   *  This software is licensed under a dual BSD and GPL v2 license.
 14   *  See LICENSE file at the root folder of the project.
 15   */
 16  #ifndef __LIB_ECC_TYPES_H__
 17  #define __LIB_ECC_TYPES_H__
 18  
 19  #include <libecc/lib_ecc_config.h>
 20  
 21  /* Signature algorithm types */
 22  typedef enum {
 23  	UNKNOWN_ALG = 0,
 24  #ifdef WITH_SIG_ECDSA
 25  	ECDSA = 1,
 26  #endif
 27  #ifdef WITH_SIG_ECKCDSA
 28  	ECKCDSA = 2,
 29  #endif
 30  #ifdef WITH_SIG_ECSDSA
 31  	ECSDSA = 3,
 32  #endif
 33  #ifdef WITH_SIG_ECOSDSA
 34  	ECOSDSA = 4,
 35  #endif
 36  #ifdef WITH_SIG_ECFSDSA
 37  	ECFSDSA = 5,
 38  #endif
 39  #ifdef WITH_SIG_ECGDSA
 40  	ECGDSA = 6,
 41  #endif
 42  #ifdef WITH_SIG_ECRDSA
 43  	ECRDSA = 7,
 44  #endif
 45  #ifdef WITH_SIG_SM2
 46          SM2 = 8,
 47  #endif
 48  #ifdef WITH_SIG_EDDSA25519
 49  	EDDSA25519    = 9,
 50  	EDDSA25519CTX = 10,
 51  	EDDSA25519PH  = 11,
 52  #endif
 53  #ifdef WITH_SIG_EDDSA448
 54  	EDDSA448   = 12,
 55  	EDDSA448PH = 13,
 56  #endif
 57  #ifdef WITH_SIG_DECDSA
 58  	DECDSA = 14,
 59  #endif
 60  	/* ECDH types */
 61  #ifdef WITH_ECCCDH
 62  	ECCCDH = 15,
 63  #endif
 64  #ifdef WITH_X25519
 65  	X25519 = 16,
 66  #endif
 67  #ifdef WITH_X448
 68  	X448 = 17,
 69  #endif
 70  #ifdef WITH_SIG_BIGN
 71  	BIGN = 18,
 72  #endif
 73  #ifdef WITH_SIG_DBIGN
 74  	DBIGN = 19,
 75  #endif
 76  #ifdef WITH_SIG_BIP0340
 77  	BIP0340 = 20,
 78  #endif
 79  } ec_alg_type;
 80  
 81  /* Hash algorithm types */
 82  typedef enum {
 83  	UNKNOWN_HASH_ALG = 0,
 84  #ifdef WITH_HASH_SHA224
 85  	SHA224 = 1,
 86  #endif
 87  #ifdef WITH_HASH_SHA256
 88  	SHA256 = 2,
 89  #endif
 90  #ifdef WITH_HASH_SHA384
 91  	SHA384 = 3,
 92  #endif
 93  #ifdef WITH_HASH_SHA512
 94  	SHA512 = 4,
 95  #endif
 96  #ifdef WITH_HASH_SHA3_224
 97  	SHA3_224 = 5,
 98  #endif
 99  #ifdef WITH_HASH_SHA3_256
100  	SHA3_256 = 6,
101  #endif
102  #ifdef WITH_HASH_SHA3_384
103  	SHA3_384 = 7,
104  #endif
105  #ifdef WITH_HASH_SHA3_512
106  	SHA3_512 = 8,
107  #endif
108  #ifdef WITH_HASH_SHA512_224
109  	SHA512_224 = 9,
110  #endif
111  #ifdef WITH_HASH_SHA512_256
112  	SHA512_256 = 10,
113  #endif
114  #ifdef WITH_HASH_SM3
115          SM3 = 11,
116  #endif
117  #ifdef WITH_HASH_SHAKE256
118  	SHAKE256 = 12,
119  #endif
120  #ifdef WITH_HASH_STREEBOG256
121  	STREEBOG256 = 13,
122  #endif
123  #ifdef WITH_HASH_STREEBOG512
124  	STREEBOG512 = 14,
125  #endif
126  #ifdef WITH_HASH_RIPEMD160
127  	RIPEMD160 = 15,
128  #endif
129  #ifdef WITH_HASH_BELT_HASH
130  	BELT_HASH = 16,
131  #endif
132  #ifdef WITH_HASH_BASH224
133  	BASH224 = 17,
134  #endif
135  #ifdef WITH_HASH_BASH256
136  	BASH256 = 18,
137  #endif
138  #ifdef WITH_HASH_BASH384
139  	BASH384 = 19,
140  #endif
141  #ifdef WITH_HASH_BASH512
142  	BASH512 = 20,
143  #endif
144  } hash_alg_type;
145  
146  /* All curves we support */
147  typedef enum {
148  	UNKNOWN_CURVE = 0,
149  #ifdef WITH_CURVE_FRP256V1
150  	FRP256V1 = 1,
151  #endif
152  #ifdef WITH_CURVE_SECP192R1
153  	SECP192R1 = 2,
154  #endif
155  #ifdef WITH_CURVE_SECP224R1
156  	SECP224R1 = 3,
157  #endif
158  #ifdef WITH_CURVE_SECP256R1
159  	SECP256R1 = 4,
160  #endif
161  #ifdef WITH_CURVE_SECP384R1
162  	SECP384R1 = 5,
163  #endif
164  #ifdef WITH_CURVE_SECP521R1
165  	SECP521R1 = 6,
166  #endif
167  #ifdef WITH_CURVE_BRAINPOOLP224R1
168  	BRAINPOOLP224R1 = 7,
169  #endif
170  #ifdef WITH_CURVE_BRAINPOOLP256R1
171  	BRAINPOOLP256R1 = 8,
172  #endif
173  #ifdef WITH_CURVE_BRAINPOOLP512R1
174  	BRAINPOOLP512R1 = 9,
175  #endif
176  #ifdef WITH_CURVE_GOST256
177  	GOST256 = 10,
178  #endif
179  #ifdef WITH_CURVE_GOST512
180  	GOST512 = 11,
181  #endif
182  #ifdef WITH_CURVE_BRAINPOOLP384R1
183  	BRAINPOOLP384R1 = 12,
184  #endif
185  #ifdef WITH_CURVE_BRAINPOOLP192R1
186  	BRAINPOOLP192R1 = 13,
187  #endif
188  #ifdef WITH_CURVE_WEI25519
189  	WEI25519 = 14,
190  #endif
191  #ifdef WITH_CURVE_WEI448
192  	WEI448 = 15,
193  #endif
194  #ifdef WITH_CURVE_SM2P256TEST
195  	SM2P256TEST = 16,
196  #endif
197  #ifdef WITH_CURVE_SM2P256V1
198  	SM2P256V1 = 17,
199  #endif
200  #ifdef WITH_CURVE_GOST_R3410_2012_256_PARAMSETA
201  	GOST_R3410_2012_256_PARAMSETA = 18,
202  #endif
203  #ifdef WITH_CURVE_SECP256K1
204  	SECP256K1 = 19,
205  #endif
206  #ifdef WITH_CURVE_GOST_R3410_2001_TESTPARAMSET
207  	GOST_R3410_2001_TESTPARAMSET = 20,
208  #endif
209  #ifdef WITH_CURVE_GOST_R3410_2001_CRYPTOPRO_A_PARAMSET
210  	GOST_R3410_2001_CRYPTOPRO_A_PARAMSET = 21,
211  #endif
212  #ifdef WITH_CURVE_GOST_R3410_2001_CRYPTOPRO_B_PARAMSET
213  	GOST_R3410_2001_CRYPTOPRO_B_PARAMSET = 22,
214  #endif
215  #ifdef WITH_CURVE_GOST_R3410_2001_CRYPTOPRO_C_PARAMSET
216  	GOST_R3410_2001_CRYPTOPRO_C_PARAMSET = 23,
217  #endif
218  #ifdef WITH_CURVE_GOST_R3410_2001_CRYPTOPRO_XCHA_PARAMSET
219  	GOST_R3410_2001_CRYPTOPRO_XCHA_PARAMSET = 24,
220  #endif
221  #ifdef WITH_CURVE_GOST_R3410_2001_CRYPTOPRO_XCHB_PARAMSET
222  	GOST_R3410_2001_CRYPTOPRO_XCHB_PARAMSET = 25,
223  #endif
224  #ifdef WITH_CURVE_GOST_R3410_2012_256_PARAMSETB
225  	GOST_R3410_2012_256_PARAMSETB = 26,
226  #endif
227  #ifdef WITH_CURVE_GOST_R3410_2012_256_PARAMSETC
228  	GOST_R3410_2012_256_PARAMSETC = 27,
229  #endif
230  #ifdef WITH_CURVE_GOST_R3410_2012_256_PARAMSETD
231  	GOST_R3410_2012_256_PARAMSETD = 28,
232  #endif
233  #ifdef WITH_CURVE_GOST_R3410_2012_512_PARAMSETTEST
234  	GOST_R3410_2012_512_PARAMSETTEST = 29,
235  #endif
236  #ifdef WITH_CURVE_GOST_R3410_2012_512_PARAMSETA
237  	GOST_R3410_2012_512_PARAMSETA = 30,
238  #endif
239  #ifdef WITH_CURVE_GOST_R3410_2012_512_PARAMSETB
240  	GOST_R3410_2012_512_PARAMSETB = 31,
241  #endif
242  #ifdef WITH_CURVE_GOST_R3410_2012_512_PARAMSETC
243  	GOST_R3410_2012_512_PARAMSETC = 32,
244  #endif
245  #ifdef WITH_CURVE_SECP192K1
246  	SECP192K1 = 33,
247  #endif
248  #ifdef WITH_CURVE_SECP224K1
249  	SECP224K1 = 34,
250  #endif
251  #ifdef WITH_CURVE_BRAINPOOLP192T1
252  	BRAINPOOLP192T1 = 35,
253  #endif
254  #ifdef WITH_CURVE_BRAINPOOLP224T1
255  	BRAINPOOLP224T1 = 36,
256  #endif
257  #ifdef WITH_CURVE_BRAINPOOLP256T1
258  	BRAINPOOLP256T1 = 37,
259  #endif
260  #ifdef WITH_CURVE_BRAINPOOLP320R1
261  	BRAINPOOLP320R1 = 38,
262  #endif
263  #ifdef WITH_CURVE_BRAINPOOLP320T1
264  	BRAINPOOLP320T1 = 39,
265  #endif
266  #ifdef WITH_CURVE_BRAINPOOLP384T1
267  	BRAINPOOLP384T1 = 40,
268  #endif
269  #ifdef WITH_CURVE_BRAINPOOLP512T1
270  	BRAINPOOLP512T1 = 41,
271  #endif
272  #ifdef WITH_CURVE_BIGN256V1
273  	BIGN256V1 = 42,
274  #endif
275  #ifdef WITH_CURVE_BIGN384V1
276  	BIGN384V1 = 43,
277  #endif
278  #ifdef WITH_CURVE_BIGN512V1
279  	BIGN512V1 = 44,
280  #endif
281  /* ADD curves type here */
282  /* XXX: Do not remove the comment above, as it is
283   * used by external tools as a placeholder to add or
284   * remove automatically generated code.
285   */
286  } ec_curve_type;
287  
288  #endif /* __LIB_ECC_TYPES_H__ */