mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2026-07-28 10:52:38 +00:00
wolfCrypt as crypto backend for VeraCrypt (#1227)
* wolfCrypt as crypto backend for VeraCrypt * Refactor to use EncryptionModeWolfCryptXTS class
This commit is contained in:
@@ -12,6 +12,9 @@
|
||||
|
||||
#include "EncryptionAlgorithm.h"
|
||||
#include "EncryptionModeXTS.h"
|
||||
#ifdef WOLFCRYPT_BACKEND
|
||||
#include "EncryptionModeWolfCryptXTS.h"
|
||||
#endif
|
||||
|
||||
namespace VeraCrypt
|
||||
{
|
||||
@@ -62,6 +65,7 @@ namespace VeraCrypt
|
||||
EncryptionAlgorithmList l;
|
||||
|
||||
l.push_back (shared_ptr <EncryptionAlgorithm> (new AES ()));
|
||||
#ifndef WOLFCRYPT_BACKEND
|
||||
l.push_back (shared_ptr <EncryptionAlgorithm> (new Serpent ()));
|
||||
l.push_back (shared_ptr <EncryptionAlgorithm> (new Twofish ()));
|
||||
l.push_back (shared_ptr <EncryptionAlgorithm> (new Camellia ()));
|
||||
@@ -76,7 +80,7 @@ namespace VeraCrypt
|
||||
l.push_back (shared_ptr <EncryptionAlgorithm> (new SerpentAES ()));
|
||||
l.push_back (shared_ptr <EncryptionAlgorithm> (new SerpentTwofishAES ()));
|
||||
l.push_back (shared_ptr <EncryptionAlgorithm> (new TwofishSerpent ()));
|
||||
|
||||
#endif
|
||||
return l;
|
||||
}
|
||||
|
||||
@@ -215,7 +219,25 @@ namespace VeraCrypt
|
||||
}
|
||||
}
|
||||
|
||||
void EncryptionAlgorithm::ValidateState () const
|
||||
#ifdef WOLFCRYPT_BACKEND
|
||||
void EncryptionAlgorithm::SetKeyXTS (const ConstBufferPtr &key)
|
||||
{
|
||||
if (Ciphers.size() < 1)
|
||||
throw NotInitialized (SRC_POS);
|
||||
|
||||
if (GetKeySize() != key.Size())
|
||||
throw ParameterIncorrect (SRC_POS);
|
||||
|
||||
size_t keyOffset = 0;
|
||||
foreach_ref (Cipher &c, Ciphers)
|
||||
{
|
||||
c.SetKeyXTS (key.GetRange (keyOffset, c.GetKeySize()));
|
||||
keyOffset += c.GetKeySize();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void EncryptionAlgorithm::ValidateState () const
|
||||
{
|
||||
if (Ciphers.size() < 1 || Mode.get() == nullptr)
|
||||
throw NotInitialized (SRC_POS);
|
||||
@@ -226,9 +248,14 @@ namespace VeraCrypt
|
||||
{
|
||||
Ciphers.push_back (shared_ptr <Cipher> (new CipherAES()));
|
||||
|
||||
#ifdef WOLFCRYPT_BACKEND
|
||||
SupportedModes.push_back (shared_ptr <EncryptionMode> (new EncryptionModeWolfCryptXTS ()));
|
||||
#else
|
||||
SupportedModes.push_back (shared_ptr <EncryptionMode> (new EncryptionModeXTS ()));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef WOLFCRYPT_BACKEND
|
||||
// AES-Twofish
|
||||
AESTwofish::AESTwofish ()
|
||||
{
|
||||
@@ -353,4 +380,5 @@ namespace VeraCrypt
|
||||
|
||||
SupportedModes.push_back (shared_ptr <EncryptionMode> (new EncryptionModeXTS ()));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user