Crypto++  8.2
Free C++ class library of cryptographic schemes
Public Types | List of all members
XTS< CIPHER > Struct Template Reference

XTS block cipher mode of operation. More...

+ Inheritance diagram for XTS< CIPHER >:

Public Types

typedef CipherModeFinalTemplate_CipherHolder< typename CIPHER::Encryption, XTS_Final< CIPHER > > Encryption
typedef CipherModeFinalTemplate_CipherHolder< typename CIPHER::Decryption, XTS_Final< CIPHER > > Decryption
- Public Types inherited from SymmetricCipherDocumentation
typedef SymmetricCipher Encryption
 implements the SymmetricCipher interface
typedef SymmetricCipher Decryption
 implements the SymmetricCipher interface

Detailed Description

template<class CIPHER>
struct XTS< CIPHER >

XTS block cipher mode of operation.

Template Parameters
CIPHERBlockCipher derived class or type

XTS mode is a wide block mode defined by IEEE P1619-2008. NIST SP-800-38E approves the mode for storage devices citing IEEE 1619-2007. IEEE 1619-2007 provides both a reference implementation and test vectors. The IEEE reference implementation fails to arrive at the expected result for some test vectors.

XTS is only defined for AES. The library can support wide block ciphers like Kaylna and Threefish since we know the polynomials. There is risk involved with using XTS with wider block ciphers. According to Phillip Rogaway, "The narrow width of the underlying PRP and the poor treatment of fractional final blocks are problems." To enable wide block cipher support define CRYPTOPP_XTS_WIDE_BLOCK_CIPHERS to non-zero.

See also
Modes of Operation on the Crypto++ wiki, Evaluation of Some Blockcipher Modes of Operation, Recommendation for Block Cipher Modes of Operation: The XTS-AES Mode for Confidentiality on Storage Devices, IEEE P1619-2007 and IEEE P1619/XTS, inconsistent reference implementation and test vectors.
Crypto++ 8.3

Definition at line 213 of file xts.h.

The documentation for this struct was generated from the following file: