Re: AW: AW: Best way to align key in AES context

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 02/13/2015 08:49 AM, Markus Stockhausen wrote:
> thanks for the tip.  I will at least move the data definitions to the beginning of 
> my structure.
> 
> But while it sounds logical for data types that are directly created from that 
> structure I'm unsure about a context. If I understand it correctly a context is 
> dynamically allocated. Could it be possible that the start address is then only 
> 4 bytes aligned?
> 
> So I tried to dive into the magic of alignmask and contexts. This even confuses
> me a little bit more. Nearly all implementations in the crypto tree make use of
> alignmasks >= 3. I guess to be at least 4 bytes aligned. But when accessing the
> context they "only" use crypto_blkcipher_ctx(). This will just return the context
> address while crypto_blkcipher_ctx_aligned() seems to be the right place to 
> return a pointer that is aligned according to the predefined mask.
> 
> Would you recommend to
> 
> a) ignore alignmask and use only __aligned(8) for the structure
> 
> b) to assume ctx will be automatically 8 bytes aligned regardless of __aligned(8)
> flag or cra_alignmask. So nothing to take care about.
> 
> b) or to define structure without __aligned(8) but work with cra_alignmask=7. 
> I fear that this might impose alignment of input/output data to 8 too and lead 
> to unneccessary memcpy() operations.
> 
> Sorry for driving myself nuts but I want to understand if before I send patches.

In this case I think the best way is to define your algorithm with

	.cra_ctxsize = sizeof(struct ppc_aes_ctx) + 8,

and then in enc/dec/setkey do

	struct ppc_aes_ctx *ctx = PTR_ALIGN(crypto_tfm_ctx(tfm), 8);

and you don't need the __aligned(8) in the struct definition.


--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Kernel]     [Gnu Classpath]     [Gnu Crypto]     [DM Crypt]     [Netfilter]     [Bugtraq]

  Powered by Linux