update version number, port to Sun C++ 5.8
parent
0b26f65853
commit
237daf1acb
|
|
@ -11,9 +11,10 @@ ARFLAGS = -cr # ar needs the dash on OpenBSD
|
||||||
RANLIB = ranlib
|
RANLIB = ranlib
|
||||||
CP = cp
|
CP = cp
|
||||||
MKDIR = mkdir
|
MKDIR = mkdir
|
||||||
|
EGREP = egrep
|
||||||
UNAME = $(shell uname)
|
UNAME = $(shell uname)
|
||||||
ISX86 = $(shell uname -m | egrep -c "i.86|x86")
|
ISX86 = $(shell uname -m | $(EGREP) -c "i.86|x86|i86")
|
||||||
ISMINGW = $(shell uname | egrep -c "MINGW32")
|
ISMINGW = $(shell uname | $(EGREP) -c "MINGW32")
|
||||||
|
|
||||||
# Default prefix for make install
|
# Default prefix for make install
|
||||||
ifeq ($(PREFIX),)
|
ifeq ($(PREFIX),)
|
||||||
|
|
@ -26,8 +27,8 @@ endif
|
||||||
|
|
||||||
ifeq ($(ISX86),1)
|
ifeq ($(ISX86),1)
|
||||||
|
|
||||||
GCC33ORLATER = $(shell $(CXX) -v 2>&1 | egrep -c "gcc version (3.[3-9]|[4-9])")
|
GCC33ORLATER = $(shell $(CXX) -v 2>&1 | $(EGREP) -c "gcc version (3.[3-9]|[4-9])")
|
||||||
GAS210ORLATER = $(shell echo "" | $(AS) -v 2>&1 | egrep -c "GNU assembler version (2.[1-9][0-9]|[3-9])")
|
GAS210ORLATER = $(shell echo "" | $(AS) -v 2>&1 | $(EGREP) -c "GNU assembler version (2.[1-9][0-9]|[3-9])")
|
||||||
|
|
||||||
ifeq ($(GCC33ORLATER) $(ISMINGW),1 0) # MINGW32 is missing the memalign function
|
ifeq ($(GCC33ORLATER) $(ISMINGW),1 0) # MINGW32 is missing the memalign function
|
||||||
CXXFLAGS += -msse2
|
CXXFLAGS += -msse2
|
||||||
|
|
@ -46,8 +47,10 @@ endif
|
||||||
ifeq ($(UNAME),) # for DJGPP, where uname doesn't exist
|
ifeq ($(UNAME),) # for DJGPP, where uname doesn't exist
|
||||||
CXXFLAGS += -mbnu210
|
CXXFLAGS += -mbnu210
|
||||||
else
|
else
|
||||||
|
ifneq ($(CXX),CC) # don't use -pipe with CC (Solaris native C++ compiler)
|
||||||
CXXFLAGS += -pipe
|
CXXFLAGS += -pipe
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(UNAME),Linux)
|
ifeq ($(UNAME),Linux)
|
||||||
LDFLAGS += -pthread
|
LDFLAGS += -pthread
|
||||||
|
|
@ -58,7 +61,7 @@ AR = libtool
|
||||||
ARFLAGS = -static -o
|
ARFLAGS = -static -o
|
||||||
CXX = c++
|
CXX = c++
|
||||||
CXXFLAGS += -D__pic__
|
CXXFLAGS += -D__pic__
|
||||||
IS_GCC2 = $(shell $(CXX) -v 2>&1 | egrep -c gcc-932)
|
IS_GCC2 = $(shell $(CXX) -v 2>&1 | $(EGREP) -c gcc-932)
|
||||||
ifeq ($(IS_GCC2),1)
|
ifeq ($(IS_GCC2),1)
|
||||||
CXXFLAGS += -fno-coalesce-templates -fno-coalesce-static-vtables
|
CXXFLAGS += -fno-coalesce-templates -fno-coalesce-static-vtables
|
||||||
LDLIBS += -lstdc++
|
LDLIBS += -lstdc++
|
||||||
|
|
@ -72,7 +75,7 @@ endif
|
||||||
|
|
||||||
SRCS = $(wildcard *.cpp)
|
SRCS = $(wildcard *.cpp)
|
||||||
ifeq ($(SRCS),) # workaround wildcard function bug in GNU Make 3.77
|
ifeq ($(SRCS),) # workaround wildcard function bug in GNU Make 3.77
|
||||||
SRCS = $(shell ls *.cpp)
|
SRCS = $(shell echo *.cpp)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
OBJS = $(SRCS:.cpp=.o)
|
OBJS = $(SRCS:.cpp=.o)
|
||||||
|
|
|
||||||
|
|
@ -357,6 +357,6 @@ the mailing list.
|
||||||
|
|
||||||
5.4 - added Salsa20
|
5.4 - added Salsa20
|
||||||
- updated Whirlpool to version 3.0
|
- updated Whirlpool to version 3.0
|
||||||
- ported to GCC 4.1 and Borland C++Builder 2006
|
- ported to GCC 4.1, Sun C++ 5.8, and Borland C++Builder 2006
|
||||||
|
|
||||||
Written by Wei Dai
|
Written by Wei Dai
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
// algebra.cpp - written and placed in the public domain by Wei Dai
|
// algebra.cpp - written and placed in the public domain by Wei Dai
|
||||||
|
|
||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
|
|
||||||
|
// prevent Sun's CC compiler from including this file automatically
|
||||||
|
#if !defined(__SUNPRO_CC) || defined(CRYPTOPP_MANUALLY_INSTANTIATE_TEMPLATES)
|
||||||
|
|
||||||
#include "algebra.h"
|
#include "algebra.h"
|
||||||
#include "integer.h"
|
#include "integer.h"
|
||||||
|
|
||||||
|
|
@ -201,8 +205,8 @@ template <class Element, class Iterator> Element GeneralCascadeMultiplication(co
|
||||||
|
|
||||||
struct WindowSlider
|
struct WindowSlider
|
||||||
{
|
{
|
||||||
WindowSlider(const Integer &exp, bool fastNegate, unsigned int windowSizeIn=0)
|
WindowSlider(const Integer &expIn, bool fastNegate, unsigned int windowSizeIn=0)
|
||||||
: exp(exp), windowModulus(Integer::One()), windowSize(windowSizeIn), windowBegin(0), fastNegate(fastNegate), firstTime(true), finished(false)
|
: exp(expIn), windowModulus(Integer::One()), windowSize(windowSizeIn), windowBegin(0), fastNegate(fastNegate), firstTime(true), finished(false)
|
||||||
{
|
{
|
||||||
if (windowSize == 0)
|
if (windowSize == 0)
|
||||||
{
|
{
|
||||||
|
|
@ -332,3 +336,5 @@ void AbstractRing<T>::SimultaneousExponentiate(T *results, const T &base, const
|
||||||
}
|
}
|
||||||
|
|
||||||
NAMESPACE_END
|
NAMESPACE_END
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -520,7 +520,7 @@ void X509PublicKey::BERDecode(BufferedTransformation &bt)
|
||||||
|
|
||||||
BERGeneralDecoder subjectPublicKey(subjectPublicKeyInfo, BIT_STRING);
|
BERGeneralDecoder subjectPublicKey(subjectPublicKeyInfo, BIT_STRING);
|
||||||
subjectPublicKey.CheckByte(0); // unused bits
|
subjectPublicKey.CheckByte(0); // unused bits
|
||||||
BERDecodeKey2(subjectPublicKey, parametersPresent, (size_t)subjectPublicKey.RemainingLength());
|
BERDecodePublicKey(subjectPublicKey, parametersPresent, (size_t)subjectPublicKey.RemainingLength());
|
||||||
subjectPublicKey.MessageEnd();
|
subjectPublicKey.MessageEnd();
|
||||||
subjectPublicKeyInfo.MessageEnd();
|
subjectPublicKeyInfo.MessageEnd();
|
||||||
}
|
}
|
||||||
|
|
@ -536,7 +536,7 @@ void X509PublicKey::DEREncode(BufferedTransformation &bt) const
|
||||||
|
|
||||||
DERGeneralEncoder subjectPublicKey(subjectPublicKeyInfo, BIT_STRING);
|
DERGeneralEncoder subjectPublicKey(subjectPublicKeyInfo, BIT_STRING);
|
||||||
subjectPublicKey.Put(0); // unused bits
|
subjectPublicKey.Put(0); // unused bits
|
||||||
DEREncodeKey(subjectPublicKey);
|
DEREncodePublicKey(subjectPublicKey);
|
||||||
subjectPublicKey.MessageEnd();
|
subjectPublicKey.MessageEnd();
|
||||||
|
|
||||||
subjectPublicKeyInfo.MessageEnd();
|
subjectPublicKeyInfo.MessageEnd();
|
||||||
|
|
@ -554,7 +554,7 @@ void PKCS8PrivateKey::BERDecode(BufferedTransformation &bt)
|
||||||
algorithm.MessageEnd();
|
algorithm.MessageEnd();
|
||||||
|
|
||||||
BERGeneralDecoder octetString(privateKeyInfo, OCTET_STRING);
|
BERGeneralDecoder octetString(privateKeyInfo, OCTET_STRING);
|
||||||
BERDecodeKey2(octetString, parametersPresent, (size_t)privateKeyInfo.RemainingLength());
|
BERDecodePrivateKey(octetString, parametersPresent, (size_t)privateKeyInfo.RemainingLength());
|
||||||
octetString.MessageEnd();
|
octetString.MessageEnd();
|
||||||
|
|
||||||
if (!privateKeyInfo.EndReached())
|
if (!privateKeyInfo.EndReached())
|
||||||
|
|
@ -573,7 +573,7 @@ void PKCS8PrivateKey::DEREncode(BufferedTransformation &bt) const
|
||||||
algorithm.MessageEnd();
|
algorithm.MessageEnd();
|
||||||
|
|
||||||
DERGeneralEncoder octetString(privateKeyInfo, OCTET_STRING);
|
DERGeneralEncoder octetString(privateKeyInfo, OCTET_STRING);
|
||||||
DEREncodeKey(octetString);
|
DEREncodePrivateKey(octetString);
|
||||||
octetString.MessageEnd();
|
octetString.MessageEnd();
|
||||||
|
|
||||||
DEREncodeOptionalAttributes(privateKeyInfo);
|
DEREncodeOptionalAttributes(privateKeyInfo);
|
||||||
|
|
|
||||||
|
|
@ -230,46 +230,61 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
//! key that can be ASN.1 encoded
|
//! _
|
||||||
/** derived class should override either BERDecodeKey or BERDecodeKey2 */
|
template <class BASE>
|
||||||
class CRYPTOPP_DLL ASN1Key : public ASN1CryptoMaterial
|
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE ASN1CryptoMaterial : public ASN1Object, public BASE
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
void Save(BufferedTransformation &bt) const
|
||||||
|
{BEREncode(bt);}
|
||||||
|
void Load(BufferedTransformation &bt)
|
||||||
|
{BERDecode(bt);}
|
||||||
|
};
|
||||||
|
|
||||||
|
//! encodes/decodes subjectPublicKeyInfo
|
||||||
|
class CRYPTOPP_DLL X509PublicKey : public ASN1CryptoMaterial<PublicKey>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void BERDecode(BufferedTransformation &bt);
|
||||||
|
void DEREncode(BufferedTransformation &bt) const;
|
||||||
|
|
||||||
virtual OID GetAlgorithmID() const =0;
|
virtual OID GetAlgorithmID() const =0;
|
||||||
virtual bool BERDecodeAlgorithmParameters(BufferedTransformation &bt)
|
virtual bool BERDecodeAlgorithmParameters(BufferedTransformation &bt)
|
||||||
{BERDecodeNull(bt); return false;}
|
{BERDecodeNull(bt); return false;}
|
||||||
virtual bool DEREncodeAlgorithmParameters(BufferedTransformation &bt) const
|
virtual bool DEREncodeAlgorithmParameters(BufferedTransformation &bt) const
|
||||||
{DEREncodeNull(bt); return false;} // see RFC 2459, section 7.3.1
|
{DEREncodeNull(bt); return false;} // see RFC 2459, section 7.3.1
|
||||||
//! decode subjectPublicKey part of subjectPublicKeyInfo, or privateKey part of privateKeyInfo, without the BIT STRING or OCTET STRING header
|
|
||||||
virtual void BERDecodeKey(BufferedTransformation &bt) {assert(false);}
|
|
||||||
virtual void BERDecodeKey2(BufferedTransformation &bt, bool parametersPresent, size_t size)
|
|
||||||
{BERDecodeKey(bt);}
|
|
||||||
//! encode subjectPublicKey part of subjectPublicKeyInfo, or privateKey part of privateKeyInfo, without the BIT STRING or OCTET STRING header
|
|
||||||
virtual void DEREncodeKey(BufferedTransformation &bt) const =0;
|
|
||||||
};
|
|
||||||
|
|
||||||
//! encodes/decodes subjectPublicKeyInfo
|
//! decode subjectPublicKey part of subjectPublicKeyInfo, without the BIT STRING header
|
||||||
class CRYPTOPP_DLL X509PublicKey : virtual public ASN1Key, public PublicKey
|
virtual void BERDecodePublicKey(BufferedTransformation &bt, bool parametersPresent, size_t size) =0;
|
||||||
{
|
//! encode subjectPublicKey part of subjectPublicKeyInfo, without the BIT STRING header
|
||||||
public:
|
virtual void DEREncodePublicKey(BufferedTransformation &bt) const =0;
|
||||||
void BERDecode(BufferedTransformation &bt);
|
|
||||||
void DEREncode(BufferedTransformation &bt) const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//! encodes/decodes privateKeyInfo
|
//! encodes/decodes privateKeyInfo
|
||||||
class CRYPTOPP_DLL PKCS8PrivateKey : virtual public ASN1Key, public PrivateKey
|
class CRYPTOPP_DLL PKCS8PrivateKey : public ASN1CryptoMaterial<PrivateKey>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void BERDecode(BufferedTransformation &bt);
|
void BERDecode(BufferedTransformation &bt);
|
||||||
void DEREncode(BufferedTransformation &bt) const;
|
void DEREncode(BufferedTransformation &bt) const;
|
||||||
|
|
||||||
|
virtual OID GetAlgorithmID() const =0;
|
||||||
|
virtual bool BERDecodeAlgorithmParameters(BufferedTransformation &bt)
|
||||||
|
{BERDecodeNull(bt); return false;}
|
||||||
|
virtual bool DEREncodeAlgorithmParameters(BufferedTransformation &bt) const
|
||||||
|
{DEREncodeNull(bt); return false;} // see RFC 2459, section 7.3.1
|
||||||
|
|
||||||
|
//! decode privateKey part of privateKeyInfo, without the OCTET STRING header
|
||||||
|
virtual void BERDecodePrivateKey(BufferedTransformation &bt, bool parametersPresent, size_t size) =0;
|
||||||
|
//! encode privateKey part of privateKeyInfo, without the OCTET STRING header
|
||||||
|
virtual void DEREncodePrivateKey(BufferedTransformation &bt) const =0;
|
||||||
|
|
||||||
//! decode optional attributes including context-specific tag
|
//! decode optional attributes including context-specific tag
|
||||||
/*! /note default implementation stores attributes to be output in DEREncodeOptionalAttributes */
|
/*! /note default implementation stores attributes to be output in DEREncodeOptionalAttributes */
|
||||||
virtual void BERDecodeOptionalAttributes(BufferedTransformation &bt);
|
virtual void BERDecodeOptionalAttributes(BufferedTransformation &bt);
|
||||||
//! encode optional attributes including context-specific tag
|
//! encode optional attributes including context-specific tag
|
||||||
virtual void DEREncodeOptionalAttributes(BufferedTransformation &bt) const;
|
virtual void DEREncodeOptionalAttributes(BufferedTransformation &bt) const;
|
||||||
|
|
||||||
private:
|
protected:
|
||||||
ByteQueue m_optionalAttributes;
|
ByteQueue m_optionalAttributes;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -53,8 +53,9 @@ public:
|
||||||
typedef std::pair<BufferedTransformation *, value_ptr<std::string> > DefaultRoute;
|
typedef std::pair<BufferedTransformation *, value_ptr<std::string> > DefaultRoute;
|
||||||
typedef std::list<DefaultRoute> DefaultRouteList;
|
typedef std::list<DefaultRoute> DefaultRouteList;
|
||||||
|
|
||||||
typedef RouteMap::const_iterator MapIterator;
|
// SunCC workaround: can't use const_iterator here
|
||||||
typedef DefaultRouteList::const_iterator ListIterator;
|
typedef RouteMap::iterator MapIterator;
|
||||||
|
typedef DefaultRouteList::iterator ListIterator;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ChannelSwitch;
|
class ChannelSwitch;
|
||||||
|
|
|
||||||
|
|
@ -104,7 +104,7 @@ NAMESPACE_BEGIN(CryptoPP)
|
||||||
typedef unsigned short word16;
|
typedef unsigned short word16;
|
||||||
typedef unsigned int word32;
|
typedef unsigned int word32;
|
||||||
|
|
||||||
#if defined(__GNUC__) || defined(__MWERKS__)
|
#if defined(__GNUC__) || defined(__MWERKS__) || defined(__SUNPRO_CC)
|
||||||
#define WORD64_AVAILABLE
|
#define WORD64_AVAILABLE
|
||||||
typedef unsigned long long word64;
|
typedef unsigned long long word64;
|
||||||
#define W64LIT(x) x##LL
|
#define W64LIT(x) x##LL
|
||||||
|
|
@ -238,6 +238,13 @@ NAMESPACE_END
|
||||||
# define CRYPTOPP_CONSTANT(x) static const int x;
|
# define CRYPTOPP_CONSTANT(x) static const int x;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// how to allocate 16-byte aligned memory (for SSE2)
|
||||||
|
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
|
||||||
|
# define CRYPTOPP_MALLOC_ALIGNMENT_IS_16
|
||||||
|
#elif defined(__linux__) || defined(__sun__) || defined(__CYGWIN__)
|
||||||
|
# define CRYPTOPP_MEMALIGN_AVAILABLE
|
||||||
|
#endif
|
||||||
|
|
||||||
// ***************** determine availability of OS features ********************
|
// ***************** determine availability of OS features ********************
|
||||||
|
|
||||||
#ifndef NO_OS_DEPENDENCE
|
#ifndef NO_OS_DEPENDENCE
|
||||||
|
|
@ -272,7 +279,7 @@ NAMESPACE_END
|
||||||
# define USE_BERKELEY_STYLE_SOCKETS
|
# define USE_BERKELEY_STYLE_SOCKETS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CRYPTOPP_WIN32_AVAILABLE) && !defined(USE_BERKELEY_STYLE_SOCKETS)
|
#if defined(HIGHRES_TIMER_AVAILABLE) && defined(CRYPTOPP_WIN32_AVAILABLE) && !defined(USE_BERKELEY_STYLE_SOCKETS)
|
||||||
# define WINDOWS_PIPES_AVAILABLE
|
# define WINDOWS_PIPES_AVAILABLE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -294,14 +301,6 @@ NAMESPACE_END
|
||||||
# define THREADS_AVAILABLE
|
# define THREADS_AVAILABLE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
|
|
||||||
# define CRYPTOPP_MALLOC_ALIGNMENT_IS_16
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__linux__) || defined(__sun__) || defined(__CYGWIN__)
|
|
||||||
# define CRYPTOPP_MEMALIGN_AVAILABLE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // NO_OS_DEPENDENCE
|
#endif // NO_OS_DEPENDENCE
|
||||||
|
|
||||||
// ***************** DLL related ********************
|
// ***************** DLL related ********************
|
||||||
|
|
@ -329,7 +328,7 @@ NAMESPACE_END
|
||||||
|
|
||||||
#if defined(__MWERKS__)
|
#if defined(__MWERKS__)
|
||||||
#define CRYPTOPP_EXTERN_DLL_TEMPLATE_CLASS extern class CRYPTOPP_DLL
|
#define CRYPTOPP_EXTERN_DLL_TEMPLATE_CLASS extern class CRYPTOPP_DLL
|
||||||
#elif defined(__BORLANDC__)
|
#elif defined(__BORLANDC__) || defined(__SUNPRO_CC)
|
||||||
#define CRYPTOPP_EXTERN_DLL_TEMPLATE_CLASS template class CRYPTOPP_DLL
|
#define CRYPTOPP_EXTERN_DLL_TEMPLATE_CLASS template class CRYPTOPP_DLL
|
||||||
#else
|
#else
|
||||||
#define CRYPTOPP_EXTERN_DLL_TEMPLATE_CLASS extern template class CRYPTOPP_DLL
|
#define CRYPTOPP_EXTERN_DLL_TEMPLATE_CLASS extern template class CRYPTOPP_DLL
|
||||||
|
|
@ -343,7 +342,7 @@ NAMESPACE_END
|
||||||
|
|
||||||
#if defined(__MWERKS__)
|
#if defined(__MWERKS__)
|
||||||
#define CRYPTOPP_EXTERN_STATIC_TEMPLATE_CLASS extern class
|
#define CRYPTOPP_EXTERN_STATIC_TEMPLATE_CLASS extern class
|
||||||
#elif defined(__BORLANDC__)
|
#elif defined(__BORLANDC__) || defined(__SUNPRO_CC)
|
||||||
#define CRYPTOPP_EXTERN_STATIC_TEMPLATE_CLASS template class
|
#define CRYPTOPP_EXTERN_STATIC_TEMPLATE_CLASS template class
|
||||||
#else
|
#else
|
||||||
#define CRYPTOPP_EXTERN_STATIC_TEMPLATE_CLASS extern template class
|
#define CRYPTOPP_EXTERN_STATIC_TEMPLATE_CLASS extern template class
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
classes that provide a uniform interface to this library.
|
classes that provide a uniform interface to this library.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*! \mainpage <a href="http://www.cryptopp.com">Crypto++</a><sup><small>®</small></sup> Library 5.3 Reference Manual
|
/*! \mainpage <a href="http://www.cryptopp.com">Crypto++</a><sup><small>®</small></sup> Library 5.4 Reference Manual
|
||||||
<dl>
|
<dl>
|
||||||
<dt>Abstract Base Classes<dd>
|
<dt>Abstract Base Classes<dd>
|
||||||
cryptlib.h
|
cryptlib.h
|
||||||
|
|
@ -1156,7 +1156,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
//! interface for public-key encryptors
|
//! interface for public-key encryptors
|
||||||
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE PK_Encryptor : virtual public PK_CryptoSystem, public PublicKeyAlgorithm
|
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE PK_Encryptor : public PK_CryptoSystem, public PublicKeyAlgorithm
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//! exception thrown when trying to encrypt plaintext of invalid length
|
//! exception thrown when trying to encrypt plaintext of invalid length
|
||||||
|
|
@ -1184,7 +1184,7 @@ public:
|
||||||
|
|
||||||
//! interface for public-key decryptors
|
//! interface for public-key decryptors
|
||||||
|
|
||||||
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE PK_Decryptor : virtual public PK_CryptoSystem, public PrivateKeyAlgorithm
|
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE PK_Decryptor : public PK_CryptoSystem, public PrivateKeyAlgorithm
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//! decrypt a byte string, and return the length of plaintext
|
//! decrypt a byte string, and return the length of plaintext
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 5,3,0,0
|
FILEVERSION 5,4,0,0
|
||||||
PRODUCTVERSION 5,3,0,0
|
PRODUCTVERSION 5,4,0,0
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
|
@ -46,13 +46,13 @@ BEGIN
|
||||||
VALUE "Comments", "free crypto library, more information available at www.cryptopp.com"
|
VALUE "Comments", "free crypto library, more information available at www.cryptopp.com"
|
||||||
VALUE "CompanyName", "Wei Dai"
|
VALUE "CompanyName", "Wei Dai"
|
||||||
VALUE "FileDescription", "Crypto++® Library DLL"
|
VALUE "FileDescription", "Crypto++® Library DLL"
|
||||||
VALUE "FileVersion", "5, 3, 0, 0"
|
VALUE "FileVersion", "5, 4, 0, 0"
|
||||||
VALUE "InternalName", "cryptopp"
|
VALUE "InternalName", "cryptopp"
|
||||||
VALUE "LegalCopyright", "Copyright © 1995-2006 by Wei Dai"
|
VALUE "LegalCopyright", "Copyright © 1995-2006 by Wei Dai"
|
||||||
VALUE "LegalTrademarks", "Crypto++®"
|
VALUE "LegalTrademarks", "Crypto++®"
|
||||||
VALUE "OriginalFilename", "cryptopp.dll"
|
VALUE "OriginalFilename", "cryptopp.dll"
|
||||||
VALUE "ProductName", "Crypto++® Library"
|
VALUE "ProductName", "Crypto++® Library"
|
||||||
VALUE "ProductVersion", "5, 3, 0, 0"
|
VALUE "ProductVersion", "5, 4, 0, 0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
|
|
||||||
|
// prevent Sun's CC compiler from including this file automatically
|
||||||
|
#if !defined(__SUNPRO_CC) || defined(CRYPTOPP_MANUALLY_INSTANTIATE_TEMPLATES)
|
||||||
|
|
||||||
#ifndef CRYPTOPP_IMPORTS
|
#ifndef CRYPTOPP_IMPORTS
|
||||||
|
|
||||||
#include "eccrypto.h"
|
#include "eccrypto.h"
|
||||||
|
|
@ -571,7 +574,7 @@ OID DL_GroupParameters_EC<EC>::GetAlgorithmID() const
|
||||||
// ******************************************************************
|
// ******************************************************************
|
||||||
|
|
||||||
template <class EC>
|
template <class EC>
|
||||||
void DL_PublicKey_EC<EC>::BERDecodeKey2(BufferedTransformation &bt, bool parametersPresent, size_t size)
|
void DL_PublicKey_EC<EC>::BERDecodePublicKey(BufferedTransformation &bt, bool parametersPresent, size_t size)
|
||||||
{
|
{
|
||||||
typename EC::Point P;
|
typename EC::Point P;
|
||||||
if (!this->GetGroupParameters().GetCurve().DecodePoint(P, bt, size))
|
if (!this->GetGroupParameters().GetCurve().DecodePoint(P, bt, size))
|
||||||
|
|
@ -580,7 +583,7 @@ void DL_PublicKey_EC<EC>::BERDecodeKey2(BufferedTransformation &bt, bool paramet
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class EC>
|
template <class EC>
|
||||||
void DL_PublicKey_EC<EC>::DEREncodeKey(BufferedTransformation &bt) const
|
void DL_PublicKey_EC<EC>::DEREncodePublicKey(BufferedTransformation &bt) const
|
||||||
{
|
{
|
||||||
this->GetGroupParameters().GetCurve().EncodePoint(bt, this->GetPublicElement(), this->GetGroupParameters().GetPointCompression());
|
this->GetGroupParameters().GetCurve().EncodePoint(bt, this->GetPublicElement(), this->GetGroupParameters().GetPointCompression());
|
||||||
}
|
}
|
||||||
|
|
@ -588,7 +591,7 @@ void DL_PublicKey_EC<EC>::DEREncodeKey(BufferedTransformation &bt) const
|
||||||
// ******************************************************************
|
// ******************************************************************
|
||||||
|
|
||||||
template <class EC>
|
template <class EC>
|
||||||
void DL_PrivateKey_EC<EC>::BERDecodeKey2(BufferedTransformation &bt, bool parametersPresent, size_t size)
|
void DL_PrivateKey_EC<EC>::BERDecodePrivateKey(BufferedTransformation &bt, bool parametersPresent, size_t size)
|
||||||
{
|
{
|
||||||
BERSequenceDecoder seq(bt);
|
BERSequenceDecoder seq(bt);
|
||||||
word32 version;
|
word32 version;
|
||||||
|
|
@ -626,7 +629,7 @@ void DL_PrivateKey_EC<EC>::BERDecodeKey2(BufferedTransformation &bt, bool parame
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class EC>
|
template <class EC>
|
||||||
void DL_PrivateKey_EC<EC>::DEREncodeKey(BufferedTransformation &bt) const
|
void DL_PrivateKey_EC<EC>::DEREncodePrivateKey(BufferedTransformation &bt) const
|
||||||
{
|
{
|
||||||
DERSequenceEncoder privateKey(bt);
|
DERSequenceEncoder privateKey(bt);
|
||||||
DEREncodeUnsigned<word32>(privateKey, 1); // version
|
DEREncodeUnsigned<word32>(privateKey, 1); // version
|
||||||
|
|
@ -639,3 +642,5 @@ void DL_PrivateKey_EC<EC>::DEREncodeKey(BufferedTransformation &bt) const
|
||||||
NAMESPACE_END
|
NAMESPACE_END
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -150,8 +150,8 @@ public:
|
||||||
{this->AccessGroupParameters().Initialize(ec, G, n); SetPublicElement(Q);}
|
{this->AccessGroupParameters().Initialize(ec, G, n); SetPublicElement(Q);}
|
||||||
|
|
||||||
// X509PublicKey
|
// X509PublicKey
|
||||||
void BERDecodeKey2(BufferedTransformation &bt, bool parametersPresent, size_t size);
|
void BERDecodePublicKey(BufferedTransformation &bt, bool parametersPresent, size_t size);
|
||||||
void DEREncodeKey(BufferedTransformation &bt) const;
|
void DEREncodePublicKey(BufferedTransformation &bt) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
//! EC private key
|
//! EC private key
|
||||||
|
|
@ -171,8 +171,8 @@ public:
|
||||||
{GenerateRandom(rng, DL_GroupParameters_EC<EC>(ec, G, n));}
|
{GenerateRandom(rng, DL_GroupParameters_EC<EC>(ec, G, n));}
|
||||||
|
|
||||||
// PKCS8PrivateKey
|
// PKCS8PrivateKey
|
||||||
void BERDecodeKey2(BufferedTransformation &bt, bool parametersPresent, size_t size);
|
void BERDecodePrivateKey(BufferedTransformation &bt, bool parametersPresent, size_t size);
|
||||||
void DEREncodeKey(BufferedTransformation &bt) const;
|
void DEREncodePrivateKey(BufferedTransformation &bt) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Elliptic Curve Diffie-Hellman, AKA <a href="http://www.weidai.com/scan-mirror/ka.html#ECDH">ECDH</a>
|
//! Elliptic Curve Diffie-Hellman, AKA <a href="http://www.weidai.com/scan-mirror/ka.html#ECDH">ECDH</a>
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
|
|
||||||
|
// prevent Sun's CC compiler from including this file automatically
|
||||||
|
#if !defined(__SUNPRO_CC) || defined(CRYPTOPP_MANUALLY_INSTANTIATE_TEMPLATES)
|
||||||
|
|
||||||
#ifndef CRYPTOPP_IMPORTS
|
#ifndef CRYPTOPP_IMPORTS
|
||||||
|
|
||||||
#include "eprecomp.h"
|
#include "eprecomp.h"
|
||||||
|
|
@ -110,3 +113,5 @@ template <class T> T
|
||||||
NAMESPACE_END
|
NAMESPACE_END
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,12 @@
|
||||||
|
|
||||||
#include "pubkey.h"
|
#include "pubkey.h"
|
||||||
#include "integer.h"
|
#include "integer.h"
|
||||||
|
#include "asn.h"
|
||||||
|
|
||||||
NAMESPACE_BEGIN(CryptoPP)
|
NAMESPACE_BEGIN(CryptoPP)
|
||||||
|
|
||||||
//! _
|
//! _
|
||||||
class ESIGNFunction : public TrapdoorFunction, public PublicKey, public ASN1CryptoMaterial
|
class ESIGNFunction : public TrapdoorFunction, public ASN1CryptoMaterial<PublicKey>
|
||||||
{
|
{
|
||||||
typedef ESIGNFunction ThisClass;
|
typedef ESIGNFunction ThisClass;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -497,6 +497,7 @@ void DoPowerUpSelfTest(const char *moduleFilename, const byte *expectedModuleMac
|
||||||
"abc",
|
"abc",
|
||||||
"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad");
|
"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad");
|
||||||
|
|
||||||
|
#ifdef WORD64_AVAILABLE
|
||||||
SecureHashKnownAnswerTest<SHA384>(
|
SecureHashKnownAnswerTest<SHA384>(
|
||||||
"abc",
|
"abc",
|
||||||
"cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7");
|
"cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7");
|
||||||
|
|
@ -504,6 +505,7 @@ void DoPowerUpSelfTest(const char *moduleFilename, const byte *expectedModuleMac
|
||||||
SecureHashKnownAnswerTest<SHA512>(
|
SecureHashKnownAnswerTest<SHA512>(
|
||||||
"abc",
|
"abc",
|
||||||
"ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f");
|
"ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f");
|
||||||
|
#endif
|
||||||
|
|
||||||
MAC_KnownAnswerTest<HMAC<SHA1> >(
|
MAC_KnownAnswerTest<HMAC<SHA1> >(
|
||||||
"303132333435363738393a3b3c3d3e3f40414243",
|
"303132333435363738393a3b3c3d3e3f40414243",
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ NAMESPACE_BEGIN(CryptoPP)
|
||||||
CRYPTOPP_DLL_TEMPLATE_CLASS DL_GroupParameters<Integer>;
|
CRYPTOPP_DLL_TEMPLATE_CLASS DL_GroupParameters<Integer>;
|
||||||
|
|
||||||
//! _
|
//! _
|
||||||
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE DL_GroupParameters_IntegerBased : public DL_GroupParameters<Integer>, public ASN1CryptoMaterial
|
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE DL_GroupParameters_IntegerBased : public ASN1CryptoMaterial<DL_GroupParameters<Integer> >
|
||||||
{
|
{
|
||||||
typedef DL_GroupParameters_IntegerBased ThisClass;
|
typedef DL_GroupParameters_IntegerBased ThisClass;
|
||||||
|
|
||||||
|
|
@ -219,9 +219,9 @@ public:
|
||||||
{this->AccessGroupParameters().Initialize(p, q, g); this->SetPublicElement(y);}
|
{this->AccessGroupParameters().Initialize(p, q, g); this->SetPublicElement(y);}
|
||||||
|
|
||||||
// X509PublicKey
|
// X509PublicKey
|
||||||
void BERDecodeKey(BufferedTransformation &bt)
|
void BERDecodePublicKey(BufferedTransformation &bt, bool, size_t)
|
||||||
{this->SetPublicElement(Integer(bt));}
|
{this->SetPublicElement(Integer(bt));}
|
||||||
void DEREncodeKey(BufferedTransformation &bt) const
|
void DEREncodePublicKey(BufferedTransformation &bt) const
|
||||||
{this->GetPublicElement().DEREncode(bt);}
|
{this->GetPublicElement().DEREncode(bt);}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
NAMESPACE_BEGIN(CryptoPP)
|
NAMESPACE_BEGIN(CryptoPP)
|
||||||
|
|
||||||
double TimerBase::ConvertTo(word64 t, Unit unit)
|
double TimerBase::ConvertTo(TimerWord t, Unit unit)
|
||||||
{
|
{
|
||||||
static unsigned long unitsPerSecondTable[] = {1, 1000, 1000*1000, 1000*1000*1000};
|
static unsigned long unitsPerSecondTable[] = {1, 1000, 1000*1000, 1000*1000*1000};
|
||||||
|
|
||||||
|
|
@ -45,7 +45,7 @@ double TimerBase::ElapsedTimeAsDouble()
|
||||||
|
|
||||||
if (m_started)
|
if (m_started)
|
||||||
{
|
{
|
||||||
word64 now = GetCurrentTimerValue();
|
TimerWord now = GetCurrentTimerValue();
|
||||||
if (m_last < now) // protect against OS bugs where time goes backwards
|
if (m_last < now) // protect against OS bugs where time goes backwards
|
||||||
m_last = now;
|
m_last = now;
|
||||||
return ConvertTo(m_last - m_start, m_timerUnit);
|
return ConvertTo(m_last - m_start, m_timerUnit);
|
||||||
|
|
@ -62,7 +62,7 @@ unsigned long TimerBase::ElapsedTime()
|
||||||
return (unsigned long)elapsed;
|
return (unsigned long)elapsed;
|
||||||
}
|
}
|
||||||
|
|
||||||
word64 ThreadUserTimer::GetCurrentTimerValue()
|
TimerWord ThreadUserTimer::GetCurrentTimerValue()
|
||||||
{
|
{
|
||||||
#if defined(CRYPTOPP_WIN32_AVAILABLE)
|
#if defined(CRYPTOPP_WIN32_AVAILABLE)
|
||||||
static bool getCurrentThreadImplemented = true;
|
static bool getCurrentThreadImplemented = true;
|
||||||
|
|
@ -79,10 +79,10 @@ word64 ThreadUserTimer::GetCurrentTimerValue()
|
||||||
}
|
}
|
||||||
throw Exception(Exception::OTHER_ERROR, "ThreadUserTimer: GetThreadTimes failed with error " + IntToString(lastError));
|
throw Exception(Exception::OTHER_ERROR, "ThreadUserTimer: GetThreadTimes failed with error " + IntToString(lastError));
|
||||||
}
|
}
|
||||||
return now.dwLowDateTime + ((word64)now.dwHighDateTime << 32);
|
return now.dwLowDateTime + ((TimerWord)now.dwHighDateTime << 32);
|
||||||
}
|
}
|
||||||
GetCurrentThreadNotImplemented:
|
GetCurrentThreadNotImplemented:
|
||||||
return (word64)clock() * (10*1000*1000 / CLOCKS_PER_SEC);
|
return (TimerWord)clock() * (10*1000*1000 / CLOCKS_PER_SEC);
|
||||||
#elif defined(CRYPTOPP_UNIX_AVAILABLE)
|
#elif defined(CRYPTOPP_UNIX_AVAILABLE)
|
||||||
tms now;
|
tms now;
|
||||||
times(&now);
|
times(&now);
|
||||||
|
|
@ -92,7 +92,7 @@ GetCurrentThreadNotImplemented:
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
word64 ThreadUserTimer::TicksPerSecond()
|
TimerWord ThreadUserTimer::TicksPerSecond()
|
||||||
{
|
{
|
||||||
#if defined(CRYPTOPP_WIN32_AVAILABLE)
|
#if defined(CRYPTOPP_WIN32_AVAILABLE)
|
||||||
return 10*1000*1000;
|
return 10*1000*1000;
|
||||||
|
|
@ -106,7 +106,7 @@ word64 ThreadUserTimer::TicksPerSecond()
|
||||||
|
|
||||||
#ifdef HIGHRES_TIMER_AVAILABLE
|
#ifdef HIGHRES_TIMER_AVAILABLE
|
||||||
|
|
||||||
word64 Timer::GetCurrentTimerValue()
|
TimerWord Timer::GetCurrentTimerValue()
|
||||||
{
|
{
|
||||||
#if defined(CRYPTOPP_WIN32_AVAILABLE)
|
#if defined(CRYPTOPP_WIN32_AVAILABLE)
|
||||||
LARGE_INTEGER now;
|
LARGE_INTEGER now;
|
||||||
|
|
@ -116,11 +116,11 @@ word64 Timer::GetCurrentTimerValue()
|
||||||
#elif defined(CRYPTOPP_UNIX_AVAILABLE)
|
#elif defined(CRYPTOPP_UNIX_AVAILABLE)
|
||||||
timeval now;
|
timeval now;
|
||||||
gettimeofday(&now, NULL);
|
gettimeofday(&now, NULL);
|
||||||
return (word64)now.tv_sec * 1000000 + now.tv_usec;
|
return (TimerWord)now.tv_sec * 1000000 + now.tv_usec;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
word64 Timer::TicksPerSecond()
|
TimerWord Timer::TicksPerSecond()
|
||||||
{
|
{
|
||||||
#if defined(CRYPTOPP_WIN32_AVAILABLE)
|
#if defined(CRYPTOPP_WIN32_AVAILABLE)
|
||||||
static LARGE_INTEGER freq = {0};
|
static LARGE_INTEGER freq = {0};
|
||||||
|
|
@ -135,6 +135,6 @@ word64 Timer::TicksPerSecond()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif // HIGHRES_TIMER_AVAILABLE
|
||||||
|
|
||||||
NAMESPACE_END
|
NAMESPACE_END
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,12 @@
|
||||||
|
|
||||||
NAMESPACE_BEGIN(CryptoPP)
|
NAMESPACE_BEGIN(CryptoPP)
|
||||||
|
|
||||||
|
#ifdef WORD64_AVAILABLE
|
||||||
|
typedef word64 TimerWord;
|
||||||
|
#else
|
||||||
|
typedef word32 TimerWord;
|
||||||
|
#endif
|
||||||
|
|
||||||
//! _
|
//! _
|
||||||
class TimerBase
|
class TimerBase
|
||||||
{
|
{
|
||||||
|
|
@ -12,19 +18,19 @@ public:
|
||||||
enum Unit {SECONDS = 0, MILLISECONDS, MICROSECONDS, NANOSECONDS};
|
enum Unit {SECONDS = 0, MILLISECONDS, MICROSECONDS, NANOSECONDS};
|
||||||
TimerBase(Unit unit, bool stuckAtZero) : m_timerUnit(unit), m_stuckAtZero(stuckAtZero), m_started(false) {}
|
TimerBase(Unit unit, bool stuckAtZero) : m_timerUnit(unit), m_stuckAtZero(stuckAtZero), m_started(false) {}
|
||||||
|
|
||||||
virtual word64 GetCurrentTimerValue() =0; // GetCurrentTime is a macro in MSVC 6.0
|
virtual TimerWord GetCurrentTimerValue() =0; // GetCurrentTime is a macro in MSVC 6.0
|
||||||
virtual word64 TicksPerSecond() =0; // this is not the resolution, just a conversion factor into seconds
|
virtual TimerWord TicksPerSecond() =0; // this is not the resolution, just a conversion factor into seconds
|
||||||
|
|
||||||
void StartTimer();
|
void StartTimer();
|
||||||
double ElapsedTimeAsDouble();
|
double ElapsedTimeAsDouble();
|
||||||
unsigned long ElapsedTime();
|
unsigned long ElapsedTime();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
double ConvertTo(word64 t, Unit unit);
|
double ConvertTo(TimerWord t, Unit unit);
|
||||||
|
|
||||||
Unit m_timerUnit; // HPUX workaround: m_unit is a system macro on HPUX
|
Unit m_timerUnit; // HPUX workaround: m_unit is a system macro on HPUX
|
||||||
bool m_stuckAtZero, m_started;
|
bool m_stuckAtZero, m_started;
|
||||||
word64 m_start, m_last;
|
TimerWord m_start, m_last;
|
||||||
};
|
};
|
||||||
|
|
||||||
//! measure CPU time spent executing instructions of this thread (if supported by OS)
|
//! measure CPU time spent executing instructions of this thread (if supported by OS)
|
||||||
|
|
@ -34,8 +40,8 @@ class ThreadUserTimer : public TimerBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThreadUserTimer(Unit unit = TimerBase::SECONDS, bool stuckAtZero = false) : TimerBase(unit, stuckAtZero) {}
|
ThreadUserTimer(Unit unit = TimerBase::SECONDS, bool stuckAtZero = false) : TimerBase(unit, stuckAtZero) {}
|
||||||
word64 GetCurrentTimerValue();
|
TimerWord GetCurrentTimerValue();
|
||||||
word64 TicksPerSecond();
|
TimerWord TicksPerSecond();
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef HIGHRES_TIMER_AVAILABLE
|
#ifdef HIGHRES_TIMER_AVAILABLE
|
||||||
|
|
@ -45,11 +51,11 @@ class Timer : public TimerBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Timer(Unit unit = TimerBase::SECONDS, bool stuckAtZero = false) : TimerBase(unit, stuckAtZero) {}
|
Timer(Unit unit = TimerBase::SECONDS, bool stuckAtZero = false) : TimerBase(unit, stuckAtZero) {}
|
||||||
word64 GetCurrentTimerValue();
|
TimerWord GetCurrentTimerValue();
|
||||||
word64 TicksPerSecond();
|
TimerWord TicksPerSecond();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif // HIGHRES_TIMER_AVAILABLE
|
||||||
|
|
||||||
NAMESPACE_END
|
NAMESPACE_END
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -395,6 +395,8 @@ size_t PaddingRemover::Put2(const byte *begin, size_t length, int messageEnd, bo
|
||||||
#if defined(_MSC_VER) && !defined(__MWERKS__) && (_MSC_VER < 1300)
|
#if defined(_MSC_VER) && !defined(__MWERKS__) && (_MSC_VER < 1300)
|
||||||
// VC60 workaround: built-in reverse_iterator has two template parameters, Dinkumware only has one
|
// VC60 workaround: built-in reverse_iterator has two template parameters, Dinkumware only has one
|
||||||
typedef reverse_bidirectional_iterator<const byte *, const byte> RevIt;
|
typedef reverse_bidirectional_iterator<const byte *, const byte> RevIt;
|
||||||
|
#elif defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
|
||||||
|
typedef reverse_iterator<const byte *, random_access_iterator_tag, const byte> RevIt;
|
||||||
#else
|
#else
|
||||||
typedef reverse_iterator<const byte *> RevIt;
|
typedef reverse_iterator<const byte *> RevIt;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -3976,7 +3976,7 @@ Integer Integer::InverseMod(const Integer &m) const
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
word Integer::InverseMod(const word mod) const
|
word Integer::InverseMod(word mod) const
|
||||||
{
|
{
|
||||||
word g0 = mod, g1 = *this % mod;
|
word g0 = mod, g1 = *this % mod;
|
||||||
word v0 = 0, v1 = 1;
|
word v0 = 0, v1 = 1;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
// iterhash.cpp - written and placed in the public domain by Wei Dai
|
// iterhash.cpp - written and placed in the public domain by Wei Dai
|
||||||
|
|
||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
|
|
||||||
|
// prevent Sun's CC compiler from including this file automatically
|
||||||
|
#if !defined(__SUNPRO_CC) || defined(CRYPTOPP_MANUALLY_INSTANTIATE_TEMPLATES)
|
||||||
|
|
||||||
#include "iterhash.h"
|
#include "iterhash.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
|
|
||||||
|
|
@ -133,3 +137,5 @@ template <class T, class BASE> void IteratedHashBase<T, BASE>::TruncatedFinal(by
|
||||||
}
|
}
|
||||||
|
|
||||||
NAMESPACE_END
|
NAMESPACE_END
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,8 @@
|
||||||
|
|
||||||
NAMESPACE_BEGIN(CryptoPP)
|
NAMESPACE_BEGIN(CryptoPP)
|
||||||
|
|
||||||
|
#ifdef HIGHRES_TIMER_AVAILABLE
|
||||||
|
|
||||||
lword LimitedBandwidth::ComputeCurrentTransceiveLimit()
|
lword LimitedBandwidth::ComputeCurrentTransceiveLimit()
|
||||||
{
|
{
|
||||||
if (!m_maxBytesPerSecond)
|
if (!m_maxBytesPerSecond)
|
||||||
|
|
@ -223,8 +225,6 @@ bool NonblockingSink::IsolatedFlush(bool hardFlush, bool blocking)
|
||||||
|
|
||||||
// *************************************************************
|
// *************************************************************
|
||||||
|
|
||||||
#ifdef HIGHRES_TIMER_AVAILABLE
|
|
||||||
|
|
||||||
NetworkSource::NetworkSource(BufferedTransformation *attachment)
|
NetworkSource::NetworkSource(BufferedTransformation *attachment)
|
||||||
: NonblockingSource(attachment), m_buf(1024*16)
|
: NonblockingSource(attachment), m_buf(1024*16)
|
||||||
, m_waitingForResult(false), m_outputBlocked(false)
|
, m_waitingForResult(false), m_outputBlocked(false)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
#ifndef CRYPTOPP_NETWORK_H
|
#ifndef CRYPTOPP_NETWORK_H
|
||||||
#define CRYPTOPP_NETWORK_H
|
#define CRYPTOPP_NETWORK_H
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#ifdef HIGHRES_TIMER_AVAILABLE
|
||||||
|
|
||||||
#include "filters.h"
|
#include "filters.h"
|
||||||
#include "hrtimer.h"
|
#include "hrtimer.h"
|
||||||
|
|
||||||
|
|
@ -157,8 +161,6 @@ public:
|
||||||
virtual bool EofSent() {return false;} // implement if MustWaitForEof() == true
|
virtual bool EofSent() {return false;} // implement if MustWaitForEof() == true
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef HIGHRES_TIMER_AVAILABLE
|
|
||||||
|
|
||||||
//! Network Source
|
//! Network Source
|
||||||
class CRYPTOPP_NO_VTABLE NetworkSource : public NonblockingSource
|
class CRYPTOPP_NO_VTABLE NetworkSource : public NonblockingSource
|
||||||
{
|
{
|
||||||
|
|
@ -226,8 +228,8 @@ private:
|
||||||
float m_byteCountSinceLastTimerReset, m_currentSpeed, m_maxObservedSpeed;
|
float m_byteCountSinceLastTimerReset, m_currentSpeed, m_maxObservedSpeed;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // #ifdef HIGHRES_TIMER_AVAILABLE
|
|
||||||
|
|
||||||
NAMESPACE_END
|
NAMESPACE_END
|
||||||
|
|
||||||
|
#endif // #ifdef HIGHRES_TIMER_AVAILABLE
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
|
|
||||||
#include "seckey.h"
|
#include "seckey.h"
|
||||||
#include "secblock.h"
|
#include "secblock.h"
|
||||||
#include "iterhash.h"
|
|
||||||
#include "strciphr.h"
|
#include "strciphr.h"
|
||||||
|
#include "iterhash.h"
|
||||||
|
|
||||||
NAMESPACE_BEGIN(CryptoPP)
|
NAMESPACE_BEGIN(CryptoPP)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
|
|
||||||
|
// prevent Sun's CC compiler from including this file automatically
|
||||||
|
#if !defined(__SUNPRO_CC) || defined(CRYPTOPP_MANUALLY_INSTANTIATE_TEMPLATES)
|
||||||
|
|
||||||
#include "pkcspad.h"
|
#include "pkcspad.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
|
|
@ -117,3 +120,5 @@ void PKCS1v15_SignatureMessageEncodingMethod::ComputeMessageRepresentative(Rando
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
NAMESPACE_END
|
NAMESPACE_END
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -807,9 +807,9 @@ public:
|
||||||
void SetPrivateExponent(const Integer &x) {m_x = x;}
|
void SetPrivateExponent(const Integer &x) {m_x = x;}
|
||||||
|
|
||||||
// PKCS8PrivateKey
|
// PKCS8PrivateKey
|
||||||
void BERDecodeKey(BufferedTransformation &bt)
|
void BERDecodePrivateKey(BufferedTransformation &bt, bool, size_t)
|
||||||
{m_x.BERDecode(bt);}
|
{m_x.BERDecode(bt);}
|
||||||
void DEREncodeKey(BufferedTransformation &bt) const
|
void DEREncodePrivateKey(BufferedTransformation &bt) const
|
||||||
{m_x.DEREncode(bt);}
|
{m_x.DEREncode(bt);}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ OID RSAFunction::GetAlgorithmID() const
|
||||||
return ASN1::rsaEncryption();
|
return ASN1::rsaEncryption();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RSAFunction::BERDecodeKey(BufferedTransformation &bt)
|
void RSAFunction::BERDecodePublicKey(BufferedTransformation &bt, bool, size_t)
|
||||||
{
|
{
|
||||||
BERSequenceDecoder seq(bt);
|
BERSequenceDecoder seq(bt);
|
||||||
m_n.BERDecode(seq);
|
m_n.BERDecode(seq);
|
||||||
|
|
@ -53,7 +53,7 @@ void RSAFunction::BERDecodeKey(BufferedTransformation &bt)
|
||||||
seq.MessageEnd();
|
seq.MessageEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RSAFunction::DEREncodeKey(BufferedTransformation &bt) const
|
void RSAFunction::DEREncodePublicKey(BufferedTransformation &bt) const
|
||||||
{
|
{
|
||||||
DERSequenceEncoder seq(bt);
|
DERSequenceEncoder seq(bt);
|
||||||
m_n.DEREncode(seq);
|
m_n.DEREncode(seq);
|
||||||
|
|
@ -189,7 +189,7 @@ void InvertibleRSAFunction::Initialize(const Integer &n, const Integer &e, const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void InvertibleRSAFunction::BERDecodeKey(BufferedTransformation &bt)
|
void InvertibleRSAFunction::BERDecodePrivateKey(BufferedTransformation &bt, bool, size_t)
|
||||||
{
|
{
|
||||||
BERSequenceDecoder privateKey(bt);
|
BERSequenceDecoder privateKey(bt);
|
||||||
word32 version;
|
word32 version;
|
||||||
|
|
@ -205,7 +205,7 @@ void InvertibleRSAFunction::BERDecodeKey(BufferedTransformation &bt)
|
||||||
privateKey.MessageEnd();
|
privateKey.MessageEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
void InvertibleRSAFunction::DEREncodeKey(BufferedTransformation &bt) const
|
void InvertibleRSAFunction::DEREncodePrivateKey(BufferedTransformation &bt) const
|
||||||
{
|
{
|
||||||
DERSequenceEncoder privateKey(bt);
|
DERSequenceEncoder privateKey(bt);
|
||||||
DEREncodeUnsigned<word32>(privateKey, 0); // version
|
DEREncodeUnsigned<word32>(privateKey, 0); // version
|
||||||
|
|
|
||||||
|
|
@ -25,8 +25,8 @@ public:
|
||||||
|
|
||||||
// X509PublicKey
|
// X509PublicKey
|
||||||
OID GetAlgorithmID() const;
|
OID GetAlgorithmID() const;
|
||||||
void BERDecodeKey(BufferedTransformation &bt);
|
void BERDecodePublicKey(BufferedTransformation &bt, bool parametersPresent, size_t size);
|
||||||
void DEREncodeKey(BufferedTransformation &bt) const;
|
void DEREncodePublicKey(BufferedTransformation &bt) const;
|
||||||
|
|
||||||
// CryptoMaterial
|
// CryptoMaterial
|
||||||
bool Validate(RandomNumberGenerator &rng, unsigned int level) const;
|
bool Validate(RandomNumberGenerator &rng, unsigned int level) const;
|
||||||
|
|
@ -66,8 +66,13 @@ public:
|
||||||
{PKCS8PrivateKey::BERDecode(bt);}
|
{PKCS8PrivateKey::BERDecode(bt);}
|
||||||
void DEREncode(BufferedTransformation &bt) const
|
void DEREncode(BufferedTransformation &bt) const
|
||||||
{PKCS8PrivateKey::DEREncode(bt);}
|
{PKCS8PrivateKey::DEREncode(bt);}
|
||||||
void BERDecodeKey(BufferedTransformation &bt);
|
void Load(BufferedTransformation &bt)
|
||||||
void DEREncodeKey(BufferedTransformation &bt) const;
|
{PKCS8PrivateKey::BERDecode(bt);}
|
||||||
|
void Save(BufferedTransformation &bt) const
|
||||||
|
{PKCS8PrivateKey::DEREncode(bt);}
|
||||||
|
OID GetAlgorithmID() const {return RSAFunction::GetAlgorithmID();}
|
||||||
|
void BERDecodePrivateKey(BufferedTransformation &bt, bool parametersPresent, size_t size);
|
||||||
|
void DEREncodePrivateKey(BufferedTransformation &bt) const;
|
||||||
|
|
||||||
// TrapdoorFunctionInverse
|
// TrapdoorFunctionInverse
|
||||||
Integer CalculateInverse(RandomNumberGenerator &rng, const Integer &x) const;
|
Integer CalculateInverse(RandomNumberGenerator &rng, const Integer &x) const;
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
NAMESPACE_BEGIN(CryptoPP)
|
NAMESPACE_BEGIN(CryptoPP)
|
||||||
|
|
||||||
//! _
|
//! _
|
||||||
class CRYPTOPP_DLL RWFunction : virtual public TrapdoorFunction, public PublicKey
|
class CRYPTOPP_DLL RWFunction : public TrapdoorFunction, public PublicKey
|
||||||
{
|
{
|
||||||
typedef RWFunction ThisClass;
|
typedef RWFunction ThisClass;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,14 @@
|
||||||
// updated to SEAL 3.0 by Leonard Janke
|
// updated to SEAL 3.0 by Leonard Janke
|
||||||
|
|
||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
|
|
||||||
|
// prevent Sun's CC compiler from including this file automatically
|
||||||
|
#if !(defined(__SUNPRO_CC) && defined(CRYPTOPP_ITERHASH_H))
|
||||||
|
|
||||||
#include "seal.h"
|
#include "seal.h"
|
||||||
#include "sha.h"
|
#include "sha.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
|
|
||||||
#include "strciphr.cpp"
|
|
||||||
|
|
||||||
NAMESPACE_BEGIN(CryptoPP)
|
NAMESPACE_BEGIN(CryptoPP)
|
||||||
|
|
||||||
void SEAL_TestInstantiations()
|
void SEAL_TestInstantiations()
|
||||||
|
|
@ -209,3 +211,5 @@ template class SEAL_Policy<BigEndian>;
|
||||||
template class SEAL_Policy<LittleEndian>;
|
template class SEAL_Policy<LittleEndian>;
|
||||||
|
|
||||||
NAMESPACE_END
|
NAMESPACE_END
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -42,17 +42,6 @@ public:
|
||||||
explicit InvalidRounds(const std::string &algorithm, unsigned int rounds) : InvalidArgument(algorithm + ": " + IntToString(rounds) + " is not a valid number of rounds") {}
|
explicit InvalidRounds(const std::string &algorithm, unsigned int rounds) : InvalidArgument(algorithm + ": " + IntToString(rounds) + " is not a valid number of rounds") {}
|
||||||
};
|
};
|
||||||
|
|
||||||
//! _
|
|
||||||
// TODO: look into this virtual inheritance
|
|
||||||
class CRYPTOPP_DLL ASN1CryptoMaterial : virtual public ASN1Object, virtual public CryptoMaterial
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
void Save(BufferedTransformation &bt) const
|
|
||||||
{BEREncode(bt);}
|
|
||||||
void Load(BufferedTransformation &bt)
|
|
||||||
{BERDecode(bt);}
|
|
||||||
};
|
|
||||||
|
|
||||||
// *****************************
|
// *****************************
|
||||||
|
|
||||||
//! _
|
//! _
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,27 @@
|
||||||
|
|
||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
|
|
||||||
|
// prevent Sun's CC compiler from including this file automatically
|
||||||
|
#if !defined(__SUNPRO_CC) || defined(CRYPTOPP_MANUALLY_INSTANTIATE_TEMPLATES)
|
||||||
|
|
||||||
#ifndef CRYPTOPP_IMPORTS
|
#ifndef CRYPTOPP_IMPORTS
|
||||||
|
|
||||||
#include "strciphr.h"
|
#include "strciphr.h"
|
||||||
|
|
||||||
NAMESPACE_BEGIN(CryptoPP)
|
NAMESPACE_BEGIN(CryptoPP)
|
||||||
|
|
||||||
|
template <class S>
|
||||||
|
void AdditiveCipherTemplate<S>::UncheckedSetKey(const byte *key, unsigned int length, const NameValuePairs ¶ms)
|
||||||
|
{
|
||||||
|
PolicyInterface &policy = this->AccessPolicy();
|
||||||
|
policy.CipherSetKey(params, key, length);
|
||||||
|
m_leftOver = 0;
|
||||||
|
m_buffer.New(GetBufferByteSize(policy));
|
||||||
|
|
||||||
|
if (this->IsResynchronizable())
|
||||||
|
policy.CipherResynchronize(m_buffer, this->GetIVAndThrowIfInvalid(params));
|
||||||
|
}
|
||||||
|
|
||||||
template <class S>
|
template <class S>
|
||||||
byte AdditiveCipherTemplate<S>::GenerateByte()
|
byte AdditiveCipherTemplate<S>::GenerateByte()
|
||||||
{
|
{
|
||||||
|
|
@ -108,6 +123,18 @@ void AdditiveCipherTemplate<BASE>::Seek(lword position)
|
||||||
m_leftOver = 0;
|
m_leftOver = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <class BASE>
|
||||||
|
void CFB_CipherTemplate<BASE>::UncheckedSetKey(const byte *key, unsigned int length, const NameValuePairs ¶ms)
|
||||||
|
{
|
||||||
|
PolicyInterface &policy = this->AccessPolicy();
|
||||||
|
policy.CipherSetKey(params, key, length);
|
||||||
|
|
||||||
|
if (this->IsResynchronizable())
|
||||||
|
policy.CipherResynchronize(this->GetIVAndThrowIfInvalid(params));
|
||||||
|
|
||||||
|
m_leftOver = policy.GetBytesPerIteration();
|
||||||
|
}
|
||||||
|
|
||||||
template <class BASE>
|
template <class BASE>
|
||||||
void CFB_CipherTemplate<BASE>::Resynchronize(const byte *iv)
|
void CFB_CipherTemplate<BASE>::Resynchronize(const byte *iv)
|
||||||
{
|
{
|
||||||
|
|
@ -193,3 +220,5 @@ void CFB_DecryptionTemplate<BASE>::CombineMessageAndShiftRegister(byte *output,
|
||||||
NAMESPACE_END
|
NAMESPACE_END
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -279,30 +279,6 @@ public:
|
||||||
Clonable * Clone() const {return static_cast<SymmetricCipher *>(new SymmetricCipherFinal<BASE, INFO>(*this));}
|
Clonable * Clone() const {return static_cast<SymmetricCipher *>(new SymmetricCipherFinal<BASE, INFO>(*this));}
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class S>
|
|
||||||
void AdditiveCipherTemplate<S>::UncheckedSetKey(const byte *key, unsigned int length, const NameValuePairs ¶ms)
|
|
||||||
{
|
|
||||||
PolicyInterface &policy = this->AccessPolicy();
|
|
||||||
policy.CipherSetKey(params, key, length);
|
|
||||||
m_leftOver = 0;
|
|
||||||
m_buffer.New(GetBufferByteSize(policy));
|
|
||||||
|
|
||||||
if (this->IsResynchronizable())
|
|
||||||
policy.CipherResynchronize(m_buffer, this->GetIVAndThrowIfInvalid(params));
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class BASE>
|
|
||||||
void CFB_CipherTemplate<BASE>::UncheckedSetKey(const byte *key, unsigned int length, const NameValuePairs ¶ms)
|
|
||||||
{
|
|
||||||
PolicyInterface &policy = this->AccessPolicy();
|
|
||||||
policy.CipherSetKey(params, key, length);
|
|
||||||
|
|
||||||
if (this->IsResynchronizable())
|
|
||||||
policy.CipherResynchronize(this->GetIVAndThrowIfInvalid(params));
|
|
||||||
|
|
||||||
m_leftOver = policy.GetBytesPerIteration();
|
|
||||||
}
|
|
||||||
|
|
||||||
NAMESPACE_END
|
NAMESPACE_END
|
||||||
|
|
||||||
#ifdef CRYPTOPP_MANUALLY_INSTANTIATE_TEMPLATES
|
#ifdef CRYPTOPP_MANUALLY_INSTANTIATE_TEMPLATES
|
||||||
|
|
@ -312,10 +288,10 @@ NAMESPACE_END
|
||||||
NAMESPACE_BEGIN(CryptoPP)
|
NAMESPACE_BEGIN(CryptoPP)
|
||||||
CRYPTOPP_DLL_TEMPLATE_CLASS TwoBases<SymmetricCipher, RandomNumberGenerator>;
|
CRYPTOPP_DLL_TEMPLATE_CLASS TwoBases<SymmetricCipher, RandomNumberGenerator>;
|
||||||
CRYPTOPP_DLL_TEMPLATE_CLASS AbstractPolicyHolder<AdditiveCipherAbstractPolicy, TwoBases<SymmetricCipher, RandomNumberGenerator> >;
|
CRYPTOPP_DLL_TEMPLATE_CLASS AbstractPolicyHolder<AdditiveCipherAbstractPolicy, TwoBases<SymmetricCipher, RandomNumberGenerator> >;
|
||||||
CRYPTOPP_DLL_TEMPLATE_CLASS AdditiveCipherTemplate<>;
|
CRYPTOPP_DLL_TEMPLATE_CLASS AdditiveCipherTemplate<AbstractPolicyHolder<AdditiveCipherAbstractPolicy, TwoBases<SymmetricCipher, RandomNumberGenerator> > >;
|
||||||
CRYPTOPP_DLL_TEMPLATE_CLASS CFB_CipherTemplate<AbstractPolicyHolder<CFB_CipherAbstractPolicy, SymmetricCipher> >;
|
CRYPTOPP_DLL_TEMPLATE_CLASS CFB_CipherTemplate<AbstractPolicyHolder<CFB_CipherAbstractPolicy, SymmetricCipher> >;
|
||||||
CRYPTOPP_DLL_TEMPLATE_CLASS CFB_EncryptionTemplate<>;
|
CRYPTOPP_DLL_TEMPLATE_CLASS CFB_EncryptionTemplate<AbstractPolicyHolder<CFB_CipherAbstractPolicy, SymmetricCipher> >;
|
||||||
CRYPTOPP_DLL_TEMPLATE_CLASS CFB_DecryptionTemplate<>;
|
CRYPTOPP_DLL_TEMPLATE_CLASS CFB_DecryptionTemplate<AbstractPolicyHolder<CFB_CipherAbstractPolicy, SymmetricCipher> >;
|
||||||
NAMESPACE_END
|
NAMESPACE_END
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -189,7 +189,7 @@ bool TestSettings()
|
||||||
pass = false;
|
pass = false;
|
||||||
}
|
}
|
||||||
cout << "sizeof(word64) == " << sizeof(word64) << endl;
|
cout << "sizeof(word64) == " << sizeof(word64) << endl;
|
||||||
#elif CRYPTOPP_NATIVE_DWORD_AVAILABLE
|
#elif defined(CRYPTOPP_NATIVE_DWORD_AVAILABLE)
|
||||||
if (sizeof(dword) >= 8)
|
if (sizeof(dword) >= 8)
|
||||||
{
|
{
|
||||||
cout << "FAILED: sizeof(dword) >= 8, but WORD64_AVAILABLE not defined" << endl;
|
cout << "FAILED: sizeof(dword) >= 8, but WORD64_AVAILABLE not defined" << endl;
|
||||||
|
|
|
||||||
|
|
@ -318,7 +318,7 @@ bool ValidateRSA()
|
||||||
FileSource privFile("rsa400pv.dat", true, new HexDecoder);
|
FileSource privFile("rsa400pv.dat", true, new HexDecoder);
|
||||||
FileSource pubFile("rsa400pb.dat", true, new HexDecoder);
|
FileSource pubFile("rsa400pb.dat", true, new HexDecoder);
|
||||||
RSAES_OAEP_SHA_Decryptor rsaPriv;
|
RSAES_OAEP_SHA_Decryptor rsaPriv;
|
||||||
rsaPriv.AccessKey().BERDecodeKey(privFile);
|
rsaPriv.AccessKey().BERDecodePrivateKey(privFile, false, 0);
|
||||||
RSAES_OAEP_SHA_Encryptor rsaPub(pubFile);
|
RSAES_OAEP_SHA_Encryptor rsaPub(pubFile);
|
||||||
|
|
||||||
memset(out, 0, 50);
|
memset(out, 0, 50);
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,6 @@
|
||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "wake.h"
|
#include "wake.h"
|
||||||
|
|
||||||
#include "strciphr.cpp"
|
|
||||||
|
|
||||||
NAMESPACE_BEGIN(CryptoPP)
|
NAMESPACE_BEGIN(CryptoPP)
|
||||||
|
|
||||||
void WAKE_TestInstantiations()
|
void WAKE_TestInstantiations()
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ NAMESPACE_BEGIN(CryptoPP)
|
||||||
|
|
||||||
template <class T> struct DigestSizeSubtract4Workaround // VC60 workaround
|
template <class T> struct DigestSizeSubtract4Workaround // VC60 workaround
|
||||||
{
|
{
|
||||||
CRYPTOPP_CONSTANT(RESULT = T::DIGESTSIZE-4);
|
CRYPTOPP_CONSTANT(RESULT = T::DIGESTSIZE-4)
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
|
|
@ -54,7 +54,7 @@ private:
|
||||||
void HashEndianCorrectedBlock(const HashWordType *data);
|
void HashEndianCorrectedBlock(const HashWordType *data);
|
||||||
|
|
||||||
FixedSizeSecBlock<byte, DigestSizeSubtract4Workaround<T>::RESULT> m_key;
|
FixedSizeSecBlock<byte, DigestSizeSubtract4Workaround<T>::RESULT> m_key;
|
||||||
CRYPTOPP_CONSTANT(BUFFER_SIZE = (T::DIGESTSIZE / sizeof(HashWordType))); // VC60 workaround
|
CRYPTOPP_CONSTANT(BUFFER_SIZE = (T::DIGESTSIZE / sizeof(HashWordType))) // VC60 workaround
|
||||||
#ifdef __BORLANDC__
|
#ifdef __BORLANDC__
|
||||||
FixedSizeSecBlock<HashWordType, T::DIGESTSIZE / sizeof(HashWordType)> m_buffer;
|
FixedSizeSecBlock<HashWordType, T::DIGESTSIZE / sizeof(HashWordType)> m_buffer;
|
||||||
#else
|
#else
|
||||||
|
|
|
||||||
|
|
@ -639,6 +639,8 @@ void Deflator::EncodeBlock(bool eof, unsigned int blockType)
|
||||||
#if defined(_MSC_VER) && !defined(__MWERKS__) && (_MSC_VER < 1300)
|
#if defined(_MSC_VER) && !defined(__MWERKS__) && (_MSC_VER < 1300)
|
||||||
// VC60 workaround: built-in reverse_iterator has two template parameters, Dinkumware only has one
|
// VC60 workaround: built-in reverse_iterator has two template parameters, Dinkumware only has one
|
||||||
typedef reverse_bidirectional_iterator<unsigned int *, unsigned int> RevIt;
|
typedef reverse_bidirectional_iterator<unsigned int *, unsigned int> RevIt;
|
||||||
|
#elif defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
|
||||||
|
typedef reverse_iterator<unsigned int *, random_access_iterator_tag, unsigned int> RevIt;
|
||||||
#else
|
#else
|
||||||
typedef reverse_iterator<unsigned int *> RevIt;
|
typedef reverse_iterator<unsigned int *> RevIt;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue