From 71e9fece8795d6bc23e629b6ee00fa96f9d1d2f6 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Sat, 7 Apr 2018 11:41:00 -0400 Subject: [PATCH] Make CAST temporaries class members --- cast.cpp | 12 +++--------- cast.h | 3 +++ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/cast.cpp b/cast.cpp index b0ad3127..a63e3f8b 100644 --- a/cast.cpp +++ b/cast.cpp @@ -35,8 +35,7 @@ typedef BlockGetAndPut Block; void CAST128::Enc::ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, byte *outBlock) const { - // TODO: add a SecBlock workspace to the class when the ABI can change - word32 t,l,r; + word32 &t=m_t[0], &l=m_t[1], &r=m_t[2]; /* Get inblock into l,r */ Block::Get(inBlock)(l)(r); @@ -66,8 +65,7 @@ void CAST128::Enc::ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, void CAST128::Dec::ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, byte *outBlock) const { - // TODO: add a SecBlock workspace to the class when the ABI can change - word32 t,l,r; + word32 &t=m_t[0], &l=m_t[1], &r=m_t[2]; /* Get inblock into l,r */ Block::Get(inBlock)(r)(l); @@ -256,9 +254,7 @@ void CAST256::Base::UncheckedSetKey(const byte *userKey, unsigned int keylength, { AssertValidKeyLength(keylength); - // TODO: add a SecBlock workspace to the class when the ABI can change - word32 kappa[8]; - GetUserKey(BIG_ENDIAN_ORDER, kappa, 8, userKey, keylength); + GetUserKey(BIG_ENDIAN_ORDER, kappa.begin(), 8, userKey, keylength); for(int i=0; i<12; ++i) { @@ -291,8 +287,6 @@ void CAST256::Base::UncheckedSetKey(const byte *userKey, unsigned int keylength, } } } - - SecureWipeBuffer(kappa, 8); } NAMESPACE_END diff --git a/cast.h b/cast.h index 08ac2951..c0ac3347 100644 --- a/cast.h +++ b/cast.h @@ -41,6 +41,7 @@ class CAST128 : public CAST128_Info, public BlockCipherDocumentation protected: bool reduced; FixedSizeSecBlock K; + mutable FixedSizeSecBlock m_t; }; /// \brief CAST128 block cipher encryption operation @@ -88,6 +89,8 @@ class CAST256 : public CAST256_Info, public BlockCipherDocumentation static void Omega(int i, word32 kappa[8]); FixedSizeSecBlock K; + mutable FixedSizeSecBlock kappa; + mutable FixedSizeSecBlock m_t; }; public: