After discussions with Pablo and Fan we plan to go with option 1 below
and add a feature flag to capabilities, so by default existing PMDs won't 
publish support for it.
We plan to push this in 19.08.

> -----Original Message-----
> From: Trahe, Fiona
> Sent: Wednesday, May 8, 2019 6:39 PM
> To: Doherty, Declan <declan.dohe...@intel.com>; De Lara Guarch, Pablo
> <pablo.de.lara.gua...@intel.com>; akhil.go...@nxp.com; ravi1.ku...@amd.com; 
> Jerin Jacob
> Kollanukkaran <jer...@marvell.com>; Anoob Joseph <ano...@marvell.com>; Zhang, 
> Roy Fan
> <roy.fan.zh...@intel.com>; t...@semihalf.com; lir...@marvell.com; 
> wa...@marvell.com;
> g.si...@nxp.com; Hemant Agrawal <hemant.agra...@nxp.com>; Jay Zhou 
> <jianjay.z...@huawei.com>;
> dev@dpdk.org
> Cc: Trahe, Fiona <fiona.tr...@intel.com>; Kusztal, ArkadiuszX 
> <arkadiuszx.kusz...@intel.com>; Nowak,
> DamianX <damianx.no...@intel.com>
> Subject: [RFC] crypto: handling of encrypted digest
> 
> Hi all crypto PMD maintainers,
> 
> We're getting requests to handle the following case on symmetric crypto API, 
> needed for 5G security:
>     Generate digest, append to end of raw data, then encrypt the raw data 
> plus digest.
>     In opposite direction decryption returns raw data plus digest, 
> authenticate
>     the raw data against that decrypted digest.
> 
> It's not clearly described on the cryptodev API whether this case is expected 
> to be supported or not.
> Tests are throwing up some issues - specifically
> - In out-of-place generate-auth-then-encrypt operations, it's necessary to 
> provide space at the end of both
> the source AND the destination buffer for the digest. Which should the 
> op.auth.digest.data refer to?
> - The unencrypted digest must be just stored temporarily until finished with, 
> then zeroed, for proper
> security.
> 
> I see two options for handling this:
> 1. Use existing API - Document in comment under 
> rte_crypto_sym_op.auth.digest.data that for encrypted
> digest cases
>     - In encrypt direction, xform chain must specify auth generate then 
> cipher encrypt
>     - In decrypt direction, xform chain must specify cipher decrypt then auth 
> verify
>     - digest ptr must point to where the unencrypted digest will be stored, 
> i.e.
>         end of raw data+1 in m_dst for out-of-place operation in the decrypt 
> direction
>         end of raw data+1 in m_src for all other operations.
>     - for out-of-place operation there must be space for digest at end of 
> both m_src and m_dst
>     - as for any unencrypted data, the unencrypted digest will be cleared by 
> the PMD once no longer
> needed
>     - cipher length >= auth length + digest length (Is it overkill to say 
> this? might someone want partial
> digest encryption?)
> 
> 2. Extend the API with an explicit encrypted_digest flag in 
> rte_crypto_auth_xform.
>      Document usage in comment - almost same as above. EXCEPT digest ptr 
> should not be set, instead
> PMD will assume its location as above.
> 
> Regardless of which option, should this be considered a specific feature - 
> with a feature capability flag? Or
> are all PMDs expected to handle it and so treat as a bug or document as a 
> limitation if they don't?
> 
> Pros/cons:
> (1) could be considered as just a clarification and no deprecation notice 
> needed. Test cases may work
> against some existing PMDs. However the 2 PMDs we've tested so far - QAT and 
> aesni_mb - need patches
> to work so are affected anyway.
> (2) is more explicit - but may affect more PMDs - needs a deprecation notice.
> 
> Opinions?
> 

Reply via email to