fix compile on Turbo C++ 2006

This commit is contained in:
weidai 2007-05-05 18:29:44 +00:00
parent 31b3f6c3a8
commit f018ac354a
6 changed files with 47 additions and 28 deletions

View File

@ -14,7 +14,7 @@
</Source> </Source>
<BCBPROJECT> <BCBPROJECT>
<project version="10.0"> <project version="10.0">
<property category="build.config" name="active" value="0"/> <property category="build.config" name="active" value="1"/>
<property category="build.config" name="count" value="1"/> <property category="build.config" name="count" value="1"/>
<property category="build.config" name="excludedefaultforzero" value="0"/> <property category="build.config" name="excludedefaultforzero" value="0"/>
<property category="build.config.0" name="builddir" value="Debug"/> <property category="build.config.0" name="builddir" value="Debug"/>
@ -235,11 +235,11 @@
<Debugging Name="DebugSourceDirs"></Debugging> <Debugging Name="DebugSourceDirs"></Debugging>
</Debugging> </Debugging>
<Parameters> <Parameters>
<Parameters Name="RunParams">v 50</Parameters> <Parameters Name="RunParams">v 66</Parameters>
<Parameters Name="Launcher"></Parameters> <Parameters Name="Launcher"></Parameters>
<Parameters Name="UseLauncher">True</Parameters> <Parameters Name="UseLauncher">True</Parameters>
<Parameters Name="DebugCWD">.</Parameters> <Parameters Name="DebugCWD">.</Parameters>
<Parameters Name="HostApplication"></Parameters> <Parameters Name="HostApplication">D:\cvs\c5\Debug_Build\cryptest_bds.exe</Parameters>
<Parameters Name="RemoteHost"></Parameters> <Parameters Name="RemoteHost"></Parameters>
<Parameters Name="RemotePath"></Parameters> <Parameters Name="RemotePath"></Parameters>
<Parameters Name="RemoteParams"></Parameters> <Parameters Name="RemoteParams"></Parameters>

View File

@ -14,7 +14,7 @@
</Source> </Source>
<BCBPROJECT> <BCBPROJECT>
<project version="10.0"> <project version="10.0">
<property category="build.config" name="active" value="0"/> <property category="build.config" name="active" value="1"/>
<property category="build.config" name="count" value="1"/> <property category="build.config" name="count" value="1"/>
<property category="build.config" name="excludedefaultforzero" value="0"/> <property category="build.config" name="excludedefaultforzero" value="0"/>
<property category="build.config.0" name="builddir" value="Debug"/> <property category="build.config.0" name="builddir" value="Debug"/>
@ -45,14 +45,19 @@
<property category="win32.*.win32b.tasm32" name="param.objfile.merge" value="1"/> <property category="win32.*.win32b.tasm32" name="param.objfile.merge" value="1"/>
<property category="win32.*.win32b.tasm32" name="param.xreffile.merge" value="1"/> <property category="win32.*.win32b.tasm32" name="param.xreffile.merge" value="1"/>
<property category="win32.Debug_Build.win32b.bcc32" name="container.SelectedOptimizations.containerenabled" value="0"/> <property category="win32.Debug_Build.win32b.bcc32" name="container.SelectedOptimizations.containerenabled" value="0"/>
<property category="win32.Debug_Build.win32b.bcc32" name="container.SelectedWarnings.containerenabled" value="1"/>
<property category="win32.Debug_Build.win32b.bcc32" name="option.D.arg.1" value="_DEBUG"/> <property category="win32.Debug_Build.win32b.bcc32" name="option.D.arg.1" value="_DEBUG"/>
<property category="win32.Debug_Build.win32b.bcc32" name="option.D.arg.merge" value="1"/> <property category="win32.Debug_Build.win32b.bcc32" name="option.D.arg.merge" value="1"/>
<property category="win32.Debug_Build.win32b.bcc32" name="option.D.enabled" value="1"/> <property category="win32.Debug_Build.win32b.bcc32" name="option.D.enabled" value="1"/>
<property category="win32.Debug_Build.win32b.bcc32" name="option.Od.enabled" value="1"/> <property category="win32.Debug_Build.win32b.bcc32" name="option.Od.enabled" value="1"/>
<property category="win32.Debug_Build.win32b.bcc32" name="option.disablewarns.enabled" value="0"/>
<property category="win32.Debug_Build.win32b.bcc32" name="option.k.enabled" value="1"/> <property category="win32.Debug_Build.win32b.bcc32" name="option.k.enabled" value="1"/>
<property category="win32.Debug_Build.win32b.bcc32" name="option.r.enabled" value="0"/> <property category="win32.Debug_Build.win32b.bcc32" name="option.r.enabled" value="0"/>
<property category="win32.Debug_Build.win32b.bcc32" name="option.v.enabled" value="1"/> <property category="win32.Debug_Build.win32b.bcc32" name="option.v.enabled" value="1"/>
<property category="win32.Debug_Build.win32b.bcc32" name="option.vi.enabled" value="0"/> <property category="win32.Debug_Build.win32b.bcc32" name="option.vi.enabled" value="0"/>
<property category="win32.Debug_Build.win32b.bcc32" name="option.w.enabled" value="0"/>
<property category="win32.Debug_Build.win32b.bcc32" name="option.wccc.enabled" value="0"/>
<property category="win32.Debug_Build.win32b.bcc32" name="option.wrch.enabled" value="0"/>
<property category="win32.Debug_Build.win32b.bcc32" name="option.y.enabled" value="1"/> <property category="win32.Debug_Build.win32b.bcc32" name="option.y.enabled" value="1"/>
<property category="win32.Debug_Build.win32b.dcc32" name="option.$D.enabled" value="1"/> <property category="win32.Debug_Build.win32b.dcc32" name="option.$D.enabled" value="1"/>
<property category="win32.Debug_Build.win32b.dcc32" name="option.$O.enabled" value="0"/> <property category="win32.Debug_Build.win32b.dcc32" name="option.$O.enabled" value="0"/>
@ -70,6 +75,10 @@
<property category="win32.Debug_Build.win32b.tasm32" name="option.zd.enabled" value="0"/> <property category="win32.Debug_Build.win32b.tasm32" name="option.zd.enabled" value="0"/>
<property category="win32.Debug_Build.win32b.tasm32" name="option.zi.enabled" value="1"/> <property category="win32.Debug_Build.win32b.tasm32" name="option.zi.enabled" value="1"/>
<property category="win32.Release_Build.win32b.bcc32" name="container.SelectedOptimizations.containerenabled" value="1"/> <property category="win32.Release_Build.win32b.bcc32" name="container.SelectedOptimizations.containerenabled" value="1"/>
<property category="win32.Release_Build.win32b.bcc32" name="container.SelectedWarnings.containerenabled" value="1"/>
<property category="win32.Release_Build.win32b.bcc32" name="option.A.enabled" value="0"/>
<property category="win32.Release_Build.win32b.bcc32" name="option.AK.enabled" value="0"/>
<property category="win32.Release_Build.win32b.bcc32" name="option.AU.enabled" value="0"/>
<property category="win32.Release_Build.win32b.bcc32" name="option.D.arg.1" value="NDEBUG"/> <property category="win32.Release_Build.win32b.bcc32" name="option.D.arg.1" value="NDEBUG"/>
<property category="win32.Release_Build.win32b.bcc32" name="option.D.arg.merge" value="1"/> <property category="win32.Release_Build.win32b.bcc32" name="option.D.arg.merge" value="1"/>
<property category="win32.Release_Build.win32b.bcc32" name="option.D.enabled" value="1"/> <property category="win32.Release_Build.win32b.bcc32" name="option.D.enabled" value="1"/>
@ -86,10 +95,14 @@
<property category="win32.Release_Build.win32b.bcc32" name="option.Op.enabled" value="1"/> <property category="win32.Release_Build.win32b.bcc32" name="option.Op.enabled" value="1"/>
<property category="win32.Release_Build.win32b.bcc32" name="option.Ov.enabled" value="1"/> <property category="win32.Release_Build.win32b.bcc32" name="option.Ov.enabled" value="1"/>
<property category="win32.Release_Build.win32b.bcc32" name="option.Oz.enabled" value="1"/> <property category="win32.Release_Build.win32b.bcc32" name="option.Oz.enabled" value="1"/>
<property category="win32.Release_Build.win32b.bcc32" name="option.disablewarns.enabled" value="0"/>
<property category="win32.Release_Build.win32b.bcc32" name="option.k.enabled" value="0"/> <property category="win32.Release_Build.win32b.bcc32" name="option.k.enabled" value="0"/>
<property category="win32.Release_Build.win32b.bcc32" name="option.r.enabled" value="1"/> <property category="win32.Release_Build.win32b.bcc32" name="option.r.enabled" value="1"/>
<property category="win32.Release_Build.win32b.bcc32" name="option.v.enabled" value="1"/> <property category="win32.Release_Build.win32b.bcc32" name="option.v.enabled" value="1"/>
<property category="win32.Release_Build.win32b.bcc32" name="option.vi.enabled" value="1"/> <property category="win32.Release_Build.win32b.bcc32" name="option.vi.enabled" value="1"/>
<property category="win32.Release_Build.win32b.bcc32" name="option.w.enabled" value="0"/>
<property category="win32.Release_Build.win32b.bcc32" name="option.wccc.enabled" value="0"/>
<property category="win32.Release_Build.win32b.bcc32" name="option.wrch.enabled" value="0"/>
<property category="win32.Release_Build.win32b.bcc32" name="option.y.enabled" value="1"/> <property category="win32.Release_Build.win32b.bcc32" name="option.y.enabled" value="1"/>
<property category="win32.Release_Build.win32b.dcc32" name="option.$D.enabled" value="0"/> <property category="win32.Release_Build.win32b.dcc32" name="option.$D.enabled" value="0"/>
<property category="win32.Release_Build.win32b.dcc32" name="option.$O.enabled" value="1"/> <property category="win32.Release_Build.win32b.dcc32" name="option.$O.enabled" value="1"/>
@ -227,7 +240,6 @@
<FILE FILENAME="gfpcrypt.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="gfpcrypt" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="gfpcrypt.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="gfpcrypt" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="gost.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="gost" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="gost.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="gost" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="gzip.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="gzip" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="gzip.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="gzip" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="haval.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="haval" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="hex.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="hex" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="hex.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="hex" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="hmac.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="hmac" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="hmac.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="hmac" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="hrtimer.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="hrtimer" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="hrtimer.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="hrtimer" FORMNAME="" DESIGNCLASS=""/>
@ -241,7 +253,6 @@
<FILE FILENAME="md2.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="md2" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="md2.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="md2" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="md4.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="md4" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="md4.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="md4" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="md5.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="md5" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="md5.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="md5" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="md5mac.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="md5mac" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="misc.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="misc" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="misc.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="misc" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="modes.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="modes" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="modes.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="modes" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="mqueue.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="mqueue" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="mqueue.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="mqueue" FORMNAME="" DESIGNCLASS=""/>
@ -267,7 +278,6 @@
<FILE FILENAME="rsa.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="rsa" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="rsa.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="rsa" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="rw.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="rw" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="rw.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="rw" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="safer.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="safer" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="safer.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="safer" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="salsa.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="salsa" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="seal.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="seal" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="seal.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="seal" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="serpent.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="serpent" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="serpent.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="serpent" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="sha.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="sha" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="sha.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="sha" FORMNAME="" DESIGNCLASS=""/>
@ -296,6 +306,10 @@
<FILE FILENAME="zdeflate.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="zdeflate" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="zdeflate.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="zdeflate" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="zinflate.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="zinflate" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="zinflate.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="zinflate" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="randpool.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="randpool" FORMNAME="" DESIGNCLASS=""/> <FILE FILENAME="randpool.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="randpool" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="cpu.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="cpu" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="salsa.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="salsa" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="sosemanuk.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="sosemanuk" FORMNAME="" DESIGNCLASS=""/>
<FILE FILENAME="vmac.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="vmac" FORMNAME="" DESIGNCLASS=""/>
</FILELIST> </FILELIST>
<IDEOPTIONS> <IDEOPTIONS>
<VersionInfo> <VersionInfo>

View File

@ -4,6 +4,7 @@
#include "hrtimer.h" #include "hrtimer.h"
#include "misc.h" #include "misc.h"
#include <stddef.h> // for NULL #include <stddef.h> // for NULL
#include <time.h>
#if defined(CRYPTOPP_WIN32_AVAILABLE) #if defined(CRYPTOPP_WIN32_AVAILABLE)
#include <windows.h> #include <windows.h>

View File

@ -359,15 +359,16 @@ void Panama<B>::Iterate(size_t count, const word32 *p, word32 *z, const word32 *
m_state[17] = bstart; m_state[17] = bstart;
} }
namespace Weak {
template <class B> template <class B>
size_t Weak::PanamaHash<B>::HashMultipleBlocks(const word32 *input, size_t length) size_t PanamaHash<B>::HashMultipleBlocks(const word32 *input, size_t length)
{ {
this->Iterate(length / this->BLOCKSIZE, input); this->Iterate(length / this->BLOCKSIZE, input);
return length % this->BLOCKSIZE; return length % this->BLOCKSIZE;
} }
template <class B> template <class B>
void Weak::PanamaHash<B>::TruncatedFinal(byte *hash, size_t size) void PanamaHash<B>::TruncatedFinal(byte *hash, size_t size)
{ {
this->ThrowIfInvalidTruncatedSize(size); this->ThrowIfInvalidTruncatedSize(size);
@ -384,6 +385,7 @@ void Weak::PanamaHash<B>::TruncatedFinal(byte *hash, size_t size)
this->Restart(); // reinit for next use this->Restart(); // reinit for next use
} }
}
template <class B> template <class B>
void PanamaCipherPolicy<B>::CipherSetKey(const NameValuePairs &params, const byte *key, size_t length) void PanamaCipherPolicy<B>::CipherSetKey(const NameValuePairs &params, const byte *key, size_t length)

View File

@ -116,17 +116,9 @@ public:
CallNewHandler(); CallNewHandler();
#ifdef CRYPTOPP_NO_ALIGNED_ALLOC #ifdef CRYPTOPP_NO_ALIGNED_ALLOC
assert(IsAlignedOn(p, 8)); size_t adjustment = 16-((size_t)p%16);
if (IsAlignedOn(p, 16)) p += adjustment;
{ p[-1] = (byte)adjustment;
p += 16/sizeof(T);
((int *)p)[-1] = 16;
}
else
{
p += 8/sizeof(T);
((int *)p)[-1] = 8;
}
#endif #endif
assert(IsAlignedOn(p, 16)); assert(IsAlignedOn(p, 16));
@ -148,7 +140,7 @@ public:
#ifdef CRYPTOPP_MM_MALLOC_AVAILABLE #ifdef CRYPTOPP_MM_MALLOC_AVAILABLE
_mm_free(p); _mm_free(p);
#elif defined(CRYPTOPP_NO_ALIGNED_ALLOC) #elif defined(CRYPTOPP_NO_ALIGNED_ALLOC)
p = ((byte *)p) - ((int *)p)[-1]/sizeof(T); p = (byte *)p - ((byte *)p)[-1];
free(p); free(p);
#else #else
free(p); free(p);
@ -269,9 +261,13 @@ public:
size_type max_size() const {return STDMAX(m_fallbackAllocator.max_size(), S);} size_type max_size() const {return STDMAX(m_fallbackAllocator.max_size(), S);}
private: private:
#ifdef __BORLANDC__
T* GetAlignedArray() {return m_array;}
T m_array[S];
#else
T* GetAlignedArray() {return T_Align16 ? (T*)(((byte *)m_array) + (0-(size_t)m_array)%16) : m_array;} T* GetAlignedArray() {return T_Align16 ? (T*)(((byte *)m_array) + (0-(size_t)m_array)%16) : m_array;}
CRYPTOPP_ALIGN_DATA(8) T m_array[T_Align16 ? S+8/sizeof(T) : S]; CRYPTOPP_ALIGN_DATA(8) T m_array[T_Align16 ? S+8/sizeof(T) : S];
#endif
A m_fallbackAllocator; A m_fallbackAllocator;
bool m_allocated; bool m_allocated;
}; };
@ -286,7 +282,7 @@ public:
typedef typename A::const_pointer const_iterator; typedef typename A::const_pointer const_iterator;
typedef typename A::size_type size_type; typedef typename A::size_type size_type;
explicit SecBlock(size_type size=0) explicit SecBlock(size_type size=0)
: m_size(size) {m_ptr = m_alloc.allocate(size, NULL);} : m_size(size) {m_ptr = m_alloc.allocate(size, NULL);}
SecBlock(const SecBlock<T, A> &t) SecBlock(const SecBlock<T, A> &t)
: m_size(t.m_size) {m_ptr = m_alloc.allocate(m_size, NULL); memcpy_s(m_ptr, m_size*sizeof(T), t.m_ptr, m_size*sizeof(T));} : m_size(t.m_size) {m_ptr = m_alloc.allocate(m_size, NULL); memcpy_s(m_ptr, m_size*sizeof(T), t.m_ptr, m_size*sizeof(T));}

View File

@ -13,12 +13,17 @@ NAMESPACE_BEGIN(CryptoPP)
#endif #endif
#define VMAC_BOOL_WORD128 (defined(CRYPTOPP_WORD128_AVAILABLE) && !defined(CRYPTOPP_X64_ASM_AVAILABLE)) #define VMAC_BOOL_WORD128 (defined(CRYPTOPP_WORD128_AVAILABLE) && !defined(CRYPTOPP_X64_ASM_AVAILABLE))
#ifdef __BORLANDC__
#define const // Turbo C++ 2006 workaround
#endif
static const word64 p64 = W64LIT(0xfffffffffffffeff); /* 2^64 - 257 prime */ static const word64 p64 = W64LIT(0xfffffffffffffeff); /* 2^64 - 257 prime */
static const word64 m62 = W64LIT(0x3fffffffffffffff); /* 62-bit mask */ static const word64 m62 = W64LIT(0x3fffffffffffffff); /* 62-bit mask */
static const word64 m63 = W64LIT(0x7fffffffffffffff); /* 63-bit mask */ static const word64 m63 = W64LIT(0x7fffffffffffffff); /* 63-bit mask */
static const word64 m64 = W64LIT(0xffffffffffffffff); /* 64-bit mask */ static const word64 m64 = W64LIT(0xffffffffffffffff); /* 64-bit mask */
static const word64 mpoly = W64LIT(0x1fffffff1fffffff); /* Poly key mask */ static const word64 mpoly = W64LIT(0x1fffffff1fffffff); /* Poly key mask */
#ifdef __BORLANDC__
#undef const
#endif
#if VMAC_BOOL_WORD128 #if VMAC_BOOL_WORD128
static const word128 m126 = (word128(m62)<<64)|m64; /* 126-bit mask */ static const word128 m126 = (word128(m62)<<64)|m64; /* 126-bit mask */
#endif #endif
@ -55,7 +60,7 @@ void VMAC_Base::UncheckedSetKey(const byte *userKey, unsigned int keylength, con
} }
/* Fill poly key */ /* Fill poly key */
in[0] = 0xC0; in[0] = 0xC0;
in[15] = 0; in[15] = 0;
for (i = 0; i <= (size_t)m_is128; i++) for (i = 0; i <= (size_t)m_is128; i++)
{ {
@ -68,14 +73,15 @@ void VMAC_Base::UncheckedSetKey(const byte *userKey, unsigned int keylength, con
/* Fill ip key */ /* Fill ip key */
in[0] = 0xE0; in[0] = 0xE0;
in[15] = 0; in[15] = 0;
word64 *l3Key = m_l3Key();
for (i = 0; i <= (size_t)m_is128; i++) for (i = 0; i <= (size_t)m_is128; i++)
do do
{ {
cipher.ProcessBlock(in, out.BytePtr()); cipher.ProcessBlock(in, out.BytePtr());
m_l3Key()[i*2+0] = GetWord<word64>(true, BIG_ENDIAN_ORDER, out.BytePtr()); l3Key[i*2+0] = GetWord<word64>(true, BIG_ENDIAN_ORDER, out.BytePtr());
m_l3Key()[i*2+1] = GetWord<word64>(true, BIG_ENDIAN_ORDER, out.BytePtr()+8); l3Key[i*2+1] = GetWord<word64>(true, BIG_ENDIAN_ORDER, out.BytePtr()+8);
in[15]++; in[15]++;
} while ((m_l3Key()[0] >= p64) || (m_l3Key()[1] >= p64)); } while ((l3Key[i*2+0] >= p64) || (l3Key[i*2+1] >= p64));
m_padCached = false; m_padCached = false;
Resynchronize(GetIVAndThrowIfInvalid(params)); Resynchronize(GetIVAndThrowIfInvalid(params));