rsa_key
struct rsa_key raw_key = {0};
struct rsa_key raw_key = {0};
struct rsa_key *key = context;
struct rsa_key *key = context;
struct rsa_key *key = context;
int rsa_parse_pub_key(struct rsa_key *rsa_key, const void *key,
return asn1_ber_decoder(&rsapubkey_decoder, rsa_key, key, key_len);
int rsa_parse_priv_key(struct rsa_key *rsa_key, const void *key,
return asn1_ber_decoder(&rsaprivkey_decoder, rsa_key, key, key_len);
struct rsa_key *key = context;
struct rsa_key *key = context;
struct rsa_key *key = context;
struct rsa_key *key = context;
struct rsa_key *key = context;
struct rsa_key key;
rsa_key->q = caam_read_raw_data(raw_key->q, &q_sz);
if (!rsa_key->q)
rsa_key->q_sz = q_sz;
rsa_key->tmp1 = kzalloc(aligned_size, GFP_KERNEL);
if (!rsa_key->tmp1)
rsa_key->tmp2 = kzalloc(aligned_size, GFP_KERNEL);
if (!rsa_key->tmp2)
rsa_key->priv_form = FORM2;
rsa_key->dp = caam_read_rsa_crt(raw_key->dp, raw_key->dp_sz, p_sz);
if (!rsa_key->dp)
rsa_key->dq = caam_read_rsa_crt(raw_key->dq, raw_key->dq_sz, q_sz);
if (!rsa_key->dq)
rsa_key->qinv = caam_read_rsa_crt(raw_key->qinv, raw_key->qinv_sz,
if (!rsa_key->qinv)
rsa_key->priv_form = FORM3;
kfree_sensitive(rsa_key->dq);
kfree_sensitive(rsa_key->dp);
kfree_sensitive(rsa_key->tmp2);
kfree_sensitive(rsa_key->tmp1);
kfree_sensitive(rsa_key->q);
kfree_sensitive(rsa_key->p);
struct rsa_key raw_key = {NULL};
struct caam_rsa_key *rsa_key = &ctx->key;
caam_rsa_free_key(rsa_key);
rsa_key->d = kmemdup(raw_key.d, raw_key.d_sz, GFP_KERNEL);
if (!rsa_key->d)
rsa_key->e = kmemdup(raw_key.e, raw_key.e_sz, GFP_KERNEL);
if (!rsa_key->e)
rsa_key->n = caam_read_raw_data(raw_key.n, &raw_key.n_sz);
if (!rsa_key->n)
caam_rsa_free_key(rsa_key);
rsa_key->d_sz = raw_key.d_sz;
rsa_key->e_sz = raw_key.e_sz;
rsa_key->n_sz = raw_key.n_sz;
caam_rsa_free_key(rsa_key);
struct rsa_key raw_key = {NULL};
struct caam_rsa_key *rsa_key = &ctx->key;
caam_rsa_free_key(rsa_key);
rsa_key->e = kmemdup(raw_key.e, raw_key.e_sz, GFP_KERNEL);
if (!rsa_key->e)
rsa_key->n = caam_read_raw_data(raw_key.n, &raw_key.n_sz);
if (!rsa_key->n)
caam_rsa_free_key(rsa_key);
rsa_key->e_sz = raw_key.e_sz;
rsa_key->n_sz = raw_key.n_sz;
caam_rsa_free_key(rsa_key);
struct rsa_key *raw_key)
struct caam_rsa_key *rsa_key = &ctx->key;
rsa_key->p = caam_read_raw_data(raw_key->p, &p_sz);
if (!rsa_key->p)
rsa_key->p_sz = p_sz;
struct rsa_key raw_key;
static bool hpre_is_crt_key(struct rsa_key *key)
struct rsa_key rsa_key;
ret = rsa_parse_priv_key(&rsa_key, key, keylen);
ret = rsa_parse_pub_key(&rsa_key, key, keylen);
ret = hpre_rsa_set_n(ctx, rsa_key.n, rsa_key.n_sz, private);
ret = hpre_rsa_set_d(ctx, rsa_key.d, rsa_key.d_sz);
if (hpre_is_crt_key(&rsa_key)) {
ret = hpre_rsa_setkey_crt(ctx, &rsa_key);
ret = hpre_rsa_set_e(ctx, rsa_key.e, rsa_key.e_sz);
static int hpre_rsa_setkey_crt(struct hpre_ctx *ctx, struct rsa_key *rsa_key)
rsa_key->dq, rsa_key->dq_sz);
rsa_key->dp, rsa_key->dp_sz);
rsa_key->q, rsa_key->q_sz);
rsa_key->p, rsa_key->p_sz);
rsa_key->qinv, rsa_key->qinv_sz);
static void qat_rsa_setkey_crt(struct qat_rsa_ctx *ctx, struct rsa_key *rsa_key)
ptr = rsa_key->p;
len = rsa_key->p_sz;
ptr = rsa_key->q;
len = rsa_key->q_sz;
ptr = rsa_key->dp;
len = rsa_key->dp_sz;
ptr = rsa_key->dq;
len = rsa_key->dq_sz;
ptr = rsa_key->qinv;
len = rsa_key->qinv_sz;
struct rsa_key rsa_key;
ret = rsa_parse_priv_key(&rsa_key, key, keylen);
ret = rsa_parse_pub_key(&rsa_key, key, keylen);
ret = qat_rsa_set_n(ctx, rsa_key.n, rsa_key.n_sz);
ret = qat_rsa_set_e(ctx, rsa_key.e, rsa_key.e_sz);
ret = qat_rsa_set_d(ctx, rsa_key.d, rsa_key.d_sz);
qat_rsa_setkey_crt(ctx, &rsa_key);
struct starfive_rsa_key rsa_key;
struct starfive_rsa_key *key = &ctx->rsa_key;
struct starfive_rsa_key *key = &ctx->rsa_key;
struct starfive_rsa_key *key = &ctx->rsa_key;
struct starfive_rsa_key *key = &ctx->rsa_key;
static int starfive_rsa_set_n(struct starfive_rsa_key *rsa_key,
rsa_key->key_sz = vlen;
bitslen = rsa_key->key_sz << 3;
rsa_key->n = kmemdup(ptr, rsa_key->key_sz, GFP_KERNEL);
if (!rsa_key->n)
rsa_key->key_sz = 0;
rsa_key->n = NULL;
starfive_rsa_free_key(rsa_key);
static int starfive_rsa_set_e(struct starfive_rsa_key *rsa_key,
if (!rsa_key->key_sz || !vlen || vlen > rsa_key->key_sz) {
rsa_key->e = NULL;
rsa_key->e = kzalloc(rsa_key->key_sz, GFP_KERNEL);
if (!rsa_key->e)
rsa_key->e_bitlen = (vlen - 1) * 8 + loop;
memcpy(rsa_key->e + (rsa_key->key_sz - vlen), ptr, vlen);
static int starfive_rsa_set_d(struct starfive_rsa_key *rsa_key,
if (!rsa_key->key_sz || !vlen || vlen > rsa_key->key_sz)
rsa_key->d = kzalloc(rsa_key->key_sz, GFP_KERNEL);
if (!rsa_key->d)
rsa_key->d_bitlen = (vlen - 1) * 8 + loop;
memcpy(rsa_key->d + (rsa_key->key_sz - vlen), ptr, vlen);
rsa_key->d = NULL;
struct rsa_key raw_key = {NULL};
struct starfive_rsa_key *rsa_key = &ctx->rsa_key;
starfive_rsa_free_key(rsa_key);
ret = starfive_rsa_set_n(rsa_key, raw_key.n, raw_key.n_sz);
ret = starfive_rsa_set_e(rsa_key, raw_key.e, raw_key.e_sz);
ret = starfive_rsa_set_d(rsa_key, raw_key.d, raw_key.d_sz);
if (!rsa_key->n || !rsa_key->e) {
if (private && !rsa_key->d) {
starfive_rsa_free_key(rsa_key);
if (ctx->rsa_key.key_sz)
return ctx->rsa_key.key_sz;
struct starfive_rsa_key *key = (struct starfive_rsa_key *)&ctx->rsa_key;
struct rsa_key rsa_key = {0};
ret = rsa_parse_priv_key(&rsa_key, key, keylen);
ret = rsa_parse_pub_key(&rsa_key, key, keylen);
n = mpi_read_raw_data(rsa_key.n, rsa_key.n_sz);
int rsa_parse_pub_key(struct rsa_key *rsa_key, const void *key,
int rsa_parse_priv_key(struct rsa_key *rsa_key, const void *key,