On 08/10/15 12:18, Dmitry Belyavsky wrote: > > I see. So am I correct supposing that pseudo code for > offload_cipher_to_hardware looks like this: > > static int async_wrapper(void * args) > { > ... > } > > static ASYNC_JOB *offload (void *args) > { > ASYNC_JOB *pjob = NULL; > int funcret; > size_t size = 0; > > int ret = ASYNC_start_job(&pjob, &funcret, async_wrapper, args, > *args, size); > if (ret != ASYNC_PAUSE) return NULL; > return pjob; > } > > ?
No. I think you are confusing two different things. 1) How does an *application* perform asynchronous work (via libssl or libcrypto) using an asynchronous capable engine? 2) How does an asynchronous capable engine offload async work to its hardware? These patches solve the first problem only. It provides an API and mechanism for control to pass between the application and engine and back again (perhaps multiple times) during the invocation of a long running crypto operation. It also provides some mechanisms to enable an engine to signal the completion of work to the application. The second problem is entirely engine dependant. It will be a different solution for different hardware. These patches do not provide a solution to that problem. Matt _______________________________________________ openssl-dev mailing list To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev