1. 11 1月, 2008 1 次提交
    • H
      [CRYPTO] ablkcipher: Add distinct ABLKCIPHER type · 332f8840
      Herbert Xu 提交于
      Up until now we have ablkcipher algorithms have been identified as
      type BLKCIPHER with the ASYNC bit set.  This is suboptimal because
      ablkcipher refers to two things.  On the one hand it refers to the
      top-level ablkcipher interface with requests.  On the other hand it
      refers to and algorithm type underneath.
      
      As it is you cannot request a synchronous block cipher algorithm
      with the ablkcipher interface on top.  This is a problem because
      we want to be able to eventually phase out the blkcipher top-level
      interface.
      
      This patch fixes this by making ABLKCIPHER its own type, just as
      we have distinct types for HASH and DIGEST.  The type it associated
      with the algorithm implementation only.
      
      Which top-level interface is used for synchronous block ciphers is
      then determined by the mask that's used.  If it's a specific mask
      then the old blkcipher interface is given, otherwise we go with the
      new ablkcipher interface.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      332f8840
  2. 20 10月, 2007 1 次提交
  3. 11 10月, 2007 4 次提交
  4. 11 7月, 2007 1 次提交
  5. 02 5月, 2007 4 次提交
    • H
      [CRYPTO] api: Add ablkcipher_request_set_tfm · e196d625
      Herbert Xu 提交于
      This patch adds ablkcipher_request_set_tfm for those users that need
      to manage the memory for ablkcipher requests directly.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      e196d625
    • H
      [CRYPTO] api: Add async blkcipher type · b5b7f088
      Herbert Xu 提交于
      This patch adds the mid-level interface for asynchronous block ciphers.
      It also includes a generic queueing mechanism that can be used by other
      asynchronous crypto operations in future.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      b5b7f088
    • H
      [CRYPTO] templates: Pass type/mask when creating instances · ebc610e5
      Herbert Xu 提交于
      This patch passes the type/mask along when constructing instances of
      templates.  This is in preparation for templates that may support
      multiple types of instances depending on what is requested.  For example,
      the planned software async crypto driver will use this construct.
      
      For the moment this allows us to check whether the instance constructed
      is of the correct type and avoid returning success if the type does not
      match.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      ebc610e5
    • H
      [CRYPTO] api: Add async block cipher interface · 32e3983f
      Herbert Xu 提交于
      This patch adds the frontend interface for asynchronous block ciphers.
      In addition to the usual block cipher parameters, there is a callback
      function pointer and a data pointer.  The callback will be invoked only
      if the encrypt/decrypt handlers return -EINPROGRESS.  In other words,
      if the return value of zero the completion handler (or the equivalent
      code) needs to be invoked by the caller.
      
      The request structure is allocated and freed by the caller.  Its size
      is determined by calling crypto_ablkcipher_reqsize().  The helpers
      ablkcipher_request_alloc/ablkcipher_request_free can be used to manage
      the memory for a request.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      32e3983f
  6. 07 2月, 2007 2 次提交
  7. 07 12月, 2006 1 次提交
  8. 20 11月, 2006 1 次提交
  9. 21 9月, 2006 20 次提交
  10. 26 6月, 2006 3 次提交
    • H
      [CRYPTO] api: Removed const from cra_name/cra_driver_name · d913ea0d
      Herbert Xu 提交于
      We do need to change these names now and even more so in future with
      instantiated algorithms.  So let's stop lying to the compiler and get
      rid of the const modifiers.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      d913ea0d
    • H
      [CRYPTO] api: Added cra_init/cra_exit · c7fc0599
      Herbert Xu 提交于
      This patch adds the hooks cra_init/cra_exit which are called during a tfm's
      construction and destruction respectively.  This will be used by the instances
      to allocate child tfm's.
      
      For now this lets us get rid of the coa_init/coa_exit functions which are
      used for exactly that purpose (unlike the dia_init function which is called
      for each transaction).
      
      In fact the coa_exit path is currently buggy as it may get called twice
      when an error is encountered during initialisation.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      c7fc0599
    • H
      [CRYPTO] all: Pass tfm instead of ctx to algorithms · 6c2bb98b
      Herbert Xu 提交于
      Up until now algorithms have been happy to get a context pointer since
      they know everything that's in the tfm already (e.g., alignment, block
      size).
      
      However, once we have parameterised algorithms, such information will
      be specific to each tfm.  So the algorithm API needs to be changed to
      pass the tfm structure instead of the context pointer.
      
      This patch is basically a text substitution.  The only tricky bit is
      the assembly routines that need to get the context pointer offset
      through asm-offsets.h.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      6c2bb98b
  11. 26 4月, 2006 1 次提交
  12. 21 3月, 2006 1 次提交
    • H
      [CRYPTO] api: Align tfm context as wide as possible · f10b7897
      Herbert Xu 提交于
      Since tfm contexts can contain arbitrary types we should provide at least
      natural alignment (__attribute__ ((__aligned__))) for them.  In particular,
      this is needed on the Xscale which is a 32-bit architecture with a u64 type
      that requires 64-bit alignment.  This problem was reported by Ronen Shitrit.
      
      The crypto_tfm structure's size was 44 bytes on 32-bit architectures and
      80 bytes on 64-bit architectures.  So adding this requirement only means
      that we have to add an extra 4 bytes on 32-bit architectures.
      
      On i386 the natural alignment is 16 bytes which also benefits the VIA
      Padlock as it no longer has to manually align its context structure to
      128 bits.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      f10b7897