11 Oct, 2007

40 commits

  • Loading the crypto algorithm by the alias instead of by module directly
    has the advantage that all possible implementations of this algorithm
    are loaded automatically and the crypto API can choose the best one
    depending on its priority.

    Additionally it ensures that the generic implementation as well as the
    HW driver (if available) is loaded in case the HW driver needs the
    generic version as fallback in corner cases.

    Signed-off-by: Sebastian Siewior
    Signed-off-by: Herbert Xu

    Sebastian Siewior
     
  • Loading the crypto algorithm by the alias instead of by module directly
    has the advantage that all possible implementations of this algorithm
    are loaded automatically and the crypto API can choose the best one
    depending on its priority.

    Signed-off-by: Sebastian Siewior
    Signed-off-by: Herbert Xu

    Sebastian Siewior
     
  • This patch adds the helper blkcipher_walk_virt_block which is similar to
    blkcipher_walk_virt but uses a supplied block size instead of the block
    size of the block cipher. This is useful for CTR where the block size is
    1 but we still want to walk by the block size of the underlying cipher.

    Signed-off-by: Herbert Xu

    Herbert Xu
     
  • Now that the block size is no longer a multiple of the alignment, we need to
    increase the kmalloc amount in blkcipher_next_slow to use the aligned block
    size.

    Signed-off-by: Herbert Xu

    Herbert Xu
     
  • This patch adds a comment to explain why we compare the cra_driver_name of
    the algorithm being registered against the cra_name of a larval as opposed
    to the cra_driver_name of the larval.

    In fact larvals have only one name, cra_name which is the name that was
    requested by the user. The test here is simply trying to find out whether
    the algorithm being registered can or can not satisfy the larval.

    Signed-off-by: Herbert Xu

    Herbert Xu
     
  • Previously we assumed for convenience that the block size is a multiple of
    the algorithm's required alignment. With the pending addition of CTR this
    will no longer be the case as the block size will be 1 due to it being a
    stream cipher. However, the alignment requirement will be that of the
    underlying implementation which will most likely be greater than 1.

    Signed-off-by: Herbert Xu

    Herbert Xu
     
  • We do not allow spaces in algorithm names or parameters. Thanks to Joy Latten
    for pointing this out.

    Signed-off-by: Herbert Xu

    Herbert Xu
     
  • As Joy Latten points out, inner algorithm parameters will miss the closing
    bracket which will also cause the outer algorithm to terminate prematurely.

    This patch fixes that also kills the WARN_ON if the number of parameters
    exceed the maximum as that is a user error.

    Signed-off-by: Herbert Xu

    Herbert Xu
     
  • XTS currently considered to be the successor of the LRW mode by the IEEE1619
    workgroup. LRW was discarded, because it was not secure if the encyption key
    itself is encrypted with LRW.

    XTS does not have this problem. The implementation is pretty straightforward,
    a new function was added to gf128mul to handle GF(128) elements in ble format.
    Four testvectors from the specification
    http://grouper.ieee.org/groups/1619/email/pdf00086.pdf
    were added, and they verify on my system.

    Signed-off-by: Rik Snel
    Signed-off-by: Herbert Xu

    Rik Snel
     
  • Use max in blkcipher_get_spot() instead of open coding it.

    Signed-off-by: Ingo Oeser
    Signed-off-by: Herbert Xu

    Ingo Oeser
     
  • When scatterwalk is built as a module digest.c was broken because it
    requires the crypto_km_types structure which is in scatterwalk. This
    patch removes the crypto_km_types structure by encoding the logic into
    crypto_kmap_type directly.

    In fact, this even saves a few bytes of code (not to mention the data
    structure itself) on i386 which is about the only place where it's
    needed.

    Signed-off-by: Herbert Xu

    Herbert Xu
     
  • This patch adds the authenc algorithm which constructs an AEAD algorithm
    from an asynchronous block cipher and a hash. The construction is done
    by concatenating the encrypted result from the cipher with the output
    from the hash, as is used by the IPsec ESP protocol.

    The authenc algorithm exists as a template with four parameters:

    authenc(auth, authsize, enc, enckeylen).

    The authentication algorithm, the authentication size (i.e., truncating
    the output of the authentication algorithm), the encryption algorithm,
    and the encryption key length. Both the size field and the key length
    field are in bytes. For example, AES-128 with SHA1-HMAC would be
    represented by

    authenc(hmac(sha1), 12, cbc(aes), 16)

    The key for the authenc algorithm is the concatenation of the keys for
    the authentication algorithm with the encryption algorithm. For the
    above example, if a key of length 36 bytes is given, then hmac(sha1)
    would receive the first 20 bytes while the last 16 would be given to
    cbc(aes).

    Signed-off-by: Herbert Xu

    Herbert Xu
     
  • This patch changes the return type of crypto_*_reqsize from int to
    unsigned int which matches what the underlying type is (and should
    be).

    Signed-off-by: Herbert Xu

    Herbert Xu
     
  • This patch adds the function scatterwalk_map_and_copy which reads or
    writes a chunk of data from a scatterlist at a given offset. It will
    be used by authenc which would read/write the authentication data at
    the end of the cipher/plain text.

    Signed-off-by: Herbert Xu

    Herbert Xu
     
  • The scatterwalk code is only used by algorithms that can be built as
    a module. Therefore we can move it into algapi.

    Signed-off-by: Herbert Xu

    Herbert Xu
     
  • Since not everyone needs a queue pointer and those who need it can
    always get it from the context anyway the queue pointer in the
    common alg object is redundant.

    Signed-off-by: Herbert Xu

    Herbert Xu
     
  • This patch ensures that kernel.h and slab.h are included for
    the setkey_unaligned function. It also breaks a couple of
    long lines.

    Signed-off-by: Herbert Xu

    Herbert Xu
     
  • This patch adds support for having multiple parameters to
    a template, separated by a comma. It also adds support
    for integer parameters in addition to the current algorithm
    parameter type.

    This will be used by the authenc template which will have
    four parameters: the authentication algorithm, the encryption
    algorithm, the authentication size and the encryption key
    length.

    Signed-off-by: Herbert Xu

    Herbert Xu
     
  • This patch adds crypto_aead which is the interface for AEAD
    (Authenticated Encryption with Associated Data) algorithms.

    AEAD algorithms perform authentication and encryption in one
    step. Traditionally users (such as IPsec) would use two
    different crypto algorithms to perform these. With AEAD
    this comes down to one algorithm and one operation.

    Of course if traditional algorithms were used we'd still
    be doing two operations underneath. However, real AEAD
    algorithms may allow the underlying operations to be
    optimised as well.

    Signed-off-by: Herbert Xu

    Herbert Xu
     
  • This patch adds support for the SEED cipher (RFC4269).

    This patch have been used in few VPN appliance vendors in Korea for
    several years. And it was verified by KISA, who developed the
    algorithm itself.

    As its importance in Korean banking industry, it would be great
    if linux incorporates the support.

    Signed-off-by: Hye-Shik Chang
    Signed-off-by: Herbert Xu

    Hye-Shik Chang
     
  • This is function does the same thing for ablkcipher that is done for
    blkcipher by crypto_blkcipher_ctx_aligned(): it returns an aligned
    address of the private ctx.

    Signed-off-by: Sebastian Siewior
    Signed-off-by: Herbert Xu

    Sebastian Siewior
     
  • Hardware drivers shouldn't default to m.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Herbert Xu

    Adrian Bunk
     
  • Other options requiring specific block cipher algorithms already have
    the appropriate select's.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Herbert Xu

    Adrian Bunk
     
  • Just switch to the consolidated code.

    Signed-off-by: Pavel Emelyanov
    Signed-off-by: David S. Miller

    Pavel Emelyanov
     
  • Just switch to the consolidated code

    Signed-off-by: Pavel Emelyanov
    Signed-off-by: David S. Miller

    Pavel Emelyanov
     
  • Just switch to the consolidated code.

    Signed-off-by: Pavel Emelyanov
    Signed-off-by: David S. Miller

    Pavel Emelyanov
     
  • Just switch to the consolidated calls.

    ipt_recent() has to initialize the private, so use
    the __seq_open_private() helper.

    Signed-off-by: Pavel Emelyanov
    Signed-off-by: David S. Miller

    Pavel Emelyanov
     
  • This concerns the ipv4 and ipv6 code mostly, but also the netlink
    and unix sockets.

    The netlink code is an example of how to use the __seq_open_private()
    call - it saves the net namespace on this private.

    Signed-off-by: Pavel Emelyanov
    Signed-off-by: David S. Miller

    Pavel Emelyanov
     
  • This function allocates the zeroed chunk of memory and
    call seq_open(). The __seq_open_private() helper returns
    the allocated memory to make it possible for the caller
    to initialize it.

    Signed-off-by: Pavel Emelyanov
    Signed-off-by: David S. Miller

    Pavel Emelyanov
     
  • Commit da3dedd9 ("[NET]: Make NAPI polling independent of struct
    net_device objects.") changed the interface to NAPI polling. Fix up
    the ibm_newemac driver so that it works with this new interface. This
    is actually a nice cleanup because ibm_newemac is one of the drivers
    that wants to have multiple NAPI structures for a single net_device.

    Compile-tested only as I don't have a system that uses the ibm_newemac
    driver. This conversion the conversion for the ibm_emac driver that
    was tested on real PowerPC 440SPe hardware.

    Signed-off-by: Roland Dreier
    Signed-off-by: Jeff Garzik

    Roland Dreier
     
  • Signed-off-by: Roland Dreier
    Signed-off-by: Jeff Garzik

    Roland Dreier
     
  • Commit da3dedd9 ("[NET]: Make NAPI polling independent of struct
    net_device objects.") changed the interface to NAPI polling. Fix up
    the ibm_emac driver so that it works with this new interface. This is
    actually a nice cleanup because ibm_emac is one of the drivers that
    wants to have multiple NAPI structures for a single net_device.

    Tested with the internal MAC of a PowerPC 440SPe SoC with an AMCC
    'Yucca' evaluation board.

    Signed-off-by: Roland Dreier
    Signed-off-by: Jeff Garzik

    Roland Dreier
     
  • The conversion to use netdevice internal stats left an unused variable
    in ipoib_neigh_free(), since there's no longer any reason to get
    netdev_priv() in order to increment dropped packets. Delete the
    unused priv variable.

    Signed-off-by: Roland Dreier
    Signed-off-by: Jeff Garzik

    Roland Dreier
     
  • The natsemi driver has a define NATSEMI_TIMER_FREQ which looks like it
    controls the normal frequency of the chip poll timer but in fact only
    takes effect for the first run of the timer. Adjust the value of the
    define to match that used by the timer and use the define consistently.

    Signed-off-by: Mark Brown
    Signed-off-by: Jeff Garzik

    Mark Brown
     
  • Fix warnings from sparse related to shadowed variables and routines
    that should be declared static.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: Jeff Garzik

    Stephen Hemminger
     
  • Fix problems detected by sparse:
    1. whole chunk of MAC code was for defined and never used
    2. hook for running ext intr in workqueue wasn't being used

    Signed-off-by: Stephen Hemminger
    Signed-off-by: Jeff Garzik

    Stephen Hemminger
     
  • eHEA recovery and DLPAR functions are called seldomly. The eHEA workqueues
    are replaced by the kernel event queue.

    Signed-off-by: Jan-Bernd Themann
    Signed-off-by: Jeff Garzik

    Jan-Bernd Themann
     
  • Fix some of the easy warnings in network device drivers.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: Jeff Garzik

    Stephen Hemminger
     
  • Fix warnings from sparse checker about shadowed definition and improperly
    formatted ethtool_strings.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: Jeff Garzik

    Stephen Hemminger
     
  • After a cable unplug the forced flow control settings were lost
    accidentally and the flow control settings fell back to the default
    EEPROM determined values. This breaks for people who want to
    run without fc enabled - after a cable reset the driver would
    refuse to run with fc disabled.

    Signed-off-by: Auke Kok
    Signed-off-by: Jeff Garzik

    Auke Kok