Lines Matching refs:cs
2594 static void cryp_state_free(struct user_ta_ctx *utc, struct tee_cryp_state *cs) in cryp_state_free() argument
2598 if (tee_obj_get(utc, cs->key1, &o) == TEE_SUCCESS) in cryp_state_free()
2600 if (tee_obj_get(utc, cs->key2, &o) == TEE_SUCCESS) in cryp_state_free()
2603 TAILQ_REMOVE(&utc->cryp_states, cs, link); in cryp_state_free()
2604 if (cs->ctx_finalize != NULL) in cryp_state_free()
2605 cs->ctx_finalize(cs->ctx); in cryp_state_free()
2607 switch (TEE_ALG_GET_CLASS(cs->algo)) { in cryp_state_free()
2609 crypto_cipher_free_ctx(cs->ctx); in cryp_state_free()
2612 crypto_authenc_free_ctx(cs->ctx); in cryp_state_free()
2615 crypto_hash_free_ctx(cs->ctx); in cryp_state_free()
2618 crypto_mac_free_ctx(cs->ctx); in cryp_state_free()
2621 assert(!cs->ctx); in cryp_state_free()
2624 free(cs); in cryp_state_free()
2786 struct tee_cryp_state *cs = NULL; in syscall_cryp_state_alloc() local
2813 cs = calloc(1, sizeof(struct tee_cryp_state)); in syscall_cryp_state_alloc()
2814 if (!cs) in syscall_cryp_state_alloc()
2816 TAILQ_INSERT_TAIL(&utc->cryp_states, cs, link); in syscall_cryp_state_alloc()
2817 cs->algo = algo; in syscall_cryp_state_alloc()
2818 cs->mode = mode; in syscall_cryp_state_alloc()
2819 cs->state = CRYP_STATE_UNINITIALIZED; in syscall_cryp_state_alloc()
2829 res = crypto_cipher_alloc_ctx(&cs->ctx, algo); in syscall_cryp_state_alloc()
2838 res = crypto_authenc_alloc_ctx(&cs->ctx, algo); in syscall_cryp_state_alloc()
2847 res = crypto_mac_alloc_ctx(&cs->ctx, algo); in syscall_cryp_state_alloc()
2856 res = crypto_hash_alloc_ctx(&cs->ctx, algo); in syscall_cryp_state_alloc()
2887 res = copy_kaddr_to_uref(state, cs); in syscall_cryp_state_alloc()
2894 cs->key1 = (vaddr_t)o1; in syscall_cryp_state_alloc()
2898 cs->key2 = (vaddr_t)o2; in syscall_cryp_state_alloc()
2903 cryp_state_free(utc, cs); in syscall_cryp_state_alloc()
2959 struct tee_cryp_state *cs = NULL; in syscall_cryp_state_free() local
2961 res = tee_svc_cryp_get_state(sess, uref_to_vaddr(state), &cs); in syscall_cryp_state_free()
2964 cryp_state_free(to_user_ta_ctx(sess->ctx), cs); in syscall_cryp_state_free()
2974 struct tee_cryp_state *cs = NULL; in syscall_hash_init() local
2976 res = tee_svc_cryp_get_state(sess, uref_to_vaddr(state), &cs); in syscall_hash_init()
2980 switch (TEE_ALG_GET_CLASS(cs->algo)) { in syscall_hash_init()
2982 res = crypto_hash_init(cs->ctx); in syscall_hash_init()
2992 cs->key1, &o); in syscall_hash_init()
3000 res = crypto_mac_init(cs->ctx, (void *)(key + 1), in syscall_hash_init()
3010 cs->state = CRYP_STATE_INITIALIZED; in syscall_hash_init()
3019 struct tee_cryp_state *cs = NULL; in syscall_hash_update() local
3039 res = tee_svc_cryp_get_state(sess, uref_to_vaddr(state), &cs); in syscall_hash_update()
3043 if (cs->state != CRYP_STATE_INITIALIZED) in syscall_hash_update()
3046 switch (TEE_ALG_GET_CLASS(cs->algo)) { in syscall_hash_update()
3049 res = crypto_hash_update(cs->ctx, chunk, chunk_size); in syscall_hash_update()
3056 res = crypto_mac_update(cs->ctx, chunk, chunk_size); in syscall_hash_update()
3077 struct tee_cryp_state *cs = NULL; in syscall_hash_final() local
3109 res = tee_svc_cryp_get_state(sess, uref_to_vaddr(state), &cs); in syscall_hash_final()
3113 if (cs->state != CRYP_STATE_INITIALIZED) in syscall_hash_final()
3116 switch (TEE_ALG_GET_CLASS(cs->algo)) { in syscall_hash_final()
3118 if (is_xof_algo(cs->algo)) { in syscall_hash_final()
3121 res = crypto_hash_update(cs->ctx, chunk, in syscall_hash_final()
3133 res = crypto_hash_final(cs->ctx, hash, hlen); in syscall_hash_final()
3138 res = tee_alg_get_digest_size(cs->algo, &hash_size); in syscall_hash_final()
3148 res = crypto_hash_update(cs->ctx, chunk, chunk_size); in syscall_hash_final()
3155 res = crypto_hash_final(cs->ctx, hash, hash_size); in syscall_hash_final()
3162 res = tee_alg_get_digest_size(cs->algo, &hash_size); in syscall_hash_final()
3172 res = crypto_mac_update(cs->ctx, chunk, chunk_size); in syscall_hash_final()
3179 res = crypto_mac_final(cs->ctx, hash, hash_size); in syscall_hash_final()
3201 struct tee_cryp_state *cs = NULL; in syscall_cipher_init() local
3206 res = tee_svc_cryp_get_state(sess, uref_to_vaddr(state), &cs); in syscall_cipher_init()
3210 if (TEE_ALG_GET_CLASS(cs->algo) != TEE_OPERATION_CIPHER) in syscall_cipher_init()
3213 res = tee_obj_get(utc, cs->key1, &o); in syscall_cipher_init()
3225 if (tee_obj_get(utc, cs->key2, &o) == TEE_SUCCESS) { in syscall_cipher_init()
3231 res = crypto_cipher_init(cs->ctx, cs->mode, in syscall_cipher_init()
3236 res = crypto_cipher_init(cs->ctx, cs->mode, in syscall_cipher_init()
3243 cs->ctx_finalize = crypto_cipher_final; in syscall_cipher_init()
3244 cs->state = CRYP_STATE_INITIALIZED; in syscall_cipher_init()
3254 struct tee_cryp_state *cs = NULL; in tee_svc_cipher_update_helper() local
3258 res = tee_svc_cryp_get_state(sess, uref_to_vaddr(state), &cs); in tee_svc_cipher_update_helper()
3262 if (cs->state != CRYP_STATE_INITIALIZED) in tee_svc_cipher_update_helper()
3300 res = tee_do_cipher_update(cs->ctx, cs->algo, cs->mode, in tee_svc_cipher_update_helper()
3305 if (last_block && cs->ctx_finalize != NULL) { in tee_svc_cipher_update_helper()
3306 cs->ctx_finalize(cs->ctx); in tee_svc_cipher_update_helper()
3307 cs->ctx_finalize = NULL; in tee_svc_cipher_update_helper()
3693 struct tee_cryp_state *cs = NULL; in syscall_cryp_derive_key() local
3699 res = tee_svc_cryp_get_state(sess, uref_to_vaddr(state), &cs); in syscall_cryp_derive_key()
3714 res = tee_obj_get(utc, cs->key1, &ko); in syscall_cryp_derive_key()
3732 if (cs->algo == TEE_ALG_DH_DERIVE_SHARED_SECRET) { in syscall_cryp_derive_key()
3775 } else if (cs->algo == TEE_ALG_ECDH_DERIVE_SHARED_SECRET) { in syscall_cryp_derive_key()
3851 else if (TEE_ALG_GET_MAIN_ALG(cs->algo) == TEE_MAIN_ALGO_HKDF) { in syscall_cryp_derive_key()
3858 res = get_hkdf_params(cs->algo, params, param_count, &salt, in syscall_cryp_derive_key()
3881 else if (TEE_ALG_GET_MAIN_ALG(cs->algo) == TEE_MAIN_ALGO_CONCAT_KDF) { in syscall_cryp_derive_key()
3884 uint32_t hash_id = TEE_ALG_GET_DIGEST_HASH(cs->algo); in syscall_cryp_derive_key()
3910 else if (TEE_ALG_GET_MAIN_ALG(cs->algo) == TEE_MAIN_ALGO_PBKDF2) { in syscall_cryp_derive_key()
3913 uint32_t hash_id = TEE_ALG_GET_DIGEST_HASH(cs->algo); in syscall_cryp_derive_key()
3939 else if (cs->algo == TEE_ALG_SM2_KEP) { in syscall_cryp_derive_key()
3948 res = tee_obj_get(utc, cs->key2, &ko2); in syscall_cryp_derive_key()
3975 else if (cs->algo == TEE_ALG_X25519) { in syscall_cryp_derive_key()
4017 else if (cs->algo == TEE_ALG_X448) { in syscall_cryp_derive_key()
4089 struct tee_cryp_state *cs = NULL; in syscall_authenc_init() local
4094 res = tee_svc_cryp_get_state(sess, uref_to_vaddr(state), &cs); in syscall_authenc_init()
4098 res = tee_obj_get(to_user_ta_ctx(sess->ctx), cs->key1, &o); in syscall_authenc_init()
4110 res = crypto_authenc_init(cs->ctx, cs->mode, (uint8_t *)(key + 1), in syscall_authenc_init()
4116 cs->ctx_finalize = crypto_authenc_final; in syscall_authenc_init()
4117 cs->state = CRYP_STATE_INITIALIZED; in syscall_authenc_init()
4127 struct tee_cryp_state *cs = NULL; in syscall_authenc_update_aad() local
4138 res = tee_svc_cryp_get_state(sess, uref_to_vaddr(state), &cs); in syscall_authenc_update_aad()
4142 if (cs->state != CRYP_STATE_INITIALIZED) in syscall_authenc_update_aad()
4145 if (TEE_ALG_GET_CLASS(cs->algo) != TEE_OPERATION_AE) in syscall_authenc_update_aad()
4149 res = crypto_authenc_update_aad(cs->ctx, cs->mode, aad_data, in syscall_authenc_update_aad()
4164 struct tee_cryp_state *cs = NULL; in syscall_authenc_update_payload() local
4168 res = tee_svc_cryp_get_state(sess, uref_to_vaddr(state), &cs); in syscall_authenc_update_payload()
4172 if (cs->state != CRYP_STATE_INITIALIZED) in syscall_authenc_update_payload()
4175 if (TEE_ALG_GET_CLASS(cs->algo) != TEE_OPERATION_AE) in syscall_authenc_update_payload()
4206 res = crypto_authenc_update_payload(cs->ctx, cs->mode, src_data, in syscall_authenc_update_payload()
4227 struct tee_cryp_state *cs = NULL; in syscall_authenc_enc_final() local
4232 res = tee_svc_cryp_get_state(sess, uref_to_vaddr(state), &cs); in syscall_authenc_enc_final()
4236 if (cs->state != CRYP_STATE_INITIALIZED) in syscall_authenc_enc_final()
4239 if (cs->mode != TEE_MODE_ENCRYPT) in syscall_authenc_enc_final()
4242 if (TEE_ALG_GET_CLASS(cs->algo) != TEE_OPERATION_AE) in syscall_authenc_enc_final()
4290 res = crypto_authenc_enc_final(cs->ctx, src_data, src_len, dst_data, in syscall_authenc_enc_final()
4318 struct tee_cryp_state *cs = NULL; in syscall_authenc_dec_final() local
4322 res = tee_svc_cryp_get_state(sess, uref_to_vaddr(state), &cs); in syscall_authenc_dec_final()
4326 if (cs->state != CRYP_STATE_INITIALIZED) in syscall_authenc_dec_final()
4329 if (cs->mode != TEE_MODE_DECRYPT) in syscall_authenc_dec_final()
4332 if (TEE_ALG_GET_CLASS(cs->algo) != TEE_OPERATION_AE) in syscall_authenc_dec_final()
4376 res = crypto_authenc_dec_final(cs->ctx, src_data, src_len, dst_data, in syscall_authenc_dec_final()
4421 struct tee_cryp_state *cs = NULL; in syscall_asymm_operate() local
4432 res = tee_svc_cryp_get_state(sess, uref_to_vaddr(state), &cs); in syscall_asymm_operate()
4468 res = tee_obj_get(utc, cs->key1, &o); in syscall_asymm_operate()
4476 switch (cs->algo) { in syscall_asymm_operate()
4478 if (cs->mode == TEE_MODE_ENCRYPT) { in syscall_asymm_operate()
4484 } else if (cs->mode == TEE_MODE_DECRYPT) { in syscall_asymm_operate()
4500 if (cs->mode == TEE_MODE_ENCRYPT) { in syscall_asymm_operate()
4506 } else if (cs->mode == TEE_MODE_DECRYPT) { in syscall_asymm_operate()
4531 if (cs->algo != TEE_ALG_RSAES_PKCS1_V1_5 && in syscall_asymm_operate()
4550 mgf_algo = TEE_INTERNAL_HASH_TO_ALGO(cs->algo); in syscall_asymm_operate()
4552 if (cs->mode == TEE_MODE_ENCRYPT) { in syscall_asymm_operate()
4554 res = crypto_acipher_rsaes_encrypt(cs->algo, o->attr, in syscall_asymm_operate()
4560 } else if (cs->mode == TEE_MODE_DECRYPT) { in syscall_asymm_operate()
4563 cs->algo, o->attr, label, label_len, in syscall_asymm_operate()
4587 if (cs->mode != TEE_MODE_SIGN) { in syscall_asymm_operate()
4593 res = crypto_acipher_rsassa_sign(cs->algo, o->attr, salt_len, in syscall_asymm_operate()
4603 res = crypto_acipher_dsa_sign(cs->algo, o->attr, src_data, in syscall_asymm_operate()
4623 res = crypto_acipher_ecc_sign(cs->algo, o->attr, src_data, in syscall_asymm_operate()
4652 struct tee_cryp_state *cs = NULL; in syscall_asymm_verify() local
4661 res = tee_svc_cryp_get_state(sess, uref_to_vaddr(state), &cs); in syscall_asymm_verify()
4665 if (cs->mode != TEE_MODE_VERIFY) in syscall_asymm_verify()
4695 res = tee_obj_get(utc, cs->key1, &o); in syscall_asymm_verify()
4703 switch (TEE_ALG_GET_MAIN_ALG(cs->algo)) { in syscall_asymm_verify()
4705 if (cs->algo != TEE_ALG_RSASSA_PKCS1_V1_5) { in syscall_asymm_verify()
4706 hash_algo = TEE_DIGEST_HASH_TO_ALGO(cs->algo); in syscall_asymm_verify()
4718 res = crypto_acipher_rsassa_verify(cs->algo, o->attr, salt_len, in syscall_asymm_verify()
4725 hash_algo = TEE_DIGEST_HASH_TO_ALGO(cs->algo); in syscall_asymm_verify()
4763 res = crypto_acipher_dsa_verify(cs->algo, o->attr, data, in syscall_asymm_verify()
4779 res = crypto_acipher_ecc_verify(cs->algo, o->attr, data, in syscall_asymm_verify()