269 lines
9.1 KiB
C
269 lines
9.1 KiB
C
#ifndef _BFLB_SEC_PKA_H
|
|
#define _BFLB_SEC_PKA_H
|
|
|
|
#include "bflb_core.h"
|
|
|
|
#define SEC_ENG_PKA_REG_SIZE_8 1
|
|
#define SEC_ENG_PKA_REG_SIZE_16 2
|
|
#define SEC_ENG_PKA_REG_SIZE_32 3
|
|
#define SEC_ENG_PKA_REG_SIZE_64 4
|
|
#define SEC_ENG_PKA_REG_SIZE_96 5
|
|
#define SEC_ENG_PKA_REG_SIZE_128 6
|
|
#define SEC_ENG_PKA_REG_SIZE_192 7
|
|
#define SEC_ENG_PKA_REG_SIZE_256 8
|
|
#define SEC_ENG_PKA_REG_SIZE_384 9
|
|
#define SEC_ENG_PKA_REG_SIZE_512 10
|
|
|
|
#define SEC_ENG_PKA_OP_PPSEL 0x00
|
|
#define SEC_ENG_PKA_OP_LMOD2N 0x11
|
|
#define SEC_ENG_PKA_OP_LDIV2N 0x12
|
|
#define SEC_ENG_PKA_OP_LMUL2N 0x13
|
|
#define SEC_ENG_PKA_OP_LDIV 0x14
|
|
#define SEC_ENG_PKA_OP_LSQR 0x15
|
|
#define SEC_ENG_PKA_OP_LMUL 0x16
|
|
#define SEC_ENG_PKA_OP_LSUB 0x17
|
|
#define SEC_ENG_PKA_OP_LADD 0x18
|
|
#define SEC_ENG_PKA_OP_LCMP 0x19
|
|
#define SEC_ENG_PKA_OP_MDIV2 0x21
|
|
#define SEC_ENG_PKA_OP_MINV 0x22
|
|
#define SEC_ENG_PKA_OP_MEXP 0x23
|
|
#define SEC_ENG_PKA_OP_MSQR 0x24
|
|
#define SEC_ENG_PKA_OP_MMUL 0x25
|
|
#define SEC_ENG_PKA_OP_MREM 0x26
|
|
#define SEC_ENG_PKA_OP_MSUB 0x27
|
|
#define SEC_ENG_PKA_OP_MADD 0x28
|
|
#define SEC_ENG_PKA_OP_RESIZE 0x31
|
|
#define SEC_ENG_PKA_OP_MOVDAT 0x32
|
|
#define SEC_ENG_PKA_OP_NLIR 0x33
|
|
#define SEC_ENG_PKA_OP_SLIR 0x34
|
|
#define SEC_ENG_PKA_OP_CLIR 0x35
|
|
#define SEC_ENG_PKA_OP_CFLIRI_BUFFER 0x36
|
|
#define SEC_ENG_PKA_OP_CTLIRI_PLD 0x37
|
|
#define SEC_ENG_PKA_OP_CFLIR_BUFFER 0x38
|
|
#define SEC_ENG_PKA_OP_CTLIR_PLD 0x39
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
void bflb_pka_init(struct bflb_device_s *dev);
|
|
void bflb_pka_deinit(struct bflb_device_s *dev);
|
|
|
|
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_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_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_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_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_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_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);
|
|
|
|
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_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_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);
|
|
|
|
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_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_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_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_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_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_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_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_slir(struct bflb_device_s *dev,
|
|
uint8_t regindex,
|
|
uint8_t regsize,
|
|
uint32_t data,
|
|
uint8_t lastop);
|
|
|
|
void bflb_pka_clir(struct bflb_device_s *dev,
|
|
uint8_t regindex,
|
|
uint8_t regsize,
|
|
uint16_t size,
|
|
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_read(struct bflb_device_s *dev,
|
|
uint8_t regindex,
|
|
uint8_t regsize,
|
|
uint32_t *data,
|
|
uint16_t size);
|
|
|
|
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);
|
|
|
|
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);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif |