1. 11 1月, 2008 1 次提交
    • J
      [CRYPTO] ctr: Add CTR (Counter) block cipher mode · 23e353c8
      Joy Latten 提交于
      This patch implements CTR mode for IPsec.
      It is based off of RFC 3686.
      
      Please note:
      1. CTR turns a block cipher into a stream cipher.
      Encryption is done in blocks, however the last block
      may be a partial block.
      
      A "counter block" is encrypted, creating a keystream
      that is xor'ed with the plaintext. The counter portion
      of the counter block is incremented after each block
      of plaintext is encrypted.
      Decryption is performed in same manner.
      
      2. The CTR counterblock is composed of,
              nonce + IV + counter
      
      The size of the counterblock is equivalent to the
      blocksize of the cipher.
              sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
      
      The CTR template requires the name of the cipher
      algorithm, the sizeof the nonce, and the sizeof the iv.
              ctr(cipher,sizeof_nonce,sizeof_iv)
      
      So for example,
              ctr(aes,4,8)
      specifies the counterblock will be composed of 4 bytes
      from a nonce, 8 bytes from the iv, and 4 bytes for counter
      since aes has a blocksize of 16 bytes.
      
      3. The counter portion of the counter block is stored
      in big endian for conformance to rfc 3686.
      Signed-off-by: NJoy Latten <latten@austin.ibm.com>
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      23e353c8