Lines Matching full:rsa

100 static TEE_Result rsa_complete_from_key_pair(mbedtls_rsa_context *rsa,  in rsa_complete_from_key_pair()  argument
105 rsa->E = *(mbedtls_mpi *)key->e; in rsa_complete_from_key_pair()
106 rsa->N = *(mbedtls_mpi *)key->n; in rsa_complete_from_key_pair()
107 rsa->D = *(mbedtls_mpi *)key->d; in rsa_complete_from_key_pair()
108 rsa->len = mbedtls_mpi_size(&rsa->N); in rsa_complete_from_key_pair()
111 rsa->P = *(mbedtls_mpi *)key->p; in rsa_complete_from_key_pair()
112 rsa->Q = *(mbedtls_mpi *)key->q; in rsa_complete_from_key_pair()
113 rsa->QP = *(mbedtls_mpi *)key->qp; in rsa_complete_from_key_pair()
114 rsa->DP = *(mbedtls_mpi *)key->dp; in rsa_complete_from_key_pair()
115 rsa->DQ = *(mbedtls_mpi *)key->dq; in rsa_complete_from_key_pair()
117 mbedtls_mpi_init_mempool(&rsa->P); in rsa_complete_from_key_pair()
118 mbedtls_mpi_init_mempool(&rsa->Q); in rsa_complete_from_key_pair()
119 mbedtls_mpi_init_mempool(&rsa->QP); in rsa_complete_from_key_pair()
120 mbedtls_mpi_init_mempool(&rsa->DP); in rsa_complete_from_key_pair()
121 mbedtls_mpi_init_mempool(&rsa->DQ); in rsa_complete_from_key_pair()
123 lmd_res = mbedtls_rsa_deduce_primes(&rsa->N, &rsa->E, &rsa->D, in rsa_complete_from_key_pair()
124 &rsa->P, &rsa->Q); in rsa_complete_from_key_pair()
131 lmd_res = mbedtls_rsa_deduce_crt(&rsa->P, &rsa->Q, &rsa->D, in rsa_complete_from_key_pair()
132 &rsa->DP, &rsa->DQ, &rsa->QP); in rsa_complete_from_key_pair()
142 mbedtls_mpi_free(&rsa->P); in rsa_complete_from_key_pair()
143 mbedtls_mpi_free(&rsa->Q); in rsa_complete_from_key_pair()
144 mbedtls_mpi_free(&rsa->QP); in rsa_complete_from_key_pair()
145 mbedtls_mpi_free(&rsa->DP); in rsa_complete_from_key_pair()
146 mbedtls_mpi_free(&rsa->DQ); in rsa_complete_from_key_pair()
151 static TEE_Result rsa_init_and_complete_from_key_pair(mbedtls_rsa_context *rsa, in rsa_init_and_complete_from_key_pair() argument
154 mbedtls_rsa_init(rsa); in rsa_init_and_complete_from_key_pair()
156 return rsa_complete_from_key_pair(rsa, key); in rsa_init_and_complete_from_key_pair()
159 static void mbd_rsa_free(mbedtls_rsa_context *rsa, struct rsa_keypair *key) in mbd_rsa_free() argument
162 * The mpi's in @rsa are initialized from @key, but the primes and in mbd_rsa_free()
167 mbedtls_mpi_init(&rsa->E); in mbd_rsa_free()
168 mbedtls_mpi_init(&rsa->N); in mbd_rsa_free()
169 mbedtls_mpi_init(&rsa->D); in mbd_rsa_free()
171 mbedtls_mpi_init(&rsa->P); in mbd_rsa_free()
172 mbedtls_mpi_init(&rsa->Q); in mbd_rsa_free()
173 mbedtls_mpi_init(&rsa->QP); in mbd_rsa_free()
174 mbedtls_mpi_init(&rsa->DP); in mbd_rsa_free()
175 mbedtls_mpi_init(&rsa->DQ); in mbd_rsa_free()
177 mbedtls_rsa_free(rsa); in mbd_rsa_free()
182 mbedtls_rsa_context *rsa = ctx->pk_ctx; in mbd_pk_free() local
188 mbd_rsa_free(rsa, key); in mbd_pk_free()
287 mbedtls_rsa_context rsa; in sw_crypto_acipher_gen_rsa_key() local
296 memset(&rsa, 0, sizeof(rsa)); in sw_crypto_acipher_gen_rsa_key()
297 mbedtls_rsa_init(&rsa); in sw_crypto_acipher_gen_rsa_key()
304 lmd_res = mbedtls_rsa_gen_key(&rsa, mbedtls_ctr_drbg_random, &rngctx, in sw_crypto_acipher_gen_rsa_key()
309 } else if ((size_t)mbedtls_mpi_bitlen(&rsa.N) != key_size) { in sw_crypto_acipher_gen_rsa_key()
313 crypto_bignum_copy(key->e, (void *)&rsa.E); in sw_crypto_acipher_gen_rsa_key()
314 crypto_bignum_copy(key->d, (void *)&rsa.D); in sw_crypto_acipher_gen_rsa_key()
315 crypto_bignum_copy(key->n, (void *)&rsa.N); in sw_crypto_acipher_gen_rsa_key()
316 crypto_bignum_copy(key->p, (void *)&rsa.P); in sw_crypto_acipher_gen_rsa_key()
318 crypto_bignum_copy(key->q, (void *)&rsa.Q); in sw_crypto_acipher_gen_rsa_key()
319 crypto_bignum_copy(key->qp, (void *)&rsa.QP); in sw_crypto_acipher_gen_rsa_key()
320 crypto_bignum_copy(key->dp, (void *)&rsa.DP); in sw_crypto_acipher_gen_rsa_key()
321 crypto_bignum_copy(key->dq, (void *)&rsa.DQ); in sw_crypto_acipher_gen_rsa_key()
326 mbedtls_rsa_free(&rsa); in sw_crypto_acipher_gen_rsa_key()
343 mbedtls_rsa_context rsa; in sw_crypto_acipher_rsanopad_encrypt() local
349 memset(&rsa, 0, sizeof(rsa)); in sw_crypto_acipher_rsanopad_encrypt()
350 mbedtls_rsa_init(&rsa); in sw_crypto_acipher_rsanopad_encrypt()
352 rsa.E = *(mbedtls_mpi *)key->e; in sw_crypto_acipher_rsanopad_encrypt()
353 rsa.N = *(mbedtls_mpi *)key->n; in sw_crypto_acipher_rsanopad_encrypt()
355 rsa.len = crypto_bignum_num_bytes((void *)&rsa.N); in sw_crypto_acipher_rsanopad_encrypt()
365 memcpy(buf + rsa.len - src_len, src, src_len); in sw_crypto_acipher_rsanopad_encrypt()
367 lmd_res = mbedtls_rsa_public(&rsa, buf, buf); in sw_crypto_acipher_rsanopad_encrypt()
376 while ((offset < rsa.len - 1) && (buf[offset] == 0)) in sw_crypto_acipher_rsanopad_encrypt()
379 if (*dst_len < rsa.len - offset) { in sw_crypto_acipher_rsanopad_encrypt()
380 *dst_len = rsa.len - offset; in sw_crypto_acipher_rsanopad_encrypt()
384 *dst_len = rsa.len - offset; in sw_crypto_acipher_rsanopad_encrypt()
389 mbedtls_mpi_init(&rsa.E); in sw_crypto_acipher_rsanopad_encrypt()
390 mbedtls_mpi_init(&rsa.N); in sw_crypto_acipher_rsanopad_encrypt()
391 mbedtls_rsa_free(&rsa); in sw_crypto_acipher_rsanopad_encrypt()
408 mbedtls_rsa_context rsa = { }; in sw_crypto_acipher_rsanopad_decrypt() local
414 res = rsa_init_and_complete_from_key_pair(&rsa, key); in sw_crypto_acipher_rsanopad_decrypt()
426 memcpy(buf + rsa.len - src_len, src, src_len); in sw_crypto_acipher_rsanopad_decrypt()
428 lmd_res = mbedtls_rsa_private(&rsa, mbd_rand, NULL, buf, buf); in sw_crypto_acipher_rsanopad_decrypt()
437 while ((offset < rsa.len - 1) && (buf[offset] == 0)) in sw_crypto_acipher_rsanopad_decrypt()
440 if (*dst_len < rsa.len - offset) { in sw_crypto_acipher_rsanopad_decrypt()
441 *dst_len = rsa.len - offset; in sw_crypto_acipher_rsanopad_decrypt()
445 *dst_len = rsa.len - offset; in sw_crypto_acipher_rsanopad_decrypt()
450 mbd_rsa_free(&rsa, key); in sw_crypto_acipher_rsanopad_decrypt()
478 mbedtls_rsa_context *rsa = NULL; in sw_crypto_acipher_rsaes_decrypt() local
493 rsa = ctx.pk_ctx; in sw_crypto_acipher_rsaes_decrypt()
494 res = rsa_complete_from_key_pair(rsa, key); in sw_crypto_acipher_rsaes_decrypt()
521 * not be used in rsa, so skip it here. in sw_crypto_acipher_rsaes_decrypt()
536 mbedtls_rsa_set_padding(rsa, lmd_padding, md_algo); in sw_crypto_acipher_rsaes_decrypt()
584 mbedtls_rsa_context *rsa = NULL; in sw_crypto_acipher_rsaes_encrypt() local
601 rsa = ctx.pk_ctx; in sw_crypto_acipher_rsaes_encrypt()
603 rsa->E = *(mbedtls_mpi *)key->e; in sw_crypto_acipher_rsaes_encrypt()
604 rsa->N = *(mbedtls_mpi *)key->n; in sw_crypto_acipher_rsaes_encrypt()
613 rsa->len = mod_size; in sw_crypto_acipher_rsaes_encrypt()
622 * not be used in rsa, so skip it here. in sw_crypto_acipher_rsaes_encrypt()
634 mbedtls_rsa_set_padding(rsa, lmd_padding, md_algo); in sw_crypto_acipher_rsaes_encrypt()
646 mbedtls_mpi_init(&rsa->E); in sw_crypto_acipher_rsaes_encrypt()
647 mbedtls_mpi_init(&rsa->N); in sw_crypto_acipher_rsaes_encrypt()
669 mbedtls_rsa_context *rsa = NULL; in sw_crypto_acipher_rsassa_sign() local
686 rsa = ctx.pk_ctx; in sw_crypto_acipher_rsassa_sign()
687 res = rsa_complete_from_key_pair(rsa, key); in sw_crypto_acipher_rsassa_sign()
729 rsa->len = mod_size; in sw_crypto_acipher_rsassa_sign()
738 mbedtls_rsa_set_padding(rsa, lmd_padding, md_algo); in sw_crypto_acipher_rsassa_sign()
774 mbedtls_rsa_context *rsa = NULL; in sw_crypto_acipher_rsassa_verify() local
799 rsa = ctx.pk_ctx; in sw_crypto_acipher_rsassa_verify()
801 rsa->E = *(mbedtls_mpi *)key->e; in sw_crypto_acipher_rsassa_verify()
802 rsa->N = *(mbedtls_mpi *)key->n; in sw_crypto_acipher_rsassa_verify()
820 rsa->len = bigint_size; in sw_crypto_acipher_rsassa_verify()
852 mbedtls_rsa_set_padding(rsa, lmd_padding, md_algo); in sw_crypto_acipher_rsassa_verify()
873 mbedtls_mpi_init(&rsa->E); in sw_crypto_acipher_rsassa_verify()
874 mbedtls_mpi_init(&rsa->N); in sw_crypto_acipher_rsassa_verify()