11 Jan, 2008

1 commit

  • Currently twofish cipher key setup code
    has unrolled loops - approximately 70-100
    instructions are repeated 40 times.

    As a result, twofish module is the biggest module
    in crypto/*.

    Unrolling produces x2.5 more code (+18k on i386), and speeds up key
    setup by 7%:

    unrolled: twofish_setkey/sec: 41128
    loop: twofish_setkey/sec: 38148
    CALC_K256: ~100 insns each
    CALC_K192: ~90 insns
    CALC_K: ~70 insns

    Attached patch removes this unrolling.

    $ size */twofish_common.o
    text data bss dec hex filename
    37920 0 0 37920 9420 crypto.org/twofish_common.o
    13209 0 0 13209 3399 crypto/twofish_common.o

    Run tested (modprobe tcrypt reports ok). Please apply.

    Signed-off-by: Denys Vlasenko
    Signed-off-by: Herbert Xu

    Denys Vlasenko
     

21 Sep, 2006

2 commits

  • Now that the tfm is passed directly to setkey instead of the ctx, we no
    longer need to pass the &tfm->crt_flags pointer.

    This patch also gets rid of a few unnecessary checks on the key length
    for ciphers as the cipher layer guarantees that the key length is within
    the bounds specified by the algorithm.

    Rather than testing dia_setkey every time, this patch does it only once
    during crypto_alloc_tfm. The redundant check from crypto_digest_setkey
    is also removed.

    Signed-off-by: Herbert Xu

    Herbert Xu
     
  • This patch splits up the twofish crypto routine into a common part ( key
    setup ) which will be uses by all twofish crypto modules ( generic-c , i586
    assembler and x86_64 assembler ) and generic-c part. It also creates a new
    header file which will be used by all 3 modules.

    This eliminates all code duplication.

    Correctness was verified with the tcrypt module and automated test scripts.

    Signed-off-by: Joachim Fritschi
    Signed-off-by: Herbert Xu

    Joachim Fritschi