02 Sep, 2005

1 commit

  • The XTEA implementation was incorrect due to a misinterpretation of
    operator precedence. Because of the wide-spread nature of this
    error, the erroneous implementation will be kept, albeit under the
    new name of XETA.

    Signed-off-by: Aaron Grothe
    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Aaron Grothe
     

07 Jul, 2005

1 commit

  • Implementation:
    ===============
    The encrypt/decrypt code is based on an x86 implementation I did a while
    ago which I never published. This unpublished implementation does
    include an assembler based key schedule and precomputed tables. For
    simplicity and best acceptance, however, I took Gladman's in-kernel code
    for table generation and key schedule for the kernel port of my
    assembler code and modified this code to produce the key schedule as
    required by my assembler implementation. File locations and Kconfig are
    kept similar to the i586 AES assembler implementation.
    It may seem a little bit strange to use 32 bit I/O and registers in the
    assembler implementation but this gives the best code size. My
    implementation takes one instruction more per round compared to
    Gladman's x86 assembler but it doesn't require any stack for local
    variables or saved registers and it is less serialized than Gladman's
    code.
    Note that all comparisons to Gladman's code were done after my code was
    implemented. I did only use FIPS PUB 197 for the implementation so my
    implementation is independent work.
    If anybody has a better assembler solution for x86_64 I'll be pleased to
    have my code replaced with the better solution.

    Testing:
    ========
    The implementation passes the in-kernel crypto testing module and I'm
    running it without any problems on my laptop where it is mainly used for
    dm-crypt.

    Microbenchmark:
    ===============
    The microbenchmark was done in userspace with similar compile flags as
    used during kernel compile.
    Encrypt/decrypt is about 35% faster than the generic C implementation.
    As the generic C as well as my assembler implementation are both table
    I don't really expect that there is much room for further
    improvements though I'll be glad to be corrected here.
    The key schedule is about 5% slower than the generic C implementation.
    This is due to the fact that some more work has to be done in the key
    schedule routine to fit the schedule to the assembler implementation.

    Code Size:
    ==========
    Encrypt and decrypt are together about 2.1 Kbytes smaller than the
    generic C implementation which is important with regard to L1 cache
    usage. The key schedule routine is about 100 bytes larger than the
    generic C implementation.

    Data Size:
    ==========
    There's no difference in data size requirements between the assembler
    implementation and the generic C implementation.

    License:
    ========
    Gladmans's code is dual BSD/GPL whereas my assembler code is GPLv2 only
    (I'm not going to change the license for my code). So I had to change
    the module license for the x86_64 aes module from 'Dual BSD/GPL' to
    'GPL' to reflect the most restrictive license within the module.

    Signed-off-by: Andreas Steinmetz
    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Andreas Steinmetz
     

01 May, 2005

1 commit

  • We want to make possible, for the user, to enable the i586 AES implementation.
    This requires a restructure.

    - Add a CONFIG_UML_X86 to notify that we are building a UML for i386.

    - Rename CONFIG_64_BIT to CONFIG_64BIT as is used for all other archs

    - Tell crypto/Kconfig that UML_X86 is as good as X86

    - Tell it that it must exclude not X86_64 but 64BIT, which will give the
    same results.

    - Tell kbuild to descend down into arch/i386/crypto/ to build what's needed.

    Signed-off-by: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paolo 'Blaisorblade' Giarrusso
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds