On 30.11.2017 13:41, Antoine Tenart wrote:
> On Thu, Nov 30, 2017 at 12:52:42PM +0100, Kamil Konieczny wrote:
>> On 30.11.2017 10:29, Antoine Tenart wrote:
>>> On Thu, Nov 30, 2017 at 10:19:26AM +0100, Kamil Konieczny wrote:

>>>> can the driver get request for final/finup/digest with null req->result ?
>>>
>>> I don't think that can happen. But having an update called without
>>> req->result provided is a valid call (though it's not well documented).

Yes, this field may be unset until finup/final.
One more to watch out is that in final, you can have areq->nsize != 0 so
you should not use  areq->nsize nor areq->src

>> so maybe:
>>
>>      if (sreq->finish) {
>>              result_sz = crypto_ahash_digestsize(ahash);
>>              memcpy(sreq->state, areq->result, result_sz);
>>      }
> 
> No, if we do this we'll lose the ability to export the current state.

So maybe save it into request context:

        result_sz = crypto_ahash_digestsize(ahash);
        ctx = ahash_request_ctx(areq);

        if (sreq->finish)
                memcpy(sreq->state, areq->result, result_sz);
        else
                memcpy(sreq->state, ctx->state, result_sz);


-- 
Best regards,
Kamil Konieczny
Samsung R&D Institute Poland

Reply via email to