Lines Matching refs:hashdata

479 TEE_Result dcp_sha_do_init(struct dcp_hash_data *hashdata)  in dcp_sha_do_init()  argument
484 if (!hashdata) { in dcp_sha_do_init()
489 desc = &hashdata->dcp_data.desc; in dcp_sha_do_init()
497 desc->ctrl1 = hash_alg[hashdata->alg].type; in dcp_sha_do_init()
502 ret = dcp_lock_channel(&hashdata->dcp_data.channel); in dcp_sha_do_init()
509 ret = dcp_calloc_align_buf(&hashdata->ctx, DCP_SHA_BLOCK_SIZE); in dcp_sha_do_init()
513 hashdata->initialized = true; in dcp_sha_do_init()
514 hashdata->ctx_size = 0; in dcp_sha_do_init()
519 TEE_Result dcp_sha_do_update(struct dcp_hash_data *hashdata, in dcp_sha_do_update() argument
531 if (!hashdata || !data || !len) in dcp_sha_do_update()
534 if (!hashdata->initialized) { in dcp_sha_do_update()
540 if (ADD_OVERFLOW(hashdata->ctx_size, len, &size_total)) in dcp_sha_do_update()
545 size_left = len - size_todo + hashdata->ctx_size; in dcp_sha_do_update()
546 desc = &hashdata->dcp_data.desc; in dcp_sha_do_update()
555 offset = size_todo - hashdata->ctx_size; in dcp_sha_do_update()
556 memcpy(input.data, hashdata->ctx.data, hashdata->ctx_size); in dcp_sha_do_update()
557 memcpy(input.data + hashdata->ctx_size, data, offset); in dcp_sha_do_update()
558 hashdata->ctx_size = 0; in dcp_sha_do_update()
565 ret = dcp_run(&hashdata->dcp_data); in dcp_sha_do_update()
576 memcpy(hashdata->ctx.data + hashdata->ctx_size, data + offset, in dcp_sha_do_update()
578 hashdata->ctx_size += size_left; in dcp_sha_do_update()
583 TEE_Result dcp_sha_do_final(struct dcp_hash_data *hashdata, uint8_t *digest, in dcp_sha_do_final() argument
591 if (!hashdata || !digest) in dcp_sha_do_final()
594 if (!hashdata->initialized) { in dcp_sha_do_final()
599 if (digest_size < hash_alg[hashdata->alg].size) { in dcp_sha_do_final()
601 hash_alg[hashdata->alg].size); in dcp_sha_do_final()
605 desc = &hashdata->dcp_data.desc; in dcp_sha_do_final()
606 payload_size = hash_alg[hashdata->alg].size; in dcp_sha_do_final()
609 if ((desc->ctrl0 & DCP_CONTROL0_HASH_INIT) && hashdata->ctx_size == 0) { in dcp_sha_do_final()
610 if (hashdata->alg == DCP_SHA1) in dcp_sha_do_final()
612 if (hashdata->alg == DCP_SHA256) in dcp_sha_do_final()
623 desc->src_buffer = hashdata->ctx.paddr; in dcp_sha_do_final()
624 desc->buff_size = hashdata->ctx_size; in dcp_sha_do_final()
627 cache_operation(TEE_CACHECLEAN, hashdata->ctx.data, in dcp_sha_do_final()
628 hashdata->ctx_size); in dcp_sha_do_final()
632 ret = dcp_run(&hashdata->dcp_data); in dcp_sha_do_final()
643 dcp_free(&hashdata->ctx); in dcp_sha_do_final()
646 hashdata->initialized = false; in dcp_sha_do_final()
648 dcp_unlock_channel(hashdata->dcp_data.channel); in dcp_sha_do_final()