SemiDrive SSDK Appication Program Interface PTG3.0
eccp_curve.h
Go to the documentation of this file.
1
9#ifndef ECCP_CURVE_H
10#define ECCP_CURVE_H
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16#include <stdint.h>
17
18#include "sdrv_crypto_utility.h"
19
20/* sample ecc curve */
21#define SUPPORT_BRAINPOOLP160R1
22#define SUPPORT_SECP192R1
23#define SUPPORT_SECP224R1
24#define SUPPORT_SECP256R1
25#define SUPPORT_SECP384R1
26#define SUPPORT_BRAINPOOLP512R1
27#define SUPPORT_SECP521R1
28
29#define POINT_NOT_COMPRESSED (0x04)
30
31/* eccp curve struct */
32typedef struct {
33 uint32_t eccp_p_bitLen; /* bit length of prime p */
34 uint32_t eccp_n_bitLen; /* bit length of order n */
35 uint32_t *eccp_p;
36 uint32_t *eccp_p_h;
37 uint32_t *eccp_a;
38 uint32_t *eccp_b;
39 uint32_t *eccp_Gx;
40 uint32_t *eccp_Gy;
41 uint32_t *eccp_n;
42 uint32_t *eccp_n_h;
43 uint32_t *eccp_half_Gx;
44 uint32_t *eccp_half_Gy;
46
47#ifdef SUPPORT_BRAINPOOLP160R1
48extern const eccp_curve_t brainpoolp160r1[1];
49#endif
50
51#ifdef SUPPORT_SECP192R1
52extern const eccp_curve_t secp192r1[1];
53#endif
54
55#ifdef SUPPORT_SECP224R1
56extern const eccp_curve_t secp224r1[1];
57#endif
58
59#ifdef SUPPORT_SECP256R1
60extern const eccp_curve_t secp256r1[1];
61#endif
62
63#ifdef SUPPORT_SECP384R1
64extern const eccp_curve_t secp384r1[1];
65#endif
66
67#ifdef SUPPORT_BRAINPOOLP512R1
68extern const eccp_curve_t brainpoolp512r1[1];
69#endif
70
71#ifdef SUPPORT_SECP521R1
72extern const eccp_curve_t secp521r1[1];
73#endif
74
75/********* Curve25519 struct *********/
76typedef struct {
77 uint32_t p_bitLen; /* bit length of prime p */
78 uint32_t *p;
79 uint32_t *p_h;
80 uint32_t *a24; /* (A-2)/4 */
81 uint32_t *u;
82 uint32_t *v;
83 uint32_t *n; /* order of curve or point(Gx,Gy) */
84 uint32_t *n_h;
85 uint32_t *h;
87
88/********* Edward Curve 25519 struct *********/
89typedef struct {
90 uint32_t p_bitLen; /* bit length of prime p */
91 uint32_t *p;
92 uint32_t *p_h;
93 uint32_t *d;
94 uint32_t *Gx;
95 uint32_t *Gy;
96 uint32_t *n; /* order of curve or point(Gx,Gy) */
97 uint32_t *n_h;
98 uint32_t *h;
100
101#ifdef __cplusplus
102}
103#endif
104
105#endif
const eccp_curve_t brainpoolp160r1[1]
const eccp_curve_t secp192r1[1]
const eccp_curve_t secp521r1[1]
const eccp_curve_t secp256r1[1]
const eccp_curve_t secp384r1[1]
const eccp_curve_t brainpoolp512r1[1]
const eccp_curve_t secp224r1[1]
crypto utility api
Definition: eccp_curve.h:32
uint32_t * eccp_n_h
Definition: eccp_curve.h:42
uint32_t eccp_p_bitLen
Definition: eccp_curve.h:33
uint32_t * eccp_p_h
Definition: eccp_curve.h:36
uint32_t * eccp_p
Definition: eccp_curve.h:35
uint32_t eccp_n_bitLen
Definition: eccp_curve.h:34
uint32_t * eccp_Gx
Definition: eccp_curve.h:39
uint32_t * eccp_Gy
Definition: eccp_curve.h:40
uint32_t * eccp_half_Gx
Definition: eccp_curve.h:43
uint32_t * eccp_a
Definition: eccp_curve.h:37
uint32_t * eccp_b
Definition: eccp_curve.h:38
uint32_t * eccp_half_Gy
Definition: eccp_curve.h:44
uint32_t * eccp_n
Definition: eccp_curve.h:41
Definition: eccp_curve.h:89
uint32_t p_bitLen
Definition: eccp_curve.h:90
uint32_t * p_h
Definition: eccp_curve.h:92
uint32_t * d
Definition: eccp_curve.h:93
uint32_t * Gx
Definition: eccp_curve.h:94
uint32_t * n_h
Definition: eccp_curve.h:97
uint32_t * p
Definition: eccp_curve.h:91
uint32_t * h
Definition: eccp_curve.h:98
uint32_t * n
Definition: eccp_curve.h:96
uint32_t * Gy
Definition: eccp_curve.h:95
Definition: eccp_curve.h:76
uint32_t p_bitLen
Definition: eccp_curve.h:77
uint32_t * p_h
Definition: eccp_curve.h:79
uint32_t * v
Definition: eccp_curve.h:82
uint32_t * a24
Definition: eccp_curve.h:80
uint32_t * n_h
Definition: eccp_curve.h:84
uint32_t * p
Definition: eccp_curve.h:78
uint32_t * h
Definition: eccp_curve.h:85
uint32_t * n
Definition: eccp_curve.h:83
uint32_t * u
Definition: eccp_curve.h:81