| ============= | 
 | CRYPTO ENGINE | 
 | ============= | 
 |  | 
 | Overview | 
 | -------- | 
 | The crypto engine API (CE), is a crypto queue manager. | 
 |  | 
 | Requirement | 
 | ----------- | 
 | You have to put at start of your tfm_ctx the struct crypto_engine_ctx:: | 
 |  | 
 |   struct your_tfm_ctx { | 
 |         struct crypto_engine_ctx enginectx; | 
 |         ... | 
 |   }; | 
 |  | 
 | Why: Since CE manage only crypto_async_request, it cannot know the underlying | 
 | request_type and so have access only on the TFM. | 
 | So using container_of for accessing __ctx is impossible. | 
 | Furthermore, the crypto engine cannot know the "struct your_tfm_ctx", | 
 | so it must assume that crypto_engine_ctx is at start of it. | 
 |  | 
 | Order of operations | 
 | ------------------- | 
 | You have to obtain a struct crypto_engine via crypto_engine_alloc_init(). | 
 | And start it via crypto_engine_start(). | 
 |  | 
 | Before transferring any request, you have to fill the enginectx. | 
 | - prepare_request: (taking a function pointer) If you need to do some processing before doing the request | 
 | - unprepare_request: (taking a function pointer) Undoing what's done in prepare_request | 
 | - do_one_request: (taking a function pointer) Do encryption for current request | 
 |  | 
 | Note: that those three functions get the crypto_async_request associated with the received request. | 
 | So your need to get the original request via container_of(areq, struct yourrequesttype_request, base); | 
 |  | 
 | When your driver receive a crypto_request, you have to transfer it to | 
 | the cryptoengine via one of: | 
 | - crypto_transfer_ablkcipher_request_to_engine() | 
 | - crypto_transfer_aead_request_to_engine() | 
 | - crypto_transfer_akcipher_request_to_engine() | 
 | - crypto_transfer_hash_request_to_engine() | 
 | - crypto_transfer_skcipher_request_to_engine() | 
 |  | 
 | At the end of the request process, a call to one of the following function is needed: | 
 | - crypto_finalize_ablkcipher_request | 
 | - crypto_finalize_aead_request | 
 | - crypto_finalize_akcipher_request | 
 | - crypto_finalize_hash_request | 
 | - crypto_finalize_skcipher_request |