Bouffalo SDK  1.0
Bouffalolab Software Development Kit
bflb_sec_pka.h
Go to the documentation of this file.
1 #ifndef _BFLB_SEC_PKA_H
2 #define _BFLB_SEC_PKA_H
3 
4 #include "bflb_core.h"
5 
14 #define SEC_ENG_PKA_REG_SIZE_8 1
15 #define SEC_ENG_PKA_REG_SIZE_16 2
16 #define SEC_ENG_PKA_REG_SIZE_32 3
17 #define SEC_ENG_PKA_REG_SIZE_64 4
18 #define SEC_ENG_PKA_REG_SIZE_96 5
19 #define SEC_ENG_PKA_REG_SIZE_128 6
20 #define SEC_ENG_PKA_REG_SIZE_192 7
21 #define SEC_ENG_PKA_REG_SIZE_256 8
22 #define SEC_ENG_PKA_REG_SIZE_384 9
23 #define SEC_ENG_PKA_REG_SIZE_512 10
24 
25 #define SEC_ENG_PKA_OP_PPSEL 0x00
26 #define SEC_ENG_PKA_OP_LMOD2N 0x11
27 #define SEC_ENG_PKA_OP_LDIV2N 0x12
28 #define SEC_ENG_PKA_OP_LMUL2N 0x13
29 #define SEC_ENG_PKA_OP_LDIV 0x14
30 #define SEC_ENG_PKA_OP_LSQR 0x15
31 #define SEC_ENG_PKA_OP_LMUL 0x16
32 #define SEC_ENG_PKA_OP_LSUB 0x17
33 #define SEC_ENG_PKA_OP_LADD 0x18
34 #define SEC_ENG_PKA_OP_LCMP 0x19
35 #define SEC_ENG_PKA_OP_MDIV2 0x21
36 #define SEC_ENG_PKA_OP_MINV 0x22
37 #define SEC_ENG_PKA_OP_MEXP 0x23
38 #define SEC_ENG_PKA_OP_MSQR 0x24
39 #define SEC_ENG_PKA_OP_MMUL 0x25
40 #define SEC_ENG_PKA_OP_MREM 0x26
41 #define SEC_ENG_PKA_OP_MSUB 0x27
42 #define SEC_ENG_PKA_OP_MADD 0x28
43 #define SEC_ENG_PKA_OP_RESIZE 0x31
44 #define SEC_ENG_PKA_OP_MOVDAT 0x32
45 #define SEC_ENG_PKA_OP_NLIR 0x33
46 #define SEC_ENG_PKA_OP_SLIR 0x34
47 #define SEC_ENG_PKA_OP_CLIR 0x35
48 #define SEC_ENG_PKA_OP_CFLIRI_BUFFER 0x36
49 #define SEC_ENG_PKA_OP_CTLIRI_PLD 0x37
50 #define SEC_ENG_PKA_OP_CFLIR_BUFFER 0x38
51 #define SEC_ENG_PKA_OP_CTLIR_PLD 0x39
52 
53 #ifdef __cplusplus
54 extern "C" {
55 #endif
56 
57 void bflb_pka_init(struct bflb_device_s *dev);
58 void bflb_pka_deinit(struct bflb_device_s *dev);
59 
60 void bflb_pka_lmod2n(struct bflb_device_s *dev,
61  uint8_t s0_regindex,
62  uint8_t s0_regsize,
63  uint8_t d0_regindex,
64  uint8_t d0_regsize,
65  uint16_t bit_shift,
66  uint8_t lastop);
67 
68 void bflb_pka_ldiv2n(struct bflb_device_s *dev,
69  uint8_t s0_regindex,
70  uint8_t s0_regsize,
71  uint8_t d0_regindex,
72  uint8_t d0_regsize,
73  uint16_t bit_shift,
74  uint8_t lastop);
75 
76 void bflb_pka_lmul2n(struct bflb_device_s *dev,
77  uint8_t s0_regindex,
78  uint8_t s0_regsize,
79  uint8_t d0_regindex,
80  uint8_t d0_regsize,
81  uint16_t bit_shift,
82  uint8_t lastop);
83 
84 void bflb_pka_ldiv(struct bflb_device_s *dev,
85  uint8_t s0_regindex,
86  uint8_t s0_regsize,
87  uint8_t d0_regindex,
88  uint8_t d0_regsize,
89  uint8_t s2_regindex,
90  uint8_t s2_regsize,
91  uint8_t lastop);
92 
93 void bflb_pka_lsqr(struct bflb_device_s *dev,
94  uint8_t s0_regindex,
95  uint8_t s0_regsize,
96  uint8_t d0_regindex,
97  uint8_t d0_regsize,
98  uint8_t lastop);
99 
100 void bflb_pka_lmul(struct bflb_device_s *dev,
101  uint8_t s0_regindex,
102  uint8_t s0_regsize,
103  uint8_t d0_regindex,
104  uint8_t d0_regsize,
105  uint8_t s1_regindex,
106  uint8_t s1_regsize,
107  uint8_t lastop);
108 
109 void bflb_pka_lsub(struct bflb_device_s *dev,
110  uint8_t s0_regindex,
111  uint8_t s0_regsize,
112  uint8_t d0_regindex,
113  uint8_t d0_regsize,
114  uint8_t s1_regindex,
115  uint8_t s1_regsize,
116  uint8_t lastop);
117 
118 void bflb_pka_ladd(struct bflb_device_s *dev,
119  uint8_t s0_regindex,
120  uint8_t s0_regsize,
121  uint8_t d0_regindex,
122  uint8_t d0_regsize,
123  uint8_t s1_regindex,
124  uint8_t s1_regsize,
125  uint8_t lastop);
126 
127 uint8_t bflb_pka_lcmp(struct bflb_device_s *dev,
128  uint8_t s0_regindex,
129  uint8_t s0_regsize,
130  uint8_t s1_regindex,
131  uint8_t s1_regsize);
132 
133 void bflb_pka_minv(struct bflb_device_s *dev,
134  uint8_t s0_regindex,
135  uint8_t s0_regsize,
136  uint8_t d0_regindex,
137  uint8_t d0_regsize,
138  uint8_t s2_regindex,
139  uint8_t s2_regsize,
140  uint8_t lastop);
141 
142 void bflb_pka_mexp(struct bflb_device_s *dev,
143  uint8_t s0_regindex,
144  uint8_t s0_regsize,
145  uint8_t d0_regindex,
146  uint8_t d0_regsize,
147  uint8_t s1_regindex,
148  uint8_t s1_regsize,
149  uint8_t s2_regindex,
150  uint8_t s2_regsize,
151  uint8_t lastop);
152 
153 void bflb_pka_msqr(struct bflb_device_s *dev,
154  uint8_t s0_regindex,
155  uint8_t s0_regsize,
156  uint8_t d0_regindex,
157  uint8_t d0_regsize,
158  uint8_t s2_regindex,
159  uint8_t s2_regsize,
160  uint8_t lastop);
161 
162 void bflb_pka_mmul(struct bflb_device_s *dev,
163  uint8_t s0_regindex,
164  uint8_t s0_regsize,
165  uint8_t d0_regindex,
166  uint8_t d0_regsize,
167  uint8_t s1_regindex,
168  uint8_t s1_regsize,
169  uint8_t s2_regindex,
170  uint8_t s2_regsize,
171  uint8_t lastop);
172 
173 void bflb_pka_mrem(struct bflb_device_s *dev,
174  uint8_t s0_regindex,
175  uint8_t s0_regsize,
176  uint8_t d0_regindex,
177  uint8_t d0_regsize,
178  uint8_t s2_regindex,
179  uint8_t s2_regsize,
180  uint8_t lastop);
181 
182 void bflb_pka_msub(struct bflb_device_s *dev,
183  uint8_t s0_regindex,
184  uint8_t s0_regsize,
185  uint8_t d0_regindex,
186  uint8_t d0_regsize,
187  uint8_t s1_regindex,
188  uint8_t s1_regsize,
189  uint8_t s2_regindex,
190  uint8_t s2_regsize,
191  uint8_t lastop);
192 
193 void bflb_pka_madd(struct bflb_device_s *dev,
194  uint8_t s0_regindex,
195  uint8_t s0_regsize,
196  uint8_t d0_regindex,
197  uint8_t d0_regsize,
198  uint8_t s1_regindex,
199  uint8_t s1_regsize,
200  uint8_t s2_regindex,
201  uint8_t s2_regsize,
202  uint8_t lastop);
203 
204 void bflb_pka_regsize(struct bflb_device_s *dev,
205  uint8_t s0_regindex,
206  uint8_t s0_regsize,
207  uint8_t d0_regindex,
208  uint8_t d0_regsize,
209  uint8_t lastop);
210 
211 void bflb_pka_movdat(struct bflb_device_s *dev,
212  uint8_t s0_regindex,
213  uint8_t s0_regsize,
214  uint8_t d0_regindex,
215  uint8_t d0_regsize,
216  uint8_t lastop);
217 
218 void bflb_pka_nlir(struct bflb_device_s *dev,
219  uint8_t s0_regindex,
220  uint8_t s0_regsize,
221  uint8_t d0_regindex,
222  uint8_t d0_regsize,
223  uint8_t lastop);
224 
225 void bflb_pka_slir(struct bflb_device_s *dev,
226  uint8_t regindex,
227  uint8_t regsize,
228  uint32_t data,
229  uint8_t lastop);
230 
231 void bflb_pka_clir(struct bflb_device_s *dev,
232  uint8_t regindex,
233  uint8_t regsize,
234  uint16_t size,
235  uint8_t lastop);
236 
237 void bflb_pka_write(struct bflb_device_s *dev,
238  uint8_t regindex,
239  uint8_t regsize,
240  const uint32_t *data,
241  uint16_t size,
242  uint8_t lastop);
243 
244 void bflb_pka_read(struct bflb_device_s *dev,
245  uint8_t regindex,
246  uint8_t regsize,
247  uint32_t *data,
248  uint16_t size);
249 
250 void bflb_pka_gf2mont(struct bflb_device_s *dev,
251  uint8_t s_regindex,
252  uint8_t s_regsize,
253  uint8_t d_regindex,
254  uint8_t d_regsize,
255  uint8_t t_regindex,
256  uint8_t t_regsize,
257  uint8_t p_regindex,
258  uint8_t p_regsize,
259  uint32_t size);
260 
261 void bflb_pka_mont2gf(struct bflb_device_s *dev,
262  uint8_t s_regindex,
263  uint8_t s_regsize,
264  uint8_t d_regindex,
265  uint8_t d_regsize,
266  uint8_t invt_regindex,
267  uint8_t invt_regsize,
268  uint8_t t_regindex,
269  uint8_t t_regsize,
270  uint8_t p_regindex,
271  uint8_t p_regsize);
272 
273 #ifdef __cplusplus
274 }
275 #endif
276 
285 #endif
void bflb_pka_clir(struct bflb_device_s *dev, uint8_t regindex, uint8_t regsize, uint16_t size, uint8_t lastop)
void bflb_pka_regsize(struct bflb_device_s *dev, uint8_t s0_regindex, uint8_t s0_regsize, uint8_t d0_regindex, uint8_t d0_regsize, uint8_t lastop)
void bflb_pka_ldiv2n(struct bflb_device_s *dev, uint8_t s0_regindex, uint8_t s0_regsize, uint8_t d0_regindex, uint8_t d0_regsize, uint16_t bit_shift, uint8_t lastop)
void bflb_pka_lmul(struct bflb_device_s *dev, uint8_t s0_regindex, uint8_t s0_regsize, uint8_t d0_regindex, uint8_t d0_regsize, uint8_t s1_regindex, uint8_t s1_regsize, uint8_t lastop)
void bflb_pka_lmul2n(struct bflb_device_s *dev, uint8_t s0_regindex, uint8_t s0_regsize, uint8_t d0_regindex, uint8_t d0_regsize, uint16_t bit_shift, uint8_t lastop)
void bflb_pka_minv(struct bflb_device_s *dev, uint8_t s0_regindex, uint8_t s0_regsize, uint8_t d0_regindex, uint8_t d0_regsize, uint8_t s2_regindex, uint8_t s2_regsize, uint8_t lastop)
void bflb_pka_lmod2n(struct bflb_device_s *dev, uint8_t s0_regindex, uint8_t s0_regsize, uint8_t d0_regindex, uint8_t d0_regsize, uint16_t bit_shift, uint8_t lastop)
void bflb_pka_movdat(struct bflb_device_s *dev, uint8_t s0_regindex, uint8_t s0_regsize, uint8_t d0_regindex, uint8_t d0_regsize, uint8_t lastop)
void bflb_pka_msub(struct bflb_device_s *dev, uint8_t s0_regindex, uint8_t s0_regsize, uint8_t d0_regindex, uint8_t d0_regsize, uint8_t s1_regindex, uint8_t s1_regsize, uint8_t s2_regindex, uint8_t s2_regsize, uint8_t lastop)
void bflb_pka_lsqr(struct bflb_device_s *dev, uint8_t s0_regindex, uint8_t s0_regsize, uint8_t d0_regindex, uint8_t d0_regsize, uint8_t lastop)
void bflb_pka_mrem(struct bflb_device_s *dev, uint8_t s0_regindex, uint8_t s0_regsize, uint8_t d0_regindex, uint8_t d0_regsize, uint8_t s2_regindex, uint8_t s2_regsize, uint8_t lastop)
void bflb_pka_nlir(struct bflb_device_s *dev, uint8_t s0_regindex, uint8_t s0_regsize, uint8_t d0_regindex, uint8_t d0_regsize, uint8_t lastop)
void bflb_pka_lsub(struct bflb_device_s *dev, uint8_t s0_regindex, uint8_t s0_regsize, uint8_t d0_regindex, uint8_t d0_regsize, uint8_t s1_regindex, uint8_t s1_regsize, uint8_t lastop)
void bflb_pka_ladd(struct bflb_device_s *dev, uint8_t s0_regindex, uint8_t s0_regsize, uint8_t d0_regindex, uint8_t d0_regsize, uint8_t s1_regindex, uint8_t s1_regsize, uint8_t lastop)
void bflb_pka_msqr(struct bflb_device_s *dev, uint8_t s0_regindex, uint8_t s0_regsize, uint8_t d0_regindex, uint8_t d0_regsize, uint8_t s2_regindex, uint8_t s2_regsize, uint8_t lastop)
void bflb_pka_write(struct bflb_device_s *dev, uint8_t regindex, uint8_t regsize, const uint32_t *data, uint16_t size, uint8_t lastop)
void bflb_pka_mexp(struct bflb_device_s *dev, uint8_t s0_regindex, uint8_t s0_regsize, uint8_t d0_regindex, uint8_t d0_regsize, uint8_t s1_regindex, uint8_t s1_regsize, uint8_t s2_regindex, uint8_t s2_regsize, uint8_t lastop)
uint8_t bflb_pka_lcmp(struct bflb_device_s *dev, uint8_t s0_regindex, uint8_t s0_regsize, uint8_t s1_regindex, uint8_t s1_regsize)
void bflb_pka_madd(struct bflb_device_s *dev, uint8_t s0_regindex, uint8_t s0_regsize, uint8_t d0_regindex, uint8_t d0_regsize, uint8_t s1_regindex, uint8_t s1_regsize, uint8_t s2_regindex, uint8_t s2_regsize, uint8_t lastop)
void bflb_pka_deinit(struct bflb_device_s *dev)
void bflb_pka_ldiv(struct bflb_device_s *dev, uint8_t s0_regindex, uint8_t s0_regsize, uint8_t d0_regindex, uint8_t d0_regsize, uint8_t s2_regindex, uint8_t s2_regsize, uint8_t lastop)
void bflb_pka_slir(struct bflb_device_s *dev, uint8_t regindex, uint8_t regsize, uint32_t data, uint8_t lastop)
void bflb_pka_mmul(struct bflb_device_s *dev, uint8_t s0_regindex, uint8_t s0_regsize, uint8_t d0_regindex, uint8_t d0_regsize, uint8_t s1_regindex, uint8_t s1_regsize, uint8_t s2_regindex, uint8_t s2_regsize, uint8_t lastop)
void bflb_pka_init(struct bflb_device_s *dev)
void bflb_pka_read(struct bflb_device_s *dev, uint8_t regindex, uint8_t regsize, uint32_t *data, uint16_t size)
void bflb_pka_mont2gf(struct bflb_device_s *dev, uint8_t s_regindex, uint8_t s_regsize, uint8_t d_regindex, uint8_t d_regsize, uint8_t invt_regindex, uint8_t invt_regsize, uint8_t t_regindex, uint8_t t_regsize, uint8_t p_regindex, uint8_t p_regsize)
void bflb_pka_gf2mont(struct bflb_device_s *dev, uint8_t s_regindex, uint8_t s_regsize, uint8_t d_regindex, uint8_t d_regsize, uint8_t t_regindex, uint8_t t_regsize, uint8_t p_regindex, uint8_t p_regsize, uint32_t size)