4 #include <2return_codes.h>
5 #include <bl_uapp/bl_syscall_public.h>
14 static struct sha_generic_data
sha_op;
26 return VB2_ERROR_EX_HWCRYPTO_UNSUPPORTED;
42 sha_op.IntermediateMsgLen = 0;
54 return VB2_ERROR_UNKNOWN;
70 return VB2_ERROR_UNKNOWN;
88 return VB2_ERROR_UNKNOWN;
91 if (digest_size !=
sha_op.DigestLen) {
93 return VB2_ERROR_UNKNOWN;
110 struct mod_exp_params mod_exp_param;
111 unsigned int key_bytes = key->arrsize *
sizeof(
uint32_t);
113 uint32_t *output_buffer = &workbuf32[key->arrsize];
119 if (key->sig_alg != VB2_SIG_RSA2048 &&
120 key->sig_alg != VB2_SIG_RSA2048_EXP3 &&
121 key->sig_alg != VB2_SIG_RSA4096) {
122 return VB2_ERROR_EX_HWCRYPTO_UNSUPPORTED;
125 for (i = 0; i < key->arrsize; i++)
126 sig_swapped[i] =
swab32(inout_32[key->arrsize - i - 1]);
128 mod_exp_param.pExponent = (
char *)&exp;
129 mod_exp_param.ExpSize =
sizeof(exp);
130 mod_exp_param.pModulus = (
char *)key->n;
131 mod_exp_param.ModulusSize = key_bytes;
132 mod_exp_param.pMessage = (
char *)sig_swapped;
133 mod_exp_param.pOutput = (
char *)output_buffer;
139 return VB2_ERROR_EX_HWCRYPTO_UNSUPPORTED;
143 for (i = 0; i < key->arrsize; i++)
144 inout_32[i] =
swab32(output_buffer[key->arrsize - i - 1]);
void * memcpy(void *dest, const void *src, size_t n)
int platform_set_sha_op(enum vb2_hash_algorithm hash_alg, struct sha_generic_data *sha_op)
uint32_t svc_crypto_sha(struct sha_generic_data *sha_op, enum sha_operation_mode sha_mode)
uint32_t svc_modexp(struct mod_exp_params *mod_exp_param)
#define printk(level,...)
#define BIOS_INFO
BIOS_INFO - Expected events.
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
#define BIOS_ERR
BIOS_ERR - System in incomplete state.
vb2_error_t vb2ex_hwcrypto_digest_init(enum vb2_hash_algorithm hash_alg, uint32_t data_size)
static uint32_t sha_op_size_remaining
vb2_error_t vb2ex_hwcrypto_digest_finalize(uint8_t *digest, uint32_t digest_size)
static struct sha_generic_data sha_op
static uint8_t sha_hash[64]
vb2_error_t vb2ex_hwcrypto_digest_extend(const uint8_t *buf, uint32_t size)
vb2_error_t vb2ex_hwcrypto_modexp(const struct vb2_public_key *key, uint8_t *inout, uint32_t *workbuf32, int exp)