Crypto++ 8.9 Free C++ class library of cryptographic schemes

Classes | Macros
xts.h File Reference

Classes for XTS block cipher mode of operation. More...

Go to the source code of this file.

## Classes
class | XTS_ModeBase
| XTS block cipher mode of operation default implementation. More...
class | XTS_Final< CIPHER >
| XTS block cipher mode of operation implementation. More...
struct | XTS< CIPHER >
| XTS block cipher mode of operation. More...

## Macros
#define | CRYPTOPP_XTS_WIDE_BLOCK_CIPHERS 0
| Enable XTS for wide block ciphers. More...
#define | XTS_Mode XTS

## Detailed Description

Classes for XTS block cipher mode of operation.

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.

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.

Since
  Crypto++ 8.3

Definition in file xts.h.

## Macro Definition Documentation

## ◆ CRYPTOPP_XTS_WIDE_BLOCK_CIPHERS

#define CRYPTOPP_XTS_WIDE_BLOCK_CIPHERS 0

Enable XTS for wide block ciphers.

XTS is only defined for AES. The library can support wide block ciphers like Kaylna and Threefish since we know the polynomials. To enable wide block ciphers define `CRYPTOPP_XTS_WIDE_BLOCK_CIPHERS` to non-zero. Note this is a library compile time define.

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."

See also
  Evaluation of Some Blockcipher Modes of Operation

Since
  Crypto++ 8.3

Definition at line 42 of file xts.h.