summaryrefslogtreecommitdiff
path: root/mysql/extra/yassl/taocrypt/include
diff options
context:
space:
mode:
Diffstat (limited to 'mysql/extra/yassl/taocrypt/include')
-rw-r--r--mysql/extra/yassl/taocrypt/include/aes.hpp155
-rw-r--r--mysql/extra/yassl/taocrypt/include/algebra.hpp226
-rw-r--r--mysql/extra/yassl/taocrypt/include/arc4.hpp58
-rw-r--r--mysql/extra/yassl/taocrypt/include/asn.hpp392
-rw-r--r--mysql/extra/yassl/taocrypt/include/block.hpp202
-rw-r--r--mysql/extra/yassl/taocrypt/include/blowfish.hpp88
-rw-r--r--mysql/extra/yassl/taocrypt/include/coding.hpp91
-rw-r--r--mysql/extra/yassl/taocrypt/include/des.hpp130
-rw-r--r--mysql/extra/yassl/taocrypt/include/dh.hpp86
-rw-r--r--mysql/extra/yassl/taocrypt/include/dsa.hpp126
-rw-r--r--mysql/extra/yassl/taocrypt/include/error.hpp88
-rw-r--r--mysql/extra/yassl/taocrypt/include/file.hpp130
-rw-r--r--mysql/extra/yassl/taocrypt/include/hash.hpp110
-rw-r--r--mysql/extra/yassl/taocrypt/include/hc128.hpp63
-rw-r--r--mysql/extra/yassl/taocrypt/include/hmac.hpp138
-rw-r--r--mysql/extra/yassl/taocrypt/include/integer.hpp332
-rw-r--r--mysql/extra/yassl/taocrypt/include/kernelc.hpp34
-rw-r--r--mysql/extra/yassl/taocrypt/include/md2.hpp64
-rw-r--r--mysql/extra/yassl/taocrypt/include/md4.hpp62
-rw-r--r--mysql/extra/yassl/taocrypt/include/md5.hpp70
-rw-r--r--mysql/extra/yassl/taocrypt/include/misc.hpp888
-rw-r--r--mysql/extra/yassl/taocrypt/include/modarith.hpp165
-rw-r--r--mysql/extra/yassl/taocrypt/include/modes.hpp154
-rw-r--r--mysql/extra/yassl/taocrypt/include/pwdbased.hpp91
-rw-r--r--mysql/extra/yassl/taocrypt/include/rabbit.hpp65
-rw-r--r--mysql/extra/yassl/taocrypt/include/random.hpp84
-rw-r--r--mysql/extra/yassl/taocrypt/include/ripemd.hpp69
-rw-r--r--mysql/extra/yassl/taocrypt/include/rsa.hpp250
-rw-r--r--mysql/extra/yassl/taocrypt/include/runtime.hpp60
-rw-r--r--mysql/extra/yassl/taocrypt/include/sha.hpp174
-rw-r--r--mysql/extra/yassl/taocrypt/include/twofish.hpp94
-rw-r--r--mysql/extra/yassl/taocrypt/include/type_traits.hpp77
-rw-r--r--mysql/extra/yassl/taocrypt/include/types.hpp99
33 files changed, 0 insertions, 4915 deletions
diff --git a/mysql/extra/yassl/taocrypt/include/aes.hpp b/mysql/extra/yassl/taocrypt/include/aes.hpp
deleted file mode 100644
index bccf6e7..0000000
--- a/mysql/extra/yassl/taocrypt/include/aes.hpp
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* aes.hpp defines AES
-*/
-
-
-#ifndef TAO_CRYPT_AES_HPP
-#define TAO_CRYPT_AES_HPP
-
-#include "misc.hpp"
-#include "modes.hpp"
-
-
-#if defined(TAOCRYPT_X86ASM_AVAILABLE) && defined(TAO_ASM)
- #define DO_AES_ASM
-#endif
-
-
-
-namespace TaoCrypt {
-
-
-enum { AES_BLOCK_SIZE = 16 };
-
-
-// AES encryption and decryption, see FIPS-197
-class AES : public Mode_BASE {
-public:
- enum { BLOCK_SIZE = AES_BLOCK_SIZE };
-
- AES(CipherDir DIR, Mode MODE)
- : Mode_BASE(BLOCK_SIZE, DIR, MODE) {}
-
-#ifdef DO_AES_ASM
- void Process(byte*, const byte*, word32);
-#endif
- void SetKey(const byte* key, word32 sz, CipherDir fake = ENCRYPTION);
- void SetIV(const byte* iv) { memcpy(r_, iv, BLOCK_SIZE); }
-private:
- static const word32 rcon_[];
-
- word32 rounds_;
- word32 key_[60]; // max size
-
- static const word32 Te[5][256];
- static const word32 Td[5][256];
- static const byte CTd4[256];
-
- static const word32* Te0;
- static const word32* Te1;
- static const word32* Te2;
- static const word32* Te3;
- static const word32* Te4;
-
- static const word32* Td0;
- static const word32* Td1;
- static const word32* Td2;
- static const word32* Td3;
- static const word32* Td4;
-
- void encrypt(const byte*, const byte*, byte*) const;
- void AsmEncrypt(const byte*, byte*, void*) const;
- void decrypt(const byte*, const byte*, byte*) const;
- void AsmDecrypt(const byte*, byte*, void*) const;
-
- void ProcessAndXorBlock(const byte*, const byte*, byte*) const;
-
- word32 PreFetchTe() const;
- word32 PreFetchTd() const;
- word32 PreFetchCTd4() const;
-
- AES(const AES&); // hide copy
- AES& operator=(const AES&); // and assign
-};
-
-
-#if defined(__x86_64__) || defined(_M_X64) || \
- (defined(__ILP32__) && (__ILP32__ >= 1))
- #define TC_CACHE_LINE_SZ 64
-#else
- /* default cache line size */
- #define TC_CACHE_LINE_SZ 32
-#endif
-
-inline word32 AES::PreFetchTe() const
-{
- word32 x = 0;
-
- /* 4 tables of 256 entries */
- for (int i = 0; i < 4; i++) {
- /* each entry is 4 bytes */
- for (int j = 0; j < 256; j += TC_CACHE_LINE_SZ/4) {
- x &= Te[i][j];
- }
- }
-
- return x;
-}
-
-
-inline word32 AES::PreFetchTd() const
-{
- word32 x = 0;
-
- /* 4 tables of 256 entries */
- for (int i = 0; i < 4; i++) {
- /* each entry is 4 bytes */
- for (int j = 0; j < 256; j += TC_CACHE_LINE_SZ/4) {
- x &= Td[i][j];
- }
- }
-
- return x;
-}
-
-
-inline word32 AES::PreFetchCTd4() const
-{
- word32 x = 0;
- int i;
-
- for (i = 0; i < 256; i += TC_CACHE_LINE_SZ) {
- x &= CTd4[i];
- }
-
- return x;
-}
-
-
-typedef BlockCipher<ENCRYPTION, AES, ECB> AES_ECB_Encryption;
-typedef BlockCipher<DECRYPTION, AES, ECB> AES_ECB_Decryption;
-
-typedef BlockCipher<ENCRYPTION, AES, CBC> AES_CBC_Encryption;
-typedef BlockCipher<DECRYPTION, AES, CBC> AES_CBC_Decryption;
-
-
-} // naemspace
-
-#endif // TAO_CRYPT_AES_HPP
diff --git a/mysql/extra/yassl/taocrypt/include/algebra.hpp b/mysql/extra/yassl/taocrypt/include/algebra.hpp
deleted file mode 100644
index 5ce7038..0000000
--- a/mysql/extra/yassl/taocrypt/include/algebra.hpp
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* based on Wei Dai's algebra.h from CryptoPP */
-
-#ifndef TAO_CRYPT_ALGEBRA_HPP
-#define TAO_CRYPT_ALGEBRA_HPP
-
-#include "integer.hpp"
-
-namespace TaoCrypt {
-
-
-// "const Element&" returned by member functions are references
-// to internal data members. Since each object may have only
-// one such data member for holding results, the following code
-// will produce incorrect results:
-// abcd = group.Add(group.Add(a,b), group.Add(c,d));
-// But this should be fine:
-// abcd = group.Add(a, group.Add(b, group.Add(c,d));
-
-// Abstract Group
-class TAOCRYPT_NO_VTABLE AbstractGroup : public virtual_base
-{
-public:
- typedef Integer Element;
-
- virtual ~AbstractGroup() {}
-
- virtual bool Equal(const Element &a, const Element &b) const =0;
- virtual const Element& Identity() const =0;
- virtual const Element& Add(const Element &a, const Element &b) const =0;
- virtual const Element& Inverse(const Element &a) const =0;
- virtual bool InversionIsFast() const {return false;}
-
- virtual const Element& Double(const Element &a) const;
- virtual const Element& Subtract(const Element &a, const Element &b) const;
- virtual Element& Accumulate(Element &a, const Element &b) const;
- virtual Element& Reduce(Element &a, const Element &b) const;
-
- virtual Element ScalarMultiply(const Element &a, const Integer &e) const;
- virtual Element CascadeScalarMultiply(const Element &x, const Integer &e1,
- const Element &y, const Integer &e2) const;
-
- virtual void SimultaneousMultiply(Element *results, const Element &base,
- const Integer *exponents, unsigned int exponentsCount) const;
-};
-
-// Abstract Ring
-class TAOCRYPT_NO_VTABLE AbstractRing : public AbstractGroup
-{
-public:
- typedef Integer Element;
-
- AbstractRing() : AbstractGroup() {m_mg.m_pRing = this;}
- AbstractRing(const AbstractRing &source) : AbstractGroup()
- {m_mg.m_pRing = this;}
- AbstractRing& operator=(const AbstractRing &source) {return *this;}
-
- virtual bool IsUnit(const Element &a) const =0;
- virtual const Element& MultiplicativeIdentity() const =0;
- virtual const Element& Multiply(const Element&, const Element&) const =0;
- virtual const Element& MultiplicativeInverse(const Element &a) const =0;
-
- virtual const Element& Square(const Element &a) const;
- virtual const Element& Divide(const Element &a, const Element &b) const;
-
- virtual Element Exponentiate(const Element &a, const Integer &e) const;
- virtual Element CascadeExponentiate(const Element &x, const Integer &e1,
- const Element &y, const Integer &e2) const;
-
- virtual void SimultaneousExponentiate(Element *results, const Element&,
- const Integer *exponents, unsigned int exponentsCount) const;
-
- virtual const AbstractGroup& MultiplicativeGroup() const
- {return m_mg;}
-
-private:
- class MultiplicativeGroupT : public AbstractGroup
- {
- public:
- const AbstractRing& GetRing() const
- {return *m_pRing;}
-
- bool Equal(const Element &a, const Element &b) const
- {return GetRing().Equal(a, b);}
-
- const Element& Identity() const
- {return GetRing().MultiplicativeIdentity();}
-
- const Element& Add(const Element &a, const Element &b) const
- {return GetRing().Multiply(a, b);}
-
- Element& Accumulate(Element &a, const Element &b) const
- {return a = GetRing().Multiply(a, b);}
-
- const Element& Inverse(const Element &a) const
- {return GetRing().MultiplicativeInverse(a);}
-
- const Element& Subtract(const Element &a, const Element &b) const
- {return GetRing().Divide(a, b);}
-
- Element& Reduce(Element &a, const Element &b) const
- {return a = GetRing().Divide(a, b);}
-
- const Element& Double(const Element &a) const
- {return GetRing().Square(a);}
-
- Element ScalarMultiply(const Element &a, const Integer &e) const
- {return GetRing().Exponentiate(a, e);}
-
- Element CascadeScalarMultiply(const Element &x, const Integer &e1,
- const Element &y, const Integer &e2) const
- {return GetRing().CascadeExponentiate(x, e1, y, e2);}
-
- void SimultaneousMultiply(Element *results, const Element &base,
- const Integer *exponents, unsigned int exponentsCount) const
- {GetRing().SimultaneousExponentiate(results, base, exponents,
- exponentsCount);}
-
- const AbstractRing* m_pRing;
- };
-
- MultiplicativeGroupT m_mg;
-};
-
-
-// Abstract Euclidean Domain
-class TAOCRYPT_NO_VTABLE AbstractEuclideanDomain
- : public AbstractRing
-{
-public:
- typedef Integer Element;
-
- virtual void DivisionAlgorithm(Element &r, Element &q, const Element &a,
- const Element &d) const =0;
-
- virtual const Element& Mod(const Element &a, const Element &b) const =0;
- virtual const Element& Gcd(const Element &a, const Element &b) const;
-
-protected:
- mutable Element result;
-};
-
-
-// EuclideanDomainOf
-class EuclideanDomainOf : public AbstractEuclideanDomain
-{
-public:
- typedef Integer Element;
-
- EuclideanDomainOf() {}
-
- bool Equal(const Element &a, const Element &b) const
- {return a==b;}
-
- const Element& Identity() const
- {return Element::Zero();}
-
- const Element& Add(const Element &a, const Element &b) const
- {return result = a+b;}
-
- Element& Accumulate(Element &a, const Element &b) const
- {return a+=b;}
-
- const Element& Inverse(const Element &a) const
- {return result = -a;}
-
- const Element& Subtract(const Element &a, const Element &b) const
- {return result = a-b;}
-
- Element& Reduce(Element &a, const Element &b) const
- {return a-=b;}
-
- const Element& Double(const Element &a) const
- {return result = a.Doubled();}
-
- const Element& MultiplicativeIdentity() const
- {return Element::One();}
-
- const Element& Multiply(const Element &a, const Element &b) const
- {return result = a*b;}
-
- const Element& Square(const Element &a) const
- {return result = a.Squared();}
-
- bool IsUnit(const Element &a) const
- {return a.IsUnit();}
-
- const Element& MultiplicativeInverse(const Element &a) const
- {return result = a.MultiplicativeInverse();}
-
- const Element& Divide(const Element &a, const Element &b) const
- {return result = a/b;}
-
- const Element& Mod(const Element &a, const Element &b) const
- {return result = a%b;}
-
- void DivisionAlgorithm(Element &r, Element &q, const Element &a,
- const Element &d) const
- {Element::Divide(r, q, a, d);}
-
-private:
- mutable Element result;
-};
-
-
-
-} // namespace
-
-#endif // TAO_CRYPT_ALGEBRA_HPP
diff --git a/mysql/extra/yassl/taocrypt/include/arc4.hpp b/mysql/extra/yassl/taocrypt/include/arc4.hpp
deleted file mode 100644
index be64ba4..0000000
--- a/mysql/extra/yassl/taocrypt/include/arc4.hpp
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* arc4.hpp defines ARC4
-*/
-
-
-#ifndef TAO_CRYPT_ARC4_HPP
-#define TAO_CRYPT_ARC4_HPP
-
-#include "misc.hpp"
-
-namespace TaoCrypt {
-
-
-// ARC4 encryption and decryption
-class ARC4 {
-public:
- enum { STATE_SIZE = 256 };
-
- typedef ARC4 Encryption;
- typedef ARC4 Decryption;
-
- ARC4() {}
-
- void Process(byte*, const byte*, word32);
- void SetKey(const byte*, word32);
-private:
- byte x_;
- byte y_;
- byte state_[STATE_SIZE];
-
- ARC4(const ARC4&); // hide copy
- const ARC4 operator=(const ARC4&); // and assign
-
- void AsmProcess(byte*, const byte*, word32);
-};
-
-} // namespace
-
-
-#endif // TAO_CRYPT_ARC4_HPP
-
diff --git a/mysql/extra/yassl/taocrypt/include/asn.hpp b/mysql/extra/yassl/taocrypt/include/asn.hpp
deleted file mode 100644
index 28c7c8f..0000000
--- a/mysql/extra/yassl/taocrypt/include/asn.hpp
+++ /dev/null
@@ -1,392 +0,0 @@
-/*
- Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* asn.hpp provides ASN1 BER, PublicKey, and x509v3 decoding
-*/
-
-
-#ifndef TAO_CRYPT_ASN_HPP
-#define TAO_CRYPT_ASN_HPP
-
-
-#include <time.h>
-#include "misc.hpp"
-#include "block.hpp"
-#include "error.hpp"
-#ifdef USE_SYS_STL
- #include <list>
-#else
- #include "list.hpp"
-#endif
-
-
-namespace STL = STL_NAMESPACE;
-
-
-namespace TaoCrypt {
-
-// these tags and flags are not complete
-enum ASNTag
-{
- BOOLEAN = 0x01,
- INTEGER = 0x02,
- BIT_STRING = 0x03,
- OCTET_STRING = 0x04,
- TAG_NULL = 0x05,
- OBJECT_IDENTIFIER = 0x06,
- OBJECT_DESCRIPTOR = 0x07,
- EXTERNAL = 0x08,
- REAL = 0x09,
- ENUMERATED = 0x0a,
- UTF8_STRING = 0x0c,
- SEQUENCE = 0x10,
- SET = 0x11,
- NUMERIC_STRING = 0x12,
- PRINTABLE_STRING = 0x13,
- T61_STRING = 0x14,
- VIDEOTEXT_STRING = 0x15,
- IA5_STRING = 0x16,
- UTC_TIME = 0x17,
- GENERALIZED_TIME = 0x18,
- GRAPHIC_STRING = 0x19,
- VISIBLE_STRING = 0x1a,
- GENERAL_STRING = 0x1b,
- LONG_LENGTH = 0x80
-};
-
-enum ASNIdFlag
-{
- UNIVERSAL = 0x00,
- DATA = 0x01,
- HEADER = 0x02,
- CONSTRUCTED = 0x20,
- APPLICATION = 0x40,
- CONTEXT_SPECIFIC = 0x80,
- PRIVATE = 0xc0
-};
-
-
-enum DNTags
-{
- COMMON_NAME = 0x03, // CN
- SUR_NAME = 0x04, // SN
- COUNTRY_NAME = 0x06, // C
- LOCALITY_NAME = 0x07, // L
- STATE_NAME = 0x08, // ST
- ORG_NAME = 0x0a, // O
- ORGUNIT_NAME = 0x0b // OU
-};
-
-
-enum PCKS12_Tags
-{
- /* DATA = 1, */ // from ASN1
- SIGNED_DATA = 2,
- ENVELOPED_DATA = 3,
- SIGNED_AND_ENVELOPED_DATA = 4,
- DIGESTED_DATA = 5,
- ENCRYPTED_DATA = 6
-};
-
-
-enum Constants
-{
- MIN_DATE_SZ = 13,
- MAX_DATE_SZ = 16,
- MAX_ALGO_SZ = 16,
- MAX_LENGTH_SZ = 5,
- MAX_SEQ_SZ = 5, // enum(seq|con) + length(4)
- MAX_ALGO_SIZE = 9,
- MAX_DIGEST_SZ = 69, // SHA512 + enum(Bit or Octet) + length(4)
- DSA_SIG_SZ = 40,
- ASN_NAME_MAX = 512 // max total of all included names
-};
-
-
-class Source;
-class RSA_PublicKey;
-class RSA_PrivateKey;
-class DSA_PublicKey;
-class DSA_PrivateKey;
-class Integer;
-class DH;
-
-
-// General BER decoding
-class BER_Decoder : public virtual_base {
-protected:
- Source& source_;
-public:
- explicit BER_Decoder(Source& s) : source_(s) {}
- virtual ~BER_Decoder() {}
-
- Integer& GetInteger(Integer&);
- word32 GetSequence();
- word32 GetSet();
- word32 GetVersion();
- word32 GetExplicitVersion();
-
- Error GetError();
-private:
- virtual void ReadHeader() = 0;
-
- BER_Decoder(const BER_Decoder&); // hide copy
- BER_Decoder& operator=(const BER_Decoder&); // and assign
-};
-
-
-// RSA Private Key BER Decoder
-class RSA_Private_Decoder : public BER_Decoder {
-public:
- explicit RSA_Private_Decoder(Source& s) : BER_Decoder(s) {}
- void Decode(RSA_PrivateKey&);
-private:
- void ReadHeader();
-};
-
-
-// RSA Public Key BER Decoder
-class RSA_Public_Decoder : public BER_Decoder {
-public:
- explicit RSA_Public_Decoder(Source& s) : BER_Decoder(s) {}
- void Decode(RSA_PublicKey&);
-private:
- void ReadHeader();
- void ReadHeaderOpenSSL();
-};
-
-
-// DSA Private Key BER Decoder
-class DSA_Private_Decoder : public BER_Decoder {
-public:
- explicit DSA_Private_Decoder(Source& s) : BER_Decoder(s) {}
- void Decode(DSA_PrivateKey&);
-private:
- void ReadHeader();
-};
-
-
-// DSA Public Key BER Decoder
-class DSA_Public_Decoder : public BER_Decoder {
-public:
- explicit DSA_Public_Decoder(Source& s) : BER_Decoder(s) {}
- void Decode(DSA_PublicKey&);
-private:
- void ReadHeader();
-};
-
-
-// DH Key BER Decoder
-class DH_Decoder : public BER_Decoder {
-public:
- explicit DH_Decoder(Source& s) : BER_Decoder(s) {}
- void Decode(DH&);
-private:
- void ReadHeader();
-};
-
-
-// PKCS12 BER Decoder
-class PKCS12_Decoder : public BER_Decoder {
-public:
- explicit PKCS12_Decoder(Source& s) : BER_Decoder(s) {}
- void Decode();
-private:
- void ReadHeader();
-};
-
-
-// General PublicKey
-class PublicKey {
- byte* key_;
- word32 sz_;
-public:
- explicit PublicKey(const byte* k = 0, word32 s = 0);
- ~PublicKey() { tcArrayDelete(key_); }
-
- const byte* GetKey() const { return key_; }
- word32 size() const { return sz_; }
-
- void SetKey(const byte*);
- void SetSize(word32 s);
-
- void AddToEnd(const byte*, word32);
-private:
- PublicKey(const PublicKey&); // hide copy
- PublicKey& operator=(const PublicKey&); // and assign
-};
-
-
-enum { SHA_SIZE = 20 };
-
-
-// A Signing Authority
-class Signer {
- PublicKey key_;
- char name_[ASN_NAME_MAX];
- byte hash_[SHA_SIZE];
-public:
- Signer(const byte* k, word32 kSz, const char* n, const byte* h);
- ~Signer();
-
- const PublicKey& GetPublicKey() const { return key_; }
- const char* GetName() const { return name_; }
- const byte* GetHash() const { return hash_; }
-
-private:
- Signer(const Signer&); // hide copy
- Signer& operator=(const Signer&); // and assign
-};
-
-
-typedef STL::list<Signer*> SignerList;
-
-
-enum ContentType { HUH = 651 };
-enum SigType { SHAwDSA = 517, MD2wRSA = 646, MD5wRSA = 648, SHAwRSA = 649,
- SHA256wRSA = 655, SHA384wRSA = 656, SHA512wRSA = 657,
- SHA256wDSA = 416 };
-enum HashType { MD2h = 646, MD5h = 649, SHAh = 88, SHA256h = 414, SHA384h = 415,
- SHA512h = 416 };
-enum KeyType { DSAk = 515, RSAk = 645 }; // sums of algo OID
-
-
-// an x509v Certificate BER Decoder
-class CertDecoder : public BER_Decoder {
-public:
- enum DateType { BEFORE, AFTER };
- enum NameType { ISSUER, SUBJECT };
- enum CertType { CA, USER };
-
- explicit CertDecoder(Source&, bool decode = true, SignerList* sl = 0,
- bool noVerify = false, CertType ct = USER);
- ~CertDecoder();
-
- const PublicKey& GetPublicKey() const { return key_; }
- KeyType GetKeyType() const { return KeyType(keyOID_); }
- const char* GetIssuer() const { return issuer_; }
- const char* GetCommonName() const { return subject_; }
- const byte* GetHash() const { return subjectHash_; }
- const char* GetBeforeDate() const { return beforeDate_; }
- byte GetBeforeDateType() const { return beforeDateType_; }
- const char* GetAfterDate() const { return afterDate_; }
- byte GetAfterDateType() const { return afterDateType_; }
- int GetSubjectCnStart() const { return subCnPos_; }
- int GetIssuerCnStart() const { return issCnPos_; }
- int GetSubjectCnLength() const { return subCnLen_; }
- int GetIssuerCnLength() const { return issCnLen_; }
- void DecodeToKey();
-private:
- PublicKey key_;
- word32 certBegin_; // offset to start of cert
- word32 sigIndex_; // offset to start of signature
- word32 sigLength_; // length of signature
- word32 signatureOID_; // sum of algorithm object id
- word32 keyOID_; // sum of key algo object id
- int subCnPos_; // subject common name start, -1 is none
- int subCnLen_; // length of above
- int issCnPos_; // issuer common name start, -1 is none
- int issCnLen_; // length of above
- byte subjectHash_[SHA_SIZE]; // hash of all Names
- byte issuerHash_[SHA_SIZE]; // hash of all Names
- byte* signature_;
- char issuer_[ASN_NAME_MAX]; // Names
- char subject_[ASN_NAME_MAX]; // Names
- char beforeDate_[MAX_DATE_SZ+1]; // valid before date, +null term
- byte beforeDateType_; // beforeDate time type
- char afterDate_[MAX_DATE_SZ+1]; // valid after date, +null term
- byte afterDateType_; // afterDate time type
- bool verify_; // Default to yes, but could be off
-
- void ReadHeader();
- void Decode(SignerList*, CertType);
- void StoreKey();
- void AddDSA();
- bool ValidateSelfSignature();
- bool ValidateSignature(SignerList*);
- bool ConfirmSignature(Source&);
- void GetKey();
- char* AddTag(char*, const char*, const char*, word32, word32);
- void GetName(NameType);
- void GetValidity();
- void GetDate(DateType);
- void GetCompareHash(const byte*, word32, byte*, word32);
- word32 GetAlgoId();
- word32 GetSignature();
- word32 GetDigest();
-};
-
-
-word32 GetLength(Source&);
-
-word32 SetLength(word32, byte*);
-word32 SetSequence(word32, byte*);
-
-word32 EncodeDSA_Signature(const byte* signature, byte* output);
-word32 EncodeDSA_Signature(const Integer& r, const Integer& s, byte* output);
-word32 DecodeDSA_Signature(byte* decoded, const byte* encoded, word32 sz);
-
-
-// General DER encoding
-class DER_Encoder : public virtual_base {
-public:
- DER_Encoder() {}
- virtual ~DER_Encoder() {}
-
- word32 SetAlgoID(HashType, byte*);
-
- Error GetError() const { return error_; }
-private:
- //virtual void WriteHeader() = 0;
- Error error_;
-
- DER_Encoder(const DER_Encoder&); // hide copy
- DER_Encoder& operator=(const DER_Encoder&); // and assign
-};
-
-
-
-class Signature_Encoder : public DER_Encoder {
- const byte* digest_;
- word32 digestSz_;
- SigType digestOID_;
-public:
- explicit Signature_Encoder(const byte*, word32, HashType, Source&);
-
-private:
- void WriteHeader();
- word32 SetDigest(const byte*, word32, byte*);
-
- Signature_Encoder(const Signature_Encoder&); // hide copy
- Signature_Encoder& operator=(const Signature_Encoder&); // and assign
-};
-
-
-// Get Cert in PEM format from BEGIN to END
-int GetCert(Source&);
-
-// Get Cert in PEM format from pkcs12 file
-int GetPKCS_Cert(const char* password, Source&);
-
-bool ASN1_TIME_extract(const unsigned char* date, unsigned char format,
- tm *parsed_time);
-
-} // namespace
-
-
-#endif // TAO_CRYPT_ASN_HPP
diff --git a/mysql/extra/yassl/taocrypt/include/block.hpp b/mysql/extra/yassl/taocrypt/include/block.hpp
deleted file mode 100644
index 4f58c82..0000000
--- a/mysql/extra/yassl/taocrypt/include/block.hpp
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-
-/* block.hpp provides word and byte blocks with configurable allocators
-*/
-
-
-#ifndef TAO_CRYPT_BLOCK_HPP
-#define TAO_CRYPT_BLOCK_HPP
-
-#include "misc.hpp"
-#include <string.h> // memcpy
-#include <stddef.h> // ptrdiff_t
-
-#ifdef USE_SYS_STL
- #include <algorithm>
-#else
- #include "algorithm.hpp"
-#endif
-
-
-namespace STL = STL_NAMESPACE;
-
-
-namespace TaoCrypt {
-
-
-// a Base class for Allocators
-template<class T>
-class AllocatorBase
-{
-public:
- typedef T value_type;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef T* pointer;
- typedef const T* const_pointer;
- typedef T& reference;
- typedef const T& const_reference;
-
- pointer address(reference r) const {return (&r);}
- const_pointer address(const_reference r) const {return (&r); }
- void construct(pointer p, const T& val) {new (p) T(val);}
- void destroy(pointer p) {p->~T();}
- size_type max_size() const {return ~size_type(0)/sizeof(T);}
-protected:
-};
-
-
-// General purpose realloc
-template<typename T, class A>
-typename A::pointer StdReallocate(A& a, T* p, typename A::size_type oldSize,
- typename A::size_type newSize, bool preserve)
-{
- if (oldSize == newSize)
- return p;
-
- if (preserve) {
- A b = A();
- typename A::pointer newPointer = b.allocate(newSize, 0);
- memcpy(newPointer, p, sizeof(T) * min(oldSize, newSize));
- a.deallocate(p, oldSize);
- STL::swap(a, b);
- return newPointer;
- }
- else {
- a.deallocate(p, oldSize);
- return a.allocate(newSize, 0);
- }
-}
-
-
-// Allocator that zeros out memory on deletion
-template <class T>
-class AllocatorWithCleanup : public AllocatorBase<T>
-{
-public:
- typedef typename AllocatorBase<T>::pointer pointer;
- typedef typename AllocatorBase<T>::size_type size_type;
-
- pointer allocate(size_type n, const void* = 0)
- {
- if (n > this->max_size())
- return 0;
- if (n == 0)
- return 0;
- return NEW_TC T[n];
- }
-
- void deallocate(void* p, size_type n)
- {
- memset(p, 0, n * sizeof(T));
- tcArrayDelete((T*)p);
- }
-
- pointer reallocate(T* p, size_type oldSize, size_type newSize,
- bool preserve)
- {
- return StdReallocate(*this, p, oldSize, newSize, preserve);
- }
-
- // VS.NET STL enforces the policy of "All STL-compliant allocators have to
- // provide a template class member called rebind".
- template <class U> struct rebind { typedef AllocatorWithCleanup<U> other;};
-};
-
-
-// Block class template
-template<typename T, class A = AllocatorWithCleanup<T> >
-class Block {
-public:
- explicit Block(word32 s = 0) : sz_(s), buffer_(allocator_.allocate(sz_))
- { CleanNew(sz_); }
-
- Block(const T* buff, word32 s) : sz_(s), buffer_(allocator_.allocate(sz_))
- { memcpy(buffer_, buff, sz_ * sizeof(T)); }
-
- Block(const Block& that) : sz_(that.sz_), buffer_(allocator_.allocate(sz_))
- { memcpy(buffer_, that.buffer_, sz_ * sizeof(T)); }
-
- Block& operator=(const Block& that) {
- Block tmp(that);
- Swap(tmp);
- return *this;
- }
-
- T& operator[] (word32 i) { return buffer_[i]; }
- const T& operator[] (word32 i) const { return buffer_[i]; }
-
- T* operator+ (word32 i) { return buffer_ + i; }
- const T* operator+ (word32 i) const { return buffer_ + i; }
-
- word32 size() const { return sz_; }
-
- T* get_buffer() const { return buffer_; }
- T* begin() const { return get_buffer(); }
-
- void CleanGrow(word32 newSize)
- {
- if (newSize > sz_) {
- buffer_ = allocator_.reallocate(buffer_, sz_, newSize, true);
- memset(buffer_ + sz_, 0, (newSize - sz_) * sizeof(T));
- sz_ = newSize;
- }
- }
-
- void CleanNew(word32 newSize)
- {
- New(newSize);
- memset(buffer_, 0, sz_ * sizeof(T));
- }
-
- void New(word32 newSize)
- {
- buffer_ = allocator_.reallocate(buffer_, sz_, newSize, false);
- sz_ = newSize;
- }
-
- void resize(word32 newSize)
- {
- buffer_ = allocator_.reallocate(buffer_, sz_, newSize, true);
- sz_ = newSize;
- }
-
- void Swap(Block& other) {
- STL::swap(sz_, other.sz_);
- STL::swap(buffer_, other.buffer_);
- STL::swap(allocator_, other.allocator_);
- }
-
- ~Block() { allocator_.deallocate(buffer_, sz_); }
-private:
- A allocator_;
- word32 sz_; // size in Ts
- T* buffer_;
-};
-
-
-typedef Block<byte> ByteBlock;
-typedef Block<word> WordBlock;
-typedef Block<word32> Word32Block;
-
-
-} // namespace
-
-#endif // TAO_CRYPT_BLOCK_HPP
diff --git a/mysql/extra/yassl/taocrypt/include/blowfish.hpp b/mysql/extra/yassl/taocrypt/include/blowfish.hpp
deleted file mode 100644
index 1f8d058..0000000
--- a/mysql/extra/yassl/taocrypt/include/blowfish.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* blowfish.hpp defines Blowfish
-*/
-
-
-#ifndef TAO_CRYPT_BLOWFISH_HPP
-#define TAO_CRYPT_BLOWFISH_HPP
-
-#include "misc.hpp"
-#include "modes.hpp"
-#ifdef USE_SYS_STL
- #include <algorithm>
-#else
- #include "algorithm.hpp"
-#endif
-
-
-namespace STL = STL_NAMESPACE;
-
-
-#if defined(TAOCRYPT_X86ASM_AVAILABLE) && defined(TAO_ASM)
- #define DO_BLOWFISH_ASM
-#endif
-
-
-namespace TaoCrypt {
-
-enum { BLOWFISH_BLOCK_SIZE = 8 };
-
-
-// Blowfish encryption and decryption, see
-class Blowfish : public Mode_BASE {
-public:
- enum { BLOCK_SIZE = BLOWFISH_BLOCK_SIZE, ROUNDS = 16 };
-
- Blowfish(CipherDir DIR, Mode MODE)
- : Mode_BASE(BLOCK_SIZE, DIR, MODE), sbox_(pbox_ + ROUNDS + 2) {}
-
-#ifdef DO_BLOWFISH_ASM
- void Process(byte*, const byte*, word32);
-#endif
- void SetKey(const byte* key, word32 sz, CipherDir fake = ENCRYPTION);
- void SetIV(const byte* iv) { memcpy(r_, iv, BLOCK_SIZE); }
-private:
- static const word32 p_init_[ROUNDS + 2];
- static const word32 s_init_[4 * 256];
-
- word32 pbox_[ROUNDS + 2 + 4 * 256];
- word32* sbox_;
-
- void crypt_block(const word32 in[2], word32 out[2]) const;
- void AsmProcess(const byte* in, byte* out) const;
- void ProcessAndXorBlock(const byte*, const byte*, byte*) const;
-
- Blowfish(const Blowfish&); // hide copy
- Blowfish& operator=(const Blowfish&); // and assign
-};
-
-
-typedef BlockCipher<ENCRYPTION, Blowfish, ECB> Blowfish_ECB_Encryption;
-typedef BlockCipher<DECRYPTION, Blowfish, ECB> Blowfish_ECB_Decryption;
-
-typedef BlockCipher<ENCRYPTION, Blowfish, CBC> Blowfish_CBC_Encryption;
-typedef BlockCipher<DECRYPTION, Blowfish, CBC> Blowfish_CBC_Decryption;
-
-
-
-} // namespace
-
-#endif // TAO_CRYPT_BLOWFISH_HPP
-
diff --git a/mysql/extra/yassl/taocrypt/include/coding.hpp b/mysql/extra/yassl/taocrypt/include/coding.hpp
deleted file mode 100644
index 61ac993..0000000
--- a/mysql/extra/yassl/taocrypt/include/coding.hpp
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* coding.hpp defines hex and base64 encoding/decoing
-*/
-
-#ifndef TAO_CRYPT_CODING_HPP
-#define TAO_CRYPT_CODING_HPP
-
-#include "misc.hpp"
-#include "block.hpp"
-
-namespace TaoCrypt {
-
-class Source;
-
-
-// Hex Encoding, see RFC 3548
-class HexEncoder {
- ByteBlock encoded_;
- Source& plain_;
-public:
- explicit HexEncoder(Source& s) : plain_(s) { Encode(); }
-private:
- void Encode();
-
- HexEncoder(const HexEncoder&); // hide copy
- HexEncoder& operator=(const HexEncoder&); // and assign
-};
-
-
-// Hex Decoding, see RFC 3548
-class HexDecoder {
- ByteBlock decoded_;
- Source& coded_;
-public:
- explicit HexDecoder(Source& s) : coded_(s) { Decode(); }
-private:
- void Decode();
-
- HexDecoder(const HexDecoder&); // hide copy
- HexDecoder& operator=(const HexDecoder&); // and assign
-};
-
-
-// Base 64 encoding, see RFC 3548
-class Base64Encoder {
- ByteBlock encoded_;
- Source& plain_;
-public:
- explicit Base64Encoder(Source& s) : plain_(s) { Encode(); }
-private:
- void Encode();
-
- Base64Encoder(const Base64Encoder&); // hide copy
- Base64Encoder& operator=(const Base64Encoder&); // and assign
-};
-
-
-// Base 64 decoding, see RFC 3548
-class Base64Decoder {
- ByteBlock decoded_;
- Source& coded_;
-public:
- explicit Base64Decoder(Source& s) : coded_(s) { Decode(); }
-private:
- void Decode();
-
- Base64Decoder(const Base64Decoder&); // hide copy
- Base64Decoder& operator=(const Base64Decoder&); // and assign
-};
-
-
-} // namespace
-
-#endif // TAO_CRYPT_CODING_HPP
diff --git a/mysql/extra/yassl/taocrypt/include/des.hpp b/mysql/extra/yassl/taocrypt/include/des.hpp
deleted file mode 100644
index d88e9ef..0000000
--- a/mysql/extra/yassl/taocrypt/include/des.hpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* des.hpp defines DES, DES_EDE2, and DES_EDE3
- see FIPS 46-2 and FIPS 81
-*/
-
-
-#ifndef TAO_CRYPT_DES_HPP
-#define TAO_CRYPT_DES_HPP
-
-#include "misc.hpp"
-#include "modes.hpp"
-
-
-#if defined(TAOCRYPT_X86ASM_AVAILABLE) && defined(TAO_ASM)
- #define DO_DES_ASM
-#endif
-
-
-namespace TaoCrypt {
-
-
-enum { DES_BLOCK_SIZE = 8, DES_KEY_SIZE = 32 };
-
-
-class BasicDES {
-public:
- void SetKey(const byte*, word32, CipherDir dir);
- void RawProcessBlock(word32&, word32&) const;
-protected:
- word32 k_[DES_KEY_SIZE];
-};
-
-
-// DES
-class DES : public Mode_BASE, public BasicDES {
-public:
- DES(CipherDir DIR, Mode MODE)
- : Mode_BASE(DES_BLOCK_SIZE, DIR, MODE) {}
-
-private:
- void ProcessAndXorBlock(const byte*, const byte*, byte*) const;
-
- DES(const DES&); // hide copy
- DES& operator=(const DES&); // and assign
-};
-
-
-// DES_EDE2
-class DES_EDE2 : public Mode_BASE {
-public:
- DES_EDE2(CipherDir DIR, Mode MODE)
- : Mode_BASE(DES_BLOCK_SIZE, DIR, MODE) {}
-
- void SetKey(const byte*, word32, CipherDir dir);
-private:
- BasicDES des1_;
- BasicDES des2_;
-
- void ProcessAndXorBlock(const byte*, const byte*, byte*) const;
-
- DES_EDE2(const DES_EDE2&); // hide copy
- DES_EDE2& operator=(const DES_EDE2&); // and assign
-};
-
-
-
-// DES_EDE3
-class DES_EDE3 : public Mode_BASE {
-public:
- DES_EDE3(CipherDir DIR, Mode MODE)
- : Mode_BASE(DES_BLOCK_SIZE, DIR, MODE) {}
-
- void SetKey(const byte*, word32, CipherDir dir);
- void SetIV(const byte* iv) { memcpy(r_, iv, DES_BLOCK_SIZE); }
-#ifdef DO_DES_ASM
- void Process(byte*, const byte*, word32);
-#endif
-private:
- BasicDES des1_;
- BasicDES des2_;
- BasicDES des3_;
-
- void AsmProcess(const byte* in, byte* out, void* box) const;
- void ProcessAndXorBlock(const byte*, const byte*, byte*) const;
-
- DES_EDE3(const DES_EDE3&); // hide copy
- DES_EDE3& operator=(const DES_EDE3&); // and assign
-};
-
-
-typedef BlockCipher<ENCRYPTION, DES, ECB> DES_ECB_Encryption;
-typedef BlockCipher<DECRYPTION, DES, ECB> DES_ECB_Decryption;
-
-typedef BlockCipher<ENCRYPTION, DES, CBC> DES_CBC_Encryption;
-typedef BlockCipher<DECRYPTION, DES, CBC> DES_CBC_Decryption;
-
-typedef BlockCipher<ENCRYPTION, DES_EDE2, ECB> DES_EDE2_ECB_Encryption;
-typedef BlockCipher<DECRYPTION, DES_EDE2, ECB> DES_EDE2_ECB_Decryption;
-
-typedef BlockCipher<ENCRYPTION, DES_EDE2, CBC> DES_EDE2_CBC_Encryption;
-typedef BlockCipher<DECRYPTION, DES_EDE2, CBC> DES_EDE2_CBC_Decryption;
-
-typedef BlockCipher<ENCRYPTION, DES_EDE3, ECB> DES_EDE3_ECB_Encryption;
-typedef BlockCipher<DECRYPTION, DES_EDE3, ECB> DES_EDE3_ECB_Decryption;
-
-typedef BlockCipher<ENCRYPTION, DES_EDE3, CBC> DES_EDE3_CBC_Encryption;
-typedef BlockCipher<DECRYPTION, DES_EDE3, CBC> DES_EDE3_CBC_Decryption;
-
-
-} // namespace
-
-
-#endif // TAO_CRYPT_DES_HPP
diff --git a/mysql/extra/yassl/taocrypt/include/dh.hpp b/mysql/extra/yassl/taocrypt/include/dh.hpp
deleted file mode 100644
index bdb90dd..0000000
--- a/mysql/extra/yassl/taocrypt/include/dh.hpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* dh.hpp provides Diffie-Hellman support
-*/
-
-
-#ifndef TAO_CRYPT_DH_HPP
-#define TAO_CRYPT_DH_HPP
-
-#include "misc.hpp"
-#include "integer.hpp"
-
-namespace TaoCrypt {
-
-
-class Source;
-
-
-// Diffie-Hellman
-class DH {
-public:
- DH() {}
- DH(Integer& p, Integer& g) : p_(p), g_(g) {}
- explicit DH(Source&);
-
- DH(const DH& that) : p_(that.p_), g_(that.g_) {}
- DH& operator=(const DH& that)
- {
- DH tmp(that);
- Swap(tmp);
- return *this;
- }
-
- void Swap(DH& other)
- {
- p_.Swap(other.p_);
- g_.Swap(other.g_);
- }
-
- void Initialize(Source&);
- void Initialize(Integer& p, Integer& g)
- {
- SetP(p);
- SetG(g);
- }
-
- void GenerateKeyPair(RandomNumberGenerator&, byte*, byte*);
- void Agree(byte*, const byte*, const byte*, word32 otherSz = 0);
-
- void SetP(const Integer& p) { p_ = p; }
- void SetG(const Integer& g) { g_ = g; }
-
- Integer& GetP() { return p_; }
- Integer& GetG() { return g_; }
-
- // for p and agree
- word32 GetByteLength() const { return p_.ByteCount(); }
-private:
- // group parms
- Integer p_;
- Integer g_;
-
- void GeneratePrivate(RandomNumberGenerator&, byte*);
- void GeneratePublic(const byte*, byte*);
-};
-
-
-} // namespace
-
-#endif // TAO_CRYPT_DH_HPP
diff --git a/mysql/extra/yassl/taocrypt/include/dsa.hpp b/mysql/extra/yassl/taocrypt/include/dsa.hpp
deleted file mode 100644
index d7f81c2..0000000
--- a/mysql/extra/yassl/taocrypt/include/dsa.hpp
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* dsa.hpp provides Digitial Signautre Algorithm see FIPS 186-2
-*/
-
-#ifndef TAO_CRYPT_DSA_HPP
-#define TAO_CRYPT_DSA_HPP
-
-#include "integer.hpp"
-
-
-namespace TaoCrypt {
-
-class Source;
-
-
-class DSA_PublicKey {
-protected:
- Integer p_;
- Integer q_;
- Integer g_;
- Integer y_;
-public:
- DSA_PublicKey() {}
- explicit DSA_PublicKey(Source&);
-
- void Initialize(Source&);
- void Initialize(const Integer& p, const Integer& q, const Integer& g,
- const Integer& y);
-
- const Integer& GetModulus() const;
- const Integer& GetSubGroupOrder() const;
- const Integer& GetSubGroupGenerator() const;
- const Integer& GetPublicPart() const;
-
- void SetModulus(const Integer&);
- void SetSubGroupOrder(const Integer&);
- void SetSubGroupGenerator(const Integer&);
- void SetPublicPart(const Integer&);
-
- word32 SignatureLength() const;
-
- DSA_PublicKey(const DSA_PublicKey&);
- DSA_PublicKey& operator=(const DSA_PublicKey&);
-
- void Swap(DSA_PublicKey& other);
-};
-
-
-
-class DSA_PrivateKey : public DSA_PublicKey {
- Integer x_;
-public:
- DSA_PrivateKey() {}
- explicit DSA_PrivateKey(Source&);
-
- void Initialize(Source&);
- void Initialize(const Integer& p, const Integer& q, const Integer& g,
- const Integer& y, const Integer& x);
-
- const Integer& GetPrivatePart() const;
-
- void SetPrivatePart(const Integer&);
-private:
- DSA_PrivateKey(const DSA_PrivateKey&); // hide copy
- DSA_PrivateKey& operator=(const DSA_PrivateKey&); // and assign
-};
-
-
-
-class DSA_Signer {
- const DSA_PrivateKey& key_;
- Integer r_;
- Integer s_;
-public:
- explicit DSA_Signer(const DSA_PrivateKey&);
-
- word32 Sign(const byte* sha_digest, byte* sig, RandomNumberGenerator&);
-
- const Integer& GetR() const;
- const Integer& GetS() const;
-private:
- DSA_Signer(const DSA_Signer&); // hide copy
- DSA_Signer& operator=(DSA_Signer&); // and assign
-};
-
-
-class DSA_Verifier {
- const DSA_PublicKey& key_;
- Integer r_;
- Integer s_;
-public:
- explicit DSA_Verifier(const DSA_PublicKey&);
-
- bool Verify(const byte* sha_digest, const byte* sig);
-
- const Integer& GetR() const;
- const Integer& GetS() const;
-private:
- DSA_Verifier(const DSA_Verifier&); // hide copy
- DSA_Verifier& operator=(const DSA_Verifier&); // and assign
-};
-
-
-
-
-
-} // namespace
-
-#endif // TAO_CRYPT_DSA_HPP
diff --git a/mysql/extra/yassl/taocrypt/include/error.hpp b/mysql/extra/yassl/taocrypt/include/error.hpp
deleted file mode 100644
index cb2130d..0000000
--- a/mysql/extra/yassl/taocrypt/include/error.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* error.hpp provides a taocrypt error numbers
- *
- */
-
-
-#ifndef TAO_CRYPT_ERROR_HPP
-#define TAO_CRYPT_ERROR_HPP
-
-
-namespace TaoCrypt {
-
-
-enum ErrorNumber {
-
-NO_ERROR_E = 0, // "not in error state"
-
-// RandomNumberGenerator
-WINCRYPT_E = 1001, // "bad wincrypt acquire"
-CRYPTGEN_E = 1002, // "CryptGenRandom error"
-OPEN_RAN_E = 1003, // "open /dev/urandom error"
-READ_RAN_E = 1004, // "read /dev/urandom error"
-
-// Integer
-INTEGER_E = 1010, // "bad DER Integer Header"
-
-
-// ASN.1
-SEQUENCE_E = 1020, // "bad Sequence Header"
-SET_E = 1021, // "bad Set Header"
-VERSION_E = 1022, // "version length not 1"
-SIG_OID_E = 1023, // "signature OID mismatch"
-BIT_STR_E = 1024, // "bad BitString Header"
-UNKNOWN_OID_E = 1025, // "unknown key OID type"
-OBJECT_ID_E = 1026, // "bad Ojbect ID Header"
-TAG_NULL_E = 1027, // "expected TAG NULL"
-EXPECT_0_E = 1028, // "expected 0"
-OCTET_STR_E = 1029, // "bad Octet String Header"
-TIME_E = 1030, // "bad TIME"
-
-DATE_SZ_E = 1031, // "bad Date Size"
-SIG_LEN_E = 1032, // "bad Signature Length"
-UNKOWN_SIG_E = 1033, // "unknown signature OID"
-UNKOWN_HASH_E = 1034, // "unknown hash OID"
-DSA_SZ_E = 1035, // "bad DSA r or s size"
-BEFORE_DATE_E = 1036, // "before date in the future"
-AFTER_DATE_E = 1037, // "after date in the past"
-SIG_CONFIRM_E = 1038, // "bad self signature confirmation"
-SIG_OTHER_E = 1039, // "bad other signature confirmation"
-
-CONTENT_E = 1040, // "bad content processing"
-PEM_E = 1041 // "bad pem format error"
-
- // add error string to yassl/src/yassl_error.cpp !!!
-};
-
-
-struct Error {
- ErrorNumber what_; // description number, 0 for no error
-
- explicit Error(ErrorNumber w = NO_ERROR_E) : what_(w) {}
-
- ErrorNumber What() const { return what_; }
- void SetError(ErrorNumber w) { what_ = w; }
-};
-
-
-
-} // namespace TaoCrypt
-
-#endif // TAO_CRYPT_ERROR_HPP
diff --git a/mysql/extra/yassl/taocrypt/include/file.hpp b/mysql/extra/yassl/taocrypt/include/file.hpp
deleted file mode 100644
index 9851a00..0000000
--- a/mysql/extra/yassl/taocrypt/include/file.hpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* file.hpp provies File Sources and Sinks
-*/
-
-
-#ifndef TAO_CRYPT_FILE_HPP
-#define TAO_CRYPT_FILE_HPP
-
-#include "misc.hpp"
-#include "block.hpp"
-#include "error.hpp"
-#include <stdio.h>
-
-namespace TaoCrypt {
-
-
-class Source {
- ByteBlock buffer_;
- word32 current_;
- Error error_;
-public:
- explicit Source(word32 sz = 0) : buffer_(sz), current_(0) {}
- Source(const byte* b, word32 sz) : buffer_(b, sz), current_(0) {}
-
- word32 remaining() { if (GetError().What()) return 0;
- else return buffer_.size() - current_; }
- word32 size() const { return buffer_.size(); }
- void grow(word32 sz) { buffer_.CleanGrow(sz); }
-
- bool IsLeft(word32 sz) { if (remaining() >= sz) return true;
- else { SetError(CONTENT_E); return false; } }
-
- const byte* get_buffer() const { return buffer_.get_buffer(); }
- const byte* get_current() const { return &buffer_[current_]; }
- word32 get_index() const { return current_; }
- void set_index(word32 i) { if (i < size()) current_ = i; }
-
- byte operator[] (word32 i) { current_ = i; return next(); }
- byte next() { if (IsLeft(1)) return buffer_[current_++]; else return 0; }
- byte prev() { if (current_) return buffer_[--current_]; else return 0; }
-
- void add(const byte* data, word32 len)
- {
- if (IsLeft(len)) {
- memcpy(buffer_.get_buffer() + current_, data, len);
- current_ += len;
- }
- }
-
- void advance(word32 i) { if (IsLeft(i)) current_ += i; }
- void reset(ByteBlock&);
-
- Error GetError() { return error_; }
- void SetError(ErrorNumber w) { error_.SetError(w); }
-
- friend class FileSource; // for get()
-
- Source(const Source& that)
- : buffer_(that.buffer_), current_(that.current_) {}
-
- Source& operator=(const Source& that)
- {
- Source tmp(that);
- Swap(tmp);
- return *this;
- }
-
- void Swap(Source& other)
- {
- buffer_.Swap(other.buffer_);
- STL::swap(current_, other.current_);
- }
-
-};
-
-
-// File Source
-class FileSource {
- FILE* file_;
-public:
- FileSource(const char* fname, Source& source);
- ~FileSource();
-
- word32 size(bool use_current = false);
-private:
- word32 get(Source&);
- word32 size_left();
-
- FileSource(const FileSource&); // hide
- FileSource& operator=(const FileSource&); // hide
-};
-
-
-// File Sink
-class FileSink {
- FILE* file_;
-public:
- FileSink(const char* fname, Source& source);
- ~FileSink();
-
- word32 size(bool use_current = false);
-private:
- void put(Source&);
-
- FileSink(const FileSink&); // hide
- FileSink& operator=(const FileSink&); // hide
-};
-
-
-
-} // namespace
-
-#endif // TAO_CRYPT_FILE_HPP
diff --git a/mysql/extra/yassl/taocrypt/include/hash.hpp b/mysql/extra/yassl/taocrypt/include/hash.hpp
deleted file mode 100644
index 4d2f7dd..0000000
--- a/mysql/extra/yassl/taocrypt/include/hash.hpp
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* hash.hpp provides a base for digest types
-*/
-
-
-#ifndef TAO_CRYPT_HASH_HPP
-#define TAO_CRYPT_HASH_HPP
-
-#include "misc.hpp"
-
-namespace TaoCrypt {
-
-
-// HASH
-class HASH : public virtual_base {
-public:
- virtual ~HASH() {}
-
- virtual void Update(const byte*, word32) = 0;
- virtual void Final(byte*) = 0;
-
- virtual void Init() = 0;
-
- virtual word32 getBlockSize() const = 0;
- virtual word32 getDigestSize() const = 0;
-};
-
-
-// HASH with Transform
-class HASHwithTransform : public HASH {
-public:
- HASHwithTransform(word32 digSz, word32 buffSz);
- virtual ~HASHwithTransform() {}
- virtual ByteOrder getByteOrder() const = 0;
- virtual word32 getPadSize() const = 0;
-
- virtual void Update(const byte*, word32);
- virtual void Final(byte*);
-
- word32 GetBitCountLo() const { return loLen_ << 3; }
- word32 GetBitCountHi() const { return (loLen_ >> (8*sizeof(loLen_) - 3)) +
- (hiLen_ << 3); }
- enum { MaxDigestSz = 8, MaxBufferSz = 64 };
-protected:
- typedef word32 HashLengthType;
- word32 buffLen_; // in bytes
- HashLengthType loLen_; // length in bytes
- HashLengthType hiLen_; // length in bytes
- word32 digest_[MaxDigestSz];
- word32 buffer_[MaxBufferSz / sizeof(word32)];
-
- virtual void Transform() = 0;
-
- void AddLength(word32);
-};
-
-
-#ifdef WORD64_AVAILABLE
-
-// 64-bit HASH with Transform
-class HASH64withTransform : public HASH {
-public:
- HASH64withTransform(word32 digSz, word32 buffSz);
- virtual ~HASH64withTransform() {}
- virtual ByteOrder getByteOrder() const = 0;
- virtual word32 getPadSize() const = 0;
-
- virtual void Update(const byte*, word32);
- virtual void Final(byte*);
-
- word32 GetBitCountLo() const { return loLen_ << 3; }
- word32 GetBitCountHi() const { return (loLen_ >> (8*sizeof(loLen_) - 3)) +
- (hiLen_ << 3); }
- enum { MaxDigestSz = 8, MaxBufferSz = 128 };
-protected:
- typedef word32 HashLengthType;
- word32 buffLen_; // in bytes
- HashLengthType loLen_; // length in bytes
- HashLengthType hiLen_; // length in bytes
- word64 digest_[MaxDigestSz];
- word64 buffer_[MaxBufferSz / sizeof(word64)];
-
- virtual void Transform() = 0;
-
- void AddLength(word32);
-};
-
-#endif // WORD64_AVAILABLE
-
-
-} // namespace
-
-#endif // TAO_CRYPT_HASH_HPP
diff --git a/mysql/extra/yassl/taocrypt/include/hc128.hpp b/mysql/extra/yassl/taocrypt/include/hc128.hpp
deleted file mode 100644
index 69e9d63..0000000
--- a/mysql/extra/yassl/taocrypt/include/hc128.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* hc128.hpp defines HC128
-*/
-
-
-#ifndef TAO_CRYPT_HC128_HPP
-#define TAO_CRYPT_HC128_HPP
-
-#include "misc.hpp"
-
-namespace TaoCrypt {
-
-
-// HC128 encryption and decryption
-class HC128 {
-public:
-
- typedef HC128 Encryption;
- typedef HC128 Decryption;
-
-
- HC128() {}
-
- void Process(byte*, const byte*, word32);
- void SetKey(const byte*, const byte*);
-private:
- word32 T_[1024]; /* P[i] = T[i]; Q[i] = T[1024 + i ]; */
- word32 X_[16];
- word32 Y_[16];
- word32 counter1024_; /* counter1024 = i mod 1024 at the ith step */
- word32 key_[8];
- word32 iv_[8];
-
- void SetIV(const byte*);
- void GenerateKeystream(word32*);
- void SetupUpdate();
-
- HC128(const HC128&); // hide copy
- const HC128 operator=(const HC128&); // and assign
-};
-
-} // namespace
-
-
-#endif // TAO_CRYPT_HC128_HPP
-
diff --git a/mysql/extra/yassl/taocrypt/include/hmac.hpp b/mysql/extra/yassl/taocrypt/include/hmac.hpp
deleted file mode 100644
index 4df081b..0000000
--- a/mysql/extra/yassl/taocrypt/include/hmac.hpp
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* hamc.hpp implements HMAC, see RFC 2104
-*/
-
-
-#ifndef TAO_CRYPT_HMAC_HPP
-#define TAO_CRYPT_HMAC_HPP
-
-#include "hash.hpp"
-
-namespace TaoCrypt {
-
-
-// HMAC class template
-template <class T>
-class HMAC {
-public:
- enum { IPAD = 0x36, OPAD = 0x5C };
-
- HMAC() : ipad_(reinterpret_cast<byte*>(&ip_)),
- opad_(reinterpret_cast<byte*>(&op_)),
- innerHash_(reinterpret_cast<byte*>(&innerH_))
- {
- Init();
- }
- void Update(const byte*, word32);
- void Final(byte*);
- void Init();
-
- void SetKey(const byte*, word32);
-private:
- byte* ipad_;
- byte* opad_;
- byte* innerHash_;
- bool innerHashKeyed_;
- T mac_;
-
- // MSVC 6 HACK, gives compiler error if calculated in array
- enum { HMAC_BSIZE = T::BLOCK_SIZE / sizeof(word32),
- HMAC_DSIZE = T::DIGEST_SIZE / sizeof(word32) };
-
- word32 ip_[HMAC_BSIZE]; // align ipad_ on word32
- word32 op_[HMAC_BSIZE]; // align opad_ on word32
- word32 innerH_[HMAC_DSIZE]; // align innerHash_ on word32
-
- void KeyInnerHash();
-
- HMAC(const HMAC&);
- HMAC& operator= (const HMAC&);
-};
-
-
-// Setup
-template <class T>
-void HMAC<T>::Init()
-{
- mac_.Init();
- innerHashKeyed_ = false;
-}
-
-
-// Key generation
-template <class T>
-void HMAC<T>::SetKey(const byte* key, word32 length)
-{
- Init();
-
- if (length <= T::BLOCK_SIZE)
- memcpy(ipad_, key, length);
- else {
- mac_.Update(key, length);
- mac_.Final(ipad_);
- length = T::DIGEST_SIZE;
- }
- memset(ipad_ + length, 0, T::BLOCK_SIZE - length);
-
- for (word32 i = 0; i < T::BLOCK_SIZE; i++) {
- opad_[i] = ipad_[i] ^ OPAD;
- ipad_[i] ^= IPAD;
- }
-}
-
-
-// Inner Key Hash
-template <class T>
-void HMAC<T>::KeyInnerHash()
-{
- mac_.Update(ipad_, T::BLOCK_SIZE);
- innerHashKeyed_ = true;
-}
-
-
-// Update
-template <class T>
-void HMAC<T>::Update(const byte* msg, word32 length)
-{
- if (!innerHashKeyed_)
- KeyInnerHash();
- mac_.Update(msg, length);
-}
-
-
-// Final
-template <class T>
-void HMAC<T>::Final(byte* hash)
-{
- if (!innerHashKeyed_)
- KeyInnerHash();
- mac_.Final(innerHash_);
-
- mac_.Update(opad_, T::BLOCK_SIZE);
- mac_.Update(innerHash_, T::DIGEST_SIZE);
- mac_.Final(hash);
-
- innerHashKeyed_ = false;
-}
-
-
-} // namespace
-
-#endif // TAO_CRYPT_HMAC_HPP
diff --git a/mysql/extra/yassl/taocrypt/include/integer.hpp b/mysql/extra/yassl/taocrypt/include/integer.hpp
deleted file mode 100644
index 05fe189..0000000
--- a/mysql/extra/yassl/taocrypt/include/integer.hpp
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* based on Wei Dai's integer.h from CryptoPP */
-
-
-#ifndef TAO_CRYPT_INTEGER_HPP
-#define TAO_CRYPT_INTEGER_HPP
-
-
-#ifdef _MSC_VER
- // 4250: dominance
- // 4660: explicitly instantiating a class already implicitly instantiated
- // 4661: no suitable definition provided for explicit template request
- // 4786: identifer was truncated in debug information
- // 4355: 'this' : used in base member initializer list
-# pragma warning(disable: 4250 4660 4661 4786 4355)
-#endif
-
-
-#include "misc.hpp"
-#include "block.hpp"
-#include "random.hpp"
-#include "file.hpp"
-#include <string.h>
-#ifdef USE_SYS_STL
- #include <algorithm>
-#else
- #include "algorithm.hpp"
-#endif
-
-
-#ifdef TAOCRYPT_X86ASM_AVAILABLE
- #if defined(__GNUC__) && (__GNUC__ >= 4)
- // GCC 4 or greater optimizes too much inline on recursive for bigint,
- // -O3 just as fast without asm here anyway
- #undef TAOCRYPT_X86ASM_AVAILABLE
- #endif
-#endif
-
-#ifdef TAOCRYPT_X86ASM_AVAILABLE
-
-#ifdef _M_IX86
- #if (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 500)) || \
- (defined(__ICL) && (__ICL >= 500))
- #define SSE2_INTRINSICS_AVAILABLE
- #define TAOCRYPT_MM_MALLOC_AVAILABLE
- #elif defined(_MSC_VER)
- // _mm_free seems to be the only way to tell if the Processor Pack is
- //installed or not
- #include <malloc.h>
- #if defined(_mm_free)
- #define SSE2_INTRINSICS_AVAILABLE
- #define TAOCRYPT_MM_MALLOC_AVAILABLE
- #endif
- #endif
-#endif
-
-// SSE2 intrinsics work in GCC 3.3 or later
-#if defined(__SSE2__) && (__GNUC__ == 4 || __GNUC_MAJOR__ > 3 || \
- __GNUC_MINOR__ > 2)
- #define SSE2_INTRINSICS_AVAILABLE
-#endif
-
-#endif // X86ASM
-
-
-
-
-namespace TaoCrypt {
-
-#if defined(SSE2_INTRINSICS_AVAILABLE)
-
- // Allocator handling proper alignment
- template <class T>
- class AlignedAllocator : public AllocatorBase<T>
- {
- public:
- typedef typename AllocatorBase<T>::pointer pointer;
- typedef typename AllocatorBase<T>::size_type size_type;
-
- pointer allocate(size_type n, const void* = 0);
- void deallocate(void* p, size_type n);
- pointer reallocate(T* p, size_type oldSize, size_type newSize,
- bool preserve)
- {
- return StdReallocate(*this, p, oldSize, newSize, preserve);
- }
-
- #if !(defined(TAOCRYPT_MALLOC_ALIGNMENT_IS_16) || \
- defined(TAOCRYPT_MEMALIGN_AVAILABLE) || \
- defined(TAOCRYPT_MM_MALLOC_AVAILABLE))
- #define TAOCRYPT_NO_ALIGNED_ALLOC
- AlignedAllocator() : m_pBlock(0) {}
- protected:
- void *m_pBlock;
- #endif
- };
-
- typedef Block<word, AlignedAllocator<word> > AlignedWordBlock;
-#else
- typedef WordBlock AlignedWordBlock;
-#endif
-
-
-
-#ifdef _WIN32
- #undef max // avoid name clash
-#endif
-// general MAX
-template<typename T> inline
-const T& max(const T& a, const T& b)
-{
- return a > b ? a : b;
-}
-
-
-// Large Integer class
-class Integer {
-public:
- enum Sign {POSITIVE = 0, NEGATIVE = 1 };
- enum Signedness { UNSIGNED, SIGNED };
- enum RandomNumberType { ANY, PRIME };
-
- class DivideByZero {};
-
- Integer();
- Integer(const Integer& t);
- Integer(signed long value);
- Integer(Sign s, word highWord, word lowWord);
-
- // BER Decode Source
- explicit Integer(Source&);
-
- Integer(const byte* encodedInteger, unsigned int byteCount,
- Signedness s = UNSIGNED);
-
- ~Integer() {}
-
- static const Integer& Zero();
- static const Integer& One();
-
- Integer& Ref() { return *this; }
-
- Integer(RandomNumberGenerator& rng, const Integer& min,
- const Integer& max);
-
- static Integer Power2(unsigned int e);
-
- unsigned int MinEncodedSize(Signedness = UNSIGNED) const;
- unsigned int Encode(byte* output, unsigned int outputLen,
- Signedness = UNSIGNED) const;
-
- void Decode(const byte* input, unsigned int inputLen,
- Signedness = UNSIGNED);
- void Decode(Source&);
-
- bool IsConvertableToLong() const;
- signed long ConvertToLong() const;
-
- unsigned int BitCount() const;
- unsigned int ByteCount() const;
- unsigned int WordCount() const;
-
- bool GetBit(unsigned int i) const;
- byte GetByte(unsigned int i) const;
- unsigned long GetBits(unsigned int i, unsigned int n) const;
-
- bool IsZero() const { return !*this; }
- bool NotZero() const { return !IsZero(); }
- bool IsNegative() const { return sign_ == NEGATIVE; }
- bool NotNegative() const { return !IsNegative(); }
- bool IsPositive() const { return NotNegative() && NotZero(); }
- bool NotPositive() const { return !IsPositive(); }
- bool IsEven() const { return GetBit(0) == 0; }
- bool IsOdd() const { return GetBit(0) == 1; }
-
- Integer& operator=(const Integer& t);
- Integer& operator+=(const Integer& t);
- Integer& operator-=(const Integer& t);
- Integer& operator*=(const Integer& t) { return *this = Times(t); }
- Integer& operator/=(const Integer& t)
- { return *this = DividedBy(t);}
- Integer& operator%=(const Integer& t) { return *this = Modulo(t); }
- Integer& operator/=(word t) { return *this = DividedBy(t); }
- Integer& operator%=(word t) { return *this = Modulo(t); }
- Integer& operator<<=(unsigned int);
- Integer& operator>>=(unsigned int);
-
-
- void Randomize(RandomNumberGenerator &rng, unsigned int bitcount);
- void Randomize(RandomNumberGenerator &rng, const Integer &min,
- const Integer &max);
-
- void SetBit(unsigned int n, bool value = 1);
- void SetByte(unsigned int n, byte value);
-
- void Negate();
- void SetPositive() { sign_ = POSITIVE; }
- void SetNegative() { if (!!(*this)) sign_ = NEGATIVE; }
- void Swap(Integer& a);
-
- bool operator!() const;
- Integer operator+() const {return *this;}
- Integer operator-() const;
- Integer& operator++();
- Integer& operator--();
- Integer operator++(int)
- { Integer temp = *this; ++*this; return temp; }
- Integer operator--(int)
- { Integer temp = *this; --*this; return temp; }
-
- int Compare(const Integer& a) const;
-
- Integer Plus(const Integer &b) const;
- Integer Minus(const Integer &b) const;
- Integer Times(const Integer &b) const;
- Integer DividedBy(const Integer &b) const;
- Integer Modulo(const Integer &b) const;
- Integer DividedBy(word b) const;
- word Modulo(word b) const;
-
- Integer operator>>(unsigned int n) const { return Integer(*this)>>=n; }
- Integer operator<<(unsigned int n) const { return Integer(*this)<<=n; }
-
- Integer AbsoluteValue() const;
- Integer Doubled() const { return Plus(*this); }
- Integer Squared() const { return Times(*this); }
- Integer SquareRoot() const;
-
- bool IsSquare() const;
- bool IsUnit() const;
-
- Integer MultiplicativeInverse() const;
-
- friend Integer a_times_b_mod_c(const Integer& x, const Integer& y,
- const Integer& m);
- friend Integer a_exp_b_mod_c(const Integer& x, const Integer& e,
- const Integer& m);
-
- static void Divide(Integer& r, Integer& q, const Integer& a,
- const Integer& d);
- static void Divide(word& r, Integer& q, const Integer& a, word d);
- static void DivideByPowerOf2(Integer& r, Integer& q, const Integer& a,
- unsigned int n);
- static Integer Gcd(const Integer& a, const Integer& n);
-
- Integer InverseMod(const Integer& n) const;
- word InverseMod(word n) const;
-
-private:
- friend class ModularArithmetic;
- friend class MontgomeryRepresentation;
-
- Integer(word value, unsigned int length);
- int PositiveCompare(const Integer& t) const;
-
- friend void PositiveAdd(Integer& sum, const Integer& a, const Integer& b);
- friend void PositiveSubtract(Integer& diff, const Integer& a,
- const Integer& b);
- friend void PositiveMultiply(Integer& product, const Integer& a,
- const Integer& b);
- friend void PositiveDivide(Integer& remainder, Integer& quotient, const
- Integer& dividend, const Integer& divisor);
- AlignedWordBlock reg_;
- Sign sign_;
-};
-
-inline bool operator==(const Integer& a, const Integer& b)
- {return a.Compare(b)==0;}
-inline bool operator!=(const Integer& a, const Integer& b)
- {return a.Compare(b)!=0;}
-inline bool operator> (const Integer& a, const Integer& b)
- {return a.Compare(b)> 0;}
-inline bool operator>=(const Integer& a, const Integer& b)
- {return a.Compare(b)>=0;}
-inline bool operator< (const Integer& a, const Integer& b)
- {return a.Compare(b)< 0;}
-inline bool operator<=(const Integer& a, const Integer& b)
- {return a.Compare(b)<=0;}
-
-inline Integer operator+(const Integer &a, const Integer &b)
- {return a.Plus(b);}
-inline Integer operator-(const Integer &a, const Integer &b)
- {return a.Minus(b);}
-inline Integer operator*(const Integer &a, const Integer &b)
- {return a.Times(b);}
-inline Integer operator/(const Integer &a, const Integer &b)
- {return a.DividedBy(b);}
-inline Integer operator%(const Integer &a, const Integer &b)
- {return a.Modulo(b);}
-inline Integer operator/(const Integer &a, word b) {return a.DividedBy(b);}
-inline word operator%(const Integer &a, word b) {return a.Modulo(b);}
-
-inline void swap(Integer &a, Integer &b)
-{
- a.Swap(b);
-}
-
-
-Integer CRT(const Integer& xp, const Integer& p, const Integer& xq,
- const Integer& q, const Integer& u);
-
-inline Integer ModularExponentiation(const Integer& a, const Integer& e,
- const Integer& m)
-{
- return a_exp_b_mod_c(a, e, m);
-}
-
-Integer ModularRoot(const Integer& a, const Integer& dp, const Integer& dq,
- const Integer& p, const Integer& q, const Integer& u);
-
-
-
-} // namespace
-
-#endif // TAO_CRYPT_INTEGER_HPP
diff --git a/mysql/extra/yassl/taocrypt/include/kernelc.hpp b/mysql/extra/yassl/taocrypt/include/kernelc.hpp
deleted file mode 100644
index 0840b3f..0000000
--- a/mysql/extra/yassl/taocrypt/include/kernelc.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* kernelc.hpp provides support for C std lib when compiled in kernel mode
-*/
-
-#ifndef TAOCRYPT_KERNELC_HPP
-#define TAOCRYPT_KERNELC_HPP
-
-#include <linux/types.h> // get right size_t
-
-// system functions that c++ doesn't like headers for
-
-extern "C" void* memcpy(void*, const void*, size_t);
-extern "C" void* memset(void*, int, size_t);
-extern "C" void printk(char *fmt, ...);
-
-
-#endif // TAOCRYPT_KERNELC_HPP
diff --git a/mysql/extra/yassl/taocrypt/include/md2.hpp b/mysql/extra/yassl/taocrypt/include/md2.hpp
deleted file mode 100644
index 5c2b141..0000000
--- a/mysql/extra/yassl/taocrypt/include/md2.hpp
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* md2.hpp provides MD2 digest support, see RFC 1319
-*/
-
-#ifndef TAO_CRYPT_MD2_HPP
-#define TAO_CRYPT_MD2_HPP
-
-
-#include "hash.hpp"
-#include "block.hpp"
-
-
-namespace TaoCrypt {
-
-
-// MD2 digest
-class MD2 : public HASH {
-public:
- enum { BLOCK_SIZE = 16, DIGEST_SIZE = 16, PAD_SIZE = 16, X_SIZE = 48 };
- MD2();
-
- word32 getBlockSize() const { return BLOCK_SIZE; }
- word32 getDigestSize() const { return DIGEST_SIZE; }
-
- void Update(const byte*, word32);
- void Final(byte*);
-
- void Init();
- void Swap(MD2&);
-private:
- ByteBlock X_, C_, buffer_;
- word32 count_; // bytes % PAD_SIZE
-
- MD2(const MD2&);
- MD2& operator=(const MD2&);
-};
-
-inline void swap(MD2& a, MD2& b)
-{
- a.Swap(b);
-}
-
-
-} // namespace
-
-#endif // TAO_CRYPT_MD2_HPP
-
diff --git a/mysql/extra/yassl/taocrypt/include/md4.hpp b/mysql/extra/yassl/taocrypt/include/md4.hpp
deleted file mode 100644
index 424c744..0000000
--- a/mysql/extra/yassl/taocrypt/include/md4.hpp
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* md4.hpp provides MD4 digest support
- * WANRING: MD4 is considered insecure, only use if you have to, e.g., yaSSL
- * libcurl supports needs this for NTLM authentication
-*/
-
-#ifndef TAO_CRYPT_MD4_HPP
-#define TAO_CRYPT_MD4_HPP
-
-#include "hash.hpp"
-
-namespace TaoCrypt {
-
-
-// MD4 digest
-class MD4 : public HASHwithTransform {
-public:
- enum { BLOCK_SIZE = 64, DIGEST_SIZE = 16, PAD_SIZE = 56,
- TAO_BYTE_ORDER = LittleEndianOrder }; // in Bytes
- MD4() : HASHwithTransform(DIGEST_SIZE / sizeof(word32), BLOCK_SIZE)
- { Init(); }
- ByteOrder getByteOrder() const { return ByteOrder(TAO_BYTE_ORDER); }
- word32 getBlockSize() const { return BLOCK_SIZE; }
- word32 getDigestSize() const { return DIGEST_SIZE; }
- word32 getPadSize() const { return PAD_SIZE; }
-
- MD4(const MD4&);
- MD4& operator= (const MD4&);
-
- void Init();
- void Swap(MD4&);
-private:
- void Transform();
-};
-
-inline void swap(MD4& a, MD4& b)
-{
- a.Swap(b);
-}
-
-
-} // namespace
-
-#endif // TAO_CRYPT_MD4_HPP
-
diff --git a/mysql/extra/yassl/taocrypt/include/md5.hpp b/mysql/extra/yassl/taocrypt/include/md5.hpp
deleted file mode 100644
index fce37bd..0000000
--- a/mysql/extra/yassl/taocrypt/include/md5.hpp
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* md5.hpp provides MD5 digest support, see RFC 1321
-*/
-
-#ifndef TAO_CRYPT_MD5_HPP
-#define TAO_CRYPT_MD5_HPP
-
-#include "hash.hpp"
-
-
-#if defined(TAOCRYPT_X86ASM_AVAILABLE) && defined(TAO_ASM)
- #define DO_MD5_ASM
-#endif
-
-namespace TaoCrypt {
-
-
-// MD5 digest
-class MD5 : public HASHwithTransform {
-public:
- enum { BLOCK_SIZE = 64, DIGEST_SIZE = 16, PAD_SIZE = 56,
- TAO_BYTE_ORDER = LittleEndianOrder }; // in Bytes
- MD5() : HASHwithTransform(DIGEST_SIZE / sizeof(word32), BLOCK_SIZE)
- { Init(); }
- ByteOrder getByteOrder() const { return ByteOrder(TAO_BYTE_ORDER); }
- word32 getBlockSize() const { return BLOCK_SIZE; }
- word32 getDigestSize() const { return DIGEST_SIZE; }
- word32 getPadSize() const { return PAD_SIZE; }
-
- MD5(const MD5&);
- MD5& operator= (const MD5&);
-
-#ifdef DO_MD5_ASM
- void Update(const byte*, word32);
-#endif
-
- void Init();
- void Swap(MD5&);
-private:
- void Transform();
- void AsmTransform(const byte* data, word32 times);
-};
-
-inline void swap(MD5& a, MD5& b)
-{
- a.Swap(b);
-}
-
-
-} // namespace
-
-#endif // TAO_CRYPT_MD5_HPP
-
diff --git a/mysql/extra/yassl/taocrypt/include/misc.hpp b/mysql/extra/yassl/taocrypt/include/misc.hpp
deleted file mode 100644
index 18f13e7..0000000
--- a/mysql/extra/yassl/taocrypt/include/misc.hpp
+++ /dev/null
@@ -1,888 +0,0 @@
-/*
- Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* based on Wei Dai's misc.h from CryptoPP */
-
-#ifndef TAO_CRYPT_MISC_HPP
-#define TAO_CRYPT_MISC_HPP
-
-
-#if !defined(DO_TAOCRYPT_KERNEL_MODE)
- #include <stdlib.h>
- #include <string.h>
-#else
- #include "kernelc.hpp"
-#endif
-
-#include "types.hpp"
-#include "type_traits.hpp"
-
-
-
-namespace TaoCrypt {
-
-
-// Delete static singleton holders
-void CleanUp();
-
-
-#ifdef YASSL_PURE_C
-
- // library allocation
- struct new_t {}; // TaoCrypt New type
- extern new_t tc; // pass in parameter
-
- } // namespace TaoCrypt
-
- void* operator new (size_t, TaoCrypt::new_t);
- void* operator new[](size_t, TaoCrypt::new_t);
-
- void operator delete (void*, TaoCrypt::new_t);
- void operator delete[](void*, TaoCrypt::new_t);
-
-
- namespace TaoCrypt {
-
- template<typename T>
- void tcDelete(T* ptr)
- {
- if (ptr) ptr->~T();
- ::operator delete(ptr, TaoCrypt::tc);
- }
-
- template<typename T>
- void tcArrayDelete(T* ptr)
- {
- // can't do array placement destruction since not tracking size in
- // allocation, only allow builtins to use array placement since they
- // don't need destructors called
- typedef char builtin[IsFundamentalType<T>::Yes ? 1 : -1];
- (void)sizeof(builtin);
-
- ::operator delete[](ptr, TaoCrypt::tc);
- }
-
- #define NEW_TC new (TaoCrypt::tc)
-
-
- // to resolve compiler generated operator delete on base classes with
- // virtual destructors (when on stack)
- class virtual_base {
- public:
- static void operator delete(void*) { }
- };
-
-#else // YASSL_PURE_C
-
-
- template<typename T>
- void tcDelete(T* ptr)
- {
- delete ptr;
- }
-
- template<typename T>
- void tcArrayDelete(T* ptr)
- {
- delete[] ptr;
- }
-
- #define NEW_TC new
-
- class virtual_base {};
-
-
-#endif // YASSL_PURE_C
-
-
-#if defined(_MSC_VER) || defined(__BCPLUSPLUS__)
- #define INTEL_INTRINSICS
- #define FAST_ROTATE
-#elif defined(__MWERKS__) && TARGET_CPU_PPC
- #define PPC_INTRINSICS
- #define FAST_ROTATE
-#elif defined(__GNUC__) && defined(__i386__)
- // GCC does peephole optimizations which should result in using rotate
- // instructions
- #define FAST_ROTATE
-#endif
-
-
-// no gas on these systems ?, disable for now
-#if defined(__sun__)
- #undef TAOCRYPT_DISABLE_X86ASM
- #define TAOCRYPT_DISABLE_X86ASM
-#endif
-
-// icc problem with -03 and integer, disable for now
-#if defined(__INTEL_COMPILER)
- #undef TAOCRYPT_DISABLE_X86ASM
- #define TAOCRYPT_DISABLE_X86ASM
-#endif
-
-// indpedent of build system, unless ia32 asm is enabled disable it
-#if !defined(TAOCRYPT_ENABLE_X86ASM)
- #undef TAOCRYPT_DISABLE_X86ASM
- #define TAOCRYPT_DISABLE_X86ASM
-#endif
-
-// Turn on ia32 ASM for Big Integer
-// CodeWarrior defines _MSC_VER
-#if !defined(TAOCRYPT_DISABLE_X86ASM) && ((defined(_MSC_VER) && \
- !defined(__MWERKS__) && defined(_M_IX86)) || \
- (defined(__GNUC__) && defined(__i386__)))
- #define TAOCRYPT_X86ASM_AVAILABLE
-#endif
-
-
-#ifdef TAOCRYPT_X86ASM_AVAILABLE
- bool HaveCpuId();
- bool IsPentium();
- void CpuId(word32 input, word32 *output);
-
- extern bool isMMX;
-#endif
-
-
-
-
-// Turn on ia32 ASM for Ciphers and Message Digests
-// Seperate define since these are more complex, use member offsets
-// and user may want to turn off while leaving Big Integer optos on
-#if defined(TAOCRYPT_X86ASM_AVAILABLE) && !defined(DISABLE_TAO_ASM)
- #define TAO_ASM
-#endif
-
-
-// Extra word in older vtable implementations, for ASM member offset
-#if defined(__GNUC__) && __GNUC__ < 3
- #define OLD_GCC_OFFSET
-#endif
-
-
-#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
-# define TAOCRYPT_MALLOC_ALIGNMENT_IS_16
-#endif
-
-#if defined(__linux__) || defined(__sun__)
-# define TAOCRYPT_MEMALIGN_AVAILABLE
-#endif
-
-
-#if defined(_WIN32)
- #define TAOCRYPT_WIN32_AVAILABLE
-#endif
-
-#if defined(__unix__) || defined(__MACH__)
- #define TAOCRYPT_UNIX_AVAILABLE
-#endif
-
-
-// VC60 workaround: it doesn't allow typename in some places
-#if defined(_MSC_VER) && (_MSC_VER < 1300)
- #define CPP_TYPENAME
-#else
- #define CPP_TYPENAME typename
-#endif
-
-
-#ifdef _MSC_VER
- #define TAOCRYPT_NO_VTABLE __declspec(novtable)
-#else
- #define TAOCRYPT_NO_VTABLE
-#endif
-
-
-#ifdef USE_SYS_STL
- // use system STL
- #define STL_NAMESPACE std
-#else
- // use mySTL
- #define STL_NAMESPACE mySTL
-#endif
-
-
-// ***************** DLL related ********************
-
-#ifdef TAOCRYPT_WIN32_AVAILABLE
-
-#ifdef TAOCRYPT_EXPORTS
- #define TAOCRYPT_IS_DLL
- #define TAOCRYPT_DLL __declspec(dllexport)
-#elif defined(TAOCRYPT_IMPORTS)
- #define TAOCRYPT_IS_DLL
- #define TAOCRYPT_DLL __declspec(dllimport)
-#else
- #define TAOCRYPT_DLL
-#endif // EXPORTS
-
-#define TAOCRYPT_API __stdcall
-#define TAOCRYPT_CDECL __cdecl
-
-#else // TAOCRYPT_WIN32_AVAILABLE
-
-#define TAOCRYPT_DLL
-#define TAOCRYPT_API
-#define TAOCRYPT_CDECL
-
-#endif // TAOCRYPT_WIN32_AVAILABLE
-
-
-// ****************** tempalte stuff *******************
-
-
-#if defined(TAOCRYPT_MANUALLY_INSTANTIATE_TEMPLATES) && \
- !defined(TAOCRYPT_IMPORTS)
- #define TAOCRYPT_DLL_TEMPLATE_CLASS template class TAOCRYPT_DLL
-#elif defined(__MWERKS__)
- #define TAOCRYPT_DLL_TEMPLATE_CLASS extern class TAOCRYPT_DLL
-#else
- #define TAOCRYPT_DLL_TEMPLATE_CLASS extern template class TAOCRYPT_DLL
-#endif
-
-
-#if defined(TAOCRYPT_MANUALLY_INSTANTIATE_TEMPLATES) && \
- !defined(TAOCRYPT_EXPORTS)
- #define TAOCRYPT_STATIC_TEMPLATE_CLASS template class
-#elif defined(__MWERKS__)
- #define TAOCRYPT_STATIC_TEMPLATE_CLASS extern class
-#else
- #define TAOCRYPT_STATIC_TEMPLATE_CLASS extern template class
-#endif
-
-
-// ************** compile-time assertion ***************
-
-template <bool b>
-struct CompileAssert
-{
- static char dummy[2*b-1];
-};
-
-#define TAOCRYPT_COMPILE_ASSERT(assertion) \
- TAOCRYPT_COMPILE_ASSERT_INSTANCE(assertion, __LINE__)
-
-#if defined(TAOCRYPT_EXPORTS) || defined(TAOCRYPT_IMPORTS)
- #define TAOCRYPT_COMPILE_ASSERT_INSTANCE(assertion, instance)
-#else
- #define TAOCRYPT_COMPILE_ASSERT_INSTANCE(assertion, instance) \
- (void)sizeof(CompileAssert<(assertion)>)
-#endif
-
-#define TAOCRYPT_ASSERT_JOIN(X, Y) TAOCRYPT_DO_ASSERT_JOIN(X, Y)
-
-#define TAOCRYPT_DO_ASSERT_JOIN(X, Y) X##Y
-
-
-/*************** helpers *****************************/
-
-inline unsigned int BitsToBytes(unsigned int bitCount)
-{
- return ((bitCount+7)/(8));
-}
-
-inline unsigned int BytesToWords(unsigned int byteCount)
-{
- return ((byteCount+WORD_SIZE-1)/WORD_SIZE);
-}
-
-inline unsigned int BitsToWords(unsigned int bitCount)
-{
- return ((bitCount+WORD_BITS-1)/(WORD_BITS));
-}
-
-inline void CopyWords(word* r, const word* a, word32 n)
-{
- for (word32 i = 0; i < n; i++)
- r[i] = a[i];
-}
-
-inline unsigned int CountWords(const word* X, unsigned int N)
-{
- while (N && X[N-1]==0)
- N--;
- return N;
-}
-
-inline void SetWords(word* r, word a, unsigned int n)
-{
- for (unsigned int i=0; i<n; i++)
- r[i] = a;
-}
-
-enum ByteOrder { LittleEndianOrder = 0, BigEndianOrder = 1 };
-enum CipherDir {ENCRYPTION, DECRYPTION};
-
-inline CipherDir ReverseDir(CipherDir dir)
-{
- return (dir == ENCRYPTION) ? DECRYPTION : ENCRYPTION;
-}
-
-template <typename ENUM_TYPE, int VALUE>
-struct EnumToType
-{
- static ENUM_TYPE ToEnum() { return (ENUM_TYPE)VALUE; }
-};
-
-typedef EnumToType<ByteOrder, LittleEndianOrder> LittleEndian;
-typedef EnumToType<ByteOrder, BigEndianOrder> BigEndian;
-
-
-#ifndef BIG_ENDIAN_ORDER
- typedef LittleEndian HostByteOrder;
-#else
- typedef BigEndian HostByteOrder;
-#endif
-
-inline ByteOrder GetHostByteOrder()
-{
- return HostByteOrder::ToEnum();
-}
-
-inline bool HostByteOrderIs(ByteOrder order)
-{
- return order == GetHostByteOrder();
-}
-
-
-void xorbuf(byte*, const byte*, unsigned int);
-
-
-template <class T>
-inline bool IsPowerOf2(T n)
-{
- return n > 0 && (n & (n-1)) == 0;
-}
-
-template <class T1, class T2>
-inline T2 ModPowerOf2(T1 a, T2 b)
-{
- return T2(a) & (b-1);
-}
-
-template <class T>
-inline T RoundDownToMultipleOf(T n, T m)
-{
- return n - (IsPowerOf2(m) ? ModPowerOf2(n, m) : (n%m));
-}
-
-template <class T>
-inline T RoundUpToMultipleOf(T n, T m)
-{
- return RoundDownToMultipleOf(n+m-1, m);
-}
-
-template <class T>
-inline unsigned int GetAlignment(T* dummy = 0) // VC60 workaround
-{
-#if (_MSC_VER >= 1300)
- return __alignof(T);
-#elif defined(__GNUC__)
- return __alignof__(T);
-#else
- return sizeof(T);
-#endif
-}
-
-inline bool IsAlignedOn(const void* p, unsigned int alignment)
-{
- return IsPowerOf2(alignment) ? ModPowerOf2((size_t)p, alignment) == 0
- : (size_t)p % alignment == 0;
-}
-
-template <class T>
-inline bool IsAligned(const void* p, T* dummy = 0) // VC60 workaround
-{
- return IsAlignedOn(p, GetAlignment<T>());
-}
-
-
-template <class T> inline T rotlFixed(T x, unsigned int y)
-{
- return (x<<y) | (x>>(sizeof(T)*8-y));
-}
-
-template <class T> inline T rotrFixed(T x, unsigned int y)
-{
- return (x>>y) | (x<<(sizeof(T)*8-y));
-}
-
-#ifdef INTEL_INTRINSICS
-
-#pragma intrinsic(_lrotl, _lrotr)
-
-template<> inline word32 rotlFixed(word32 x, word32 y)
-{
- return y ? _lrotl(x, y) : x;
-}
-
-template<> inline word32 rotrFixed(word32 x, word32 y)
-{
- return y ? _lrotr(x, y) : x;
-}
-
-#endif // INTEL_INTRINSICS
-
-#ifdef min
-#undef min
-#endif
-
-
-template <class T>
-inline const T& min(const T& a, const T& b)
-{
- return a < b ? a : b;
-}
-
-
-inline word32 ByteReverse(word32 value)
-{
-#ifdef PPC_INTRINSICS
- // PPC: load reverse indexed instruction
- return (word32)__lwbrx(&value,0);
-#elif defined(FAST_ROTATE)
- // 5 instructions with rotate instruction, 9 without
- return (rotrFixed(value, 8U) & 0xff00ff00) |
- (rotlFixed(value, 8U) & 0x00ff00ff);
-#else
- // 6 instructions with rotate instruction, 8 without
- value = ((value & 0xFF00FF00) >> 8) | ((value & 0x00FF00FF) << 8);
- return rotlFixed(value, 16U);
-#endif
-}
-
-
-#ifdef WORD64_AVAILABLE
-
-inline word64 ByteReverse(word64 value)
-{
-#ifdef TAOCRYPT_SLOW_WORD64
- return (word64(ByteReverse(word32(value))) << 32) |
- ByteReverse(word32(value>>32));
-#else
- value = ((value & W64LIT(0xFF00FF00FF00FF00)) >> 8) |
- ((value & W64LIT(0x00FF00FF00FF00FF)) << 8);
- value = ((value & W64LIT(0xFFFF0000FFFF0000)) >> 16) |
- ((value & W64LIT(0x0000FFFF0000FFFF)) << 16);
- return rotlFixed(value, 32U);
-#endif
-}
-
-#endif // WORD64_AVAILABLE
-
-
-template <typename T>
-inline void ByteReverse(T* out, const T* in, word32 byteCount)
-{
- word32 count = byteCount/sizeof(T);
- for (word32 i=0; i<count; i++)
- out[i] = ByteReverse(in[i]);
-}
-
-inline void ByteReverse(byte* out, const byte* in, word32 byteCount)
-{
- word32* o = reinterpret_cast<word32*>(out);
- const word32* i = reinterpret_cast<const word32*>(in);
- ByteReverse(o, i, byteCount);
-}
-
-
-template <class T>
-inline T ByteReverseIf(T value, ByteOrder order)
-{
- return HostByteOrderIs(order) ? value : ByteReverse(value);
-}
-
-
-template <typename T>
-inline void ByteReverseIf(T* out, const T* in, word32 bc, ByteOrder order)
-{
- if (!HostByteOrderIs(order))
- ByteReverse(out, in, bc);
- else if (out != in)
- memcpy(out, in, bc);
-}
-
-
-
-// do Asm Reverse is host is Little and x86asm
-#ifdef LITTLE_ENDIAN_ORDER
- #ifdef TAOCRYPT_X86ASM_AVAILABLE
- #define LittleReverse AsmReverse
- #else
- #define LittleReverse ByteReverse
- #endif
-#else
- #define LittleReverse
-#endif
-
-
-// do Asm Reverse is host is Big and x86asm
-#ifdef BIG_ENDIAN_ORDER
- #ifdef TAOCRYPT_X86ASM_AVAILABLE
- #define BigReverse AsmReverse
- #else
- #define BigReverse ByteReverse
- #endif
-#else
- #define BigReverse
-#endif
-
-
-#ifdef TAOCRYPT_X86ASM_AVAILABLE
-
- // faster than rotate, use bswap
-
- inline word32 AsmReverse(word32 wd)
- {
- #ifdef __GNUC__
- __asm__
- (
- "bswap %1"
- : "=r"(wd)
- : "0"(wd)
- );
- #else
- __asm
- {
- mov eax, wd
- bswap eax
- mov wd, eax
- }
- #endif
- return wd;
- }
-
-#endif
-
-
-template <class T>
-inline void GetUserKey(ByteOrder order, T* out, word32 outlen, const byte* in,
- word32 inlen)
-{
- const unsigned int U = sizeof(T);
- memcpy(out, in, inlen);
- memset((byte *)out+inlen, 0, outlen*U-inlen);
- ByteReverseIf(out, out, RoundUpToMultipleOf(inlen, U), order);
-}
-
-
-#ifdef _MSC_VER
- // disable conversion warning
- // 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy
- #pragma warning(disable:4244 4996)
-#endif
-
-
-inline byte UnalignedGetWordNonTemplate(ByteOrder order, const byte *block,
- byte*)
-{
- return block[0];
-}
-
-inline word16 UnalignedGetWordNonTemplate(ByteOrder order, const byte* block,
- word16*)
-{
- return (order == BigEndianOrder)
- ? block[1] | (block[0] << 8)
- : block[0] | (block[1] << 8);
-}
-
-inline word32 UnalignedGetWordNonTemplate(ByteOrder order, const byte* block,
- word32*)
-{
- return (order == BigEndianOrder)
- ? word32(block[3]) | (word32(block[2]) << 8) | (word32(block[1]) << 16)
- | (word32(block[0]) << 24)
- : word32(block[0]) | (word32(block[1]) << 8) | (word32(block[2]) << 16)
- | (word32(block[3]) << 24);
-}
-
-template <class T>
-inline T UnalignedGetWord(ByteOrder order, const byte *block, T* dummy = 0)
-{
- return UnalignedGetWordNonTemplate(order, block, dummy);
-}
-
-inline void UnalignedPutWord(ByteOrder order, byte *block, byte value,
- const byte *xorBlock = 0)
-{
- block[0] = xorBlock ? (value ^ xorBlock[0]) : value;
-}
-
-#define GETBYTE(x, y) (unsigned int)byte((x)>>(8*(y)))
-
-inline void UnalignedPutWord(ByteOrder order, byte *block, word16 value,
- const byte *xorBlock = 0)
-{
- if (order == BigEndianOrder)
- {
- block[0] = GETBYTE(value, 1);
- block[1] = GETBYTE(value, 0);
- }
- else
- {
- block[0] = GETBYTE(value, 0);
- block[1] = GETBYTE(value, 1);
- }
-
- if (xorBlock)
- {
- block[0] ^= xorBlock[0];
- block[1] ^= xorBlock[1];
- }
-}
-
-inline void UnalignedPutWord(ByteOrder order, byte* block, word32 value,
- const byte* xorBlock = 0)
-{
- if (order == BigEndianOrder)
- {
- block[0] = GETBYTE(value, 3);
- block[1] = GETBYTE(value, 2);
- block[2] = GETBYTE(value, 1);
- block[3] = GETBYTE(value, 0);
- }
- else
- {
- block[0] = GETBYTE(value, 0);
- block[1] = GETBYTE(value, 1);
- block[2] = GETBYTE(value, 2);
- block[3] = GETBYTE(value, 3);
- }
-
- if (xorBlock)
- {
- block[0] ^= xorBlock[0];
- block[1] ^= xorBlock[1];
- block[2] ^= xorBlock[2];
- block[3] ^= xorBlock[3];
- }
-}
-
-
-template <class T>
-inline T GetWord(bool assumeAligned, ByteOrder order, const byte *block)
-{
- if (assumeAligned)
- return ByteReverseIf(*reinterpret_cast<const T *>(block), order);
- else
- return UnalignedGetWord<T>(order, block);
-}
-
-template <class T>
-inline void GetWord(bool assumeAligned, ByteOrder order, T &result,
- const byte *block)
-{
- result = GetWord<T>(assumeAligned, order, block);
-}
-
-template <class T>
-inline void PutWord(bool assumeAligned, ByteOrder order, byte* block, T value,
- const byte *xorBlock = 0)
-{
- if (assumeAligned)
- {
- if (xorBlock)
- *reinterpret_cast<T *>(block) = ByteReverseIf(value, order)
- ^ *reinterpret_cast<const T *>(xorBlock);
- else
- *reinterpret_cast<T *>(block) = ByteReverseIf(value, order);
- }
- else
- UnalignedPutWord(order, block, value, xorBlock);
-}
-
-template <class T, class B, bool A=true>
-class GetBlock
-{
-public:
- GetBlock(const void *block)
- : m_block((const byte *)block) {}
-
- template <class U>
- inline GetBlock<T, B, A> & operator()(U &x)
- {
- TAOCRYPT_COMPILE_ASSERT(sizeof(U) >= sizeof(T));
- x = GetWord<T>(A, B::ToEnum(), m_block);
- m_block += sizeof(T);
- return *this;
- }
-
-private:
- const byte *m_block;
-};
-
-template <class T, class B, bool A = true>
-class PutBlock
-{
-public:
- PutBlock(const void *xorBlock, void *block)
- : m_xorBlock((const byte *)xorBlock), m_block((byte *)block) {}
-
- template <class U>
- inline PutBlock<T, B, A> & operator()(U x)
- {
- PutWord(A, B::ToEnum(), m_block, (T)x, m_xorBlock);
- m_block += sizeof(T);
- if (m_xorBlock)
- m_xorBlock += sizeof(T);
- return *this;
- }
-
-private:
- const byte *m_xorBlock;
- byte *m_block;
-};
-
-/*
- XXX MYSQL: Setting A (assumeAligned) to false,
- keeping it true might trigger segfault on SPARC.
-*/
-template <class T, class B, bool A= false>
-struct BlockGetAndPut
-{
- // function needed because of C++ grammatical ambiguity between
- // expression-statements and declarations
- static inline GetBlock<T, B, A> Get(const void *block)
- {return GetBlock<T, B, A>(block);}
- typedef PutBlock<T, B, A> Put;
-};
-
-
-
-template <bool overflow> struct SafeShifter;
-
-template<> struct SafeShifter<true>
-{
- template <class T>
- static inline T RightShift(T value, unsigned int bits)
- {
- return 0;
- }
-
- template <class T>
- static inline T LeftShift(T value, unsigned int bits)
- {
- return 0;
- }
-};
-
-template<> struct SafeShifter<false>
-{
- template <class T>
- static inline T RightShift(T value, unsigned int bits)
- {
- return value >> bits;
- }
-
- template <class T>
- static inline T LeftShift(T value, unsigned int bits)
- {
- return value << bits;
- }
-};
-
-template <unsigned int bits, class T>
-inline T SafeRightShift(T value)
-{
- return SafeShifter<(bits>=(8*sizeof(T)))>::RightShift(value, bits);
-}
-
-template <unsigned int bits, class T>
-inline T SafeLeftShift(T value)
-{
- return SafeShifter<(bits>=(8*sizeof(T)))>::LeftShift(value, bits);
-}
-
-
-inline
-word ShiftWordsLeftByBits(word* r, unsigned int n, unsigned int shiftBits)
-{
- word u, carry=0;
- if (shiftBits)
- for (unsigned int i=0; i<n; i++)
- {
- u = r[i];
- r[i] = (u << shiftBits) | carry;
- carry = u >> (WORD_BITS-shiftBits);
- }
- return carry;
-}
-
-
-inline
-word ShiftWordsRightByBits(word* r, unsigned int n, unsigned int shiftBits)
-{
- word u, carry=0;
- if (shiftBits)
- for (int i=n-1; i>=0; i--)
- {
- u = r[i];
- r[i] = (u >> shiftBits) | carry;
- carry = u << (WORD_BITS-shiftBits);
- }
- return carry;
-}
-
-
-inline
-void ShiftWordsLeftByWords(word* r, unsigned int n, unsigned int shiftWords)
-{
- shiftWords = min(shiftWords, n);
- if (shiftWords)
- {
- for (unsigned int i=n-1; i>=shiftWords; i--)
- r[i] = r[i-shiftWords];
- SetWords(r, 0, shiftWords);
- }
-}
-
-
-inline
-void ShiftWordsRightByWords(word* r, unsigned int n, unsigned int shiftWords)
-{
- shiftWords = min(shiftWords, n);
- if (shiftWords)
- {
- for (unsigned int i=0; i+shiftWords<n; i++)
- r[i] = r[i+shiftWords];
- SetWords(r+n-shiftWords, 0, shiftWords);
- }
-}
-
-
-template <class T1, class T2>
-inline T1 SaturatingSubtract(T1 a, T2 b)
-{
- TAOCRYPT_COMPILE_ASSERT_INSTANCE(T1(-1)>0, 0); // T1 is unsigned type
- TAOCRYPT_COMPILE_ASSERT_INSTANCE(T2(-1)>0, 1); // T2 is unsigned type
- return T1((a > b) ? (a - b) : 0);
-}
-
-
-// declares
-unsigned int BytePrecision(word value);
-unsigned int BitPrecision(word);
-word Crop(word value, unsigned int size);
-
-
-
-} // namespace
-
-#endif // TAO_CRYPT_MISC_HPP
diff --git a/mysql/extra/yassl/taocrypt/include/modarith.hpp b/mysql/extra/yassl/taocrypt/include/modarith.hpp
deleted file mode 100644
index 5ac3f67..0000000
--- a/mysql/extra/yassl/taocrypt/include/modarith.hpp
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-
-/* based on Wei Dai's modarith.h from CryptoPP */
-
-
-#ifndef TAO_CRYPT_MODARITH_HPP
-#define TAO_CRYPT_MODARITH_HPP
-
-#include "misc.hpp"
-#include "algebra.hpp"
-
-namespace TaoCrypt {
-
-
-// ModularArithmetic
-class ModularArithmetic : public AbstractRing
-{
-public:
-
- typedef int RandomizationParameter;
- typedef Integer Element;
-
- ModularArithmetic(const Integer &modulus = Integer::One())
- : modulus(modulus), result((word)0, modulus.reg_.size()) {}
-
- ModularArithmetic(const ModularArithmetic &ma)
- : AbstractRing(),
- modulus(ma.modulus), result((word)0, modulus.reg_.size()) {}
-
- const Integer& GetModulus() const {return modulus;}
- void SetModulus(const Integer &newModulus)
- {
- modulus = newModulus;
- result.reg_.resize(modulus.reg_.size());
- }
-
- virtual bool IsMontgomeryRepresentation() const {return false;}
-
- virtual Integer ConvertIn(const Integer &a) const
- {return a%modulus;}
-
- virtual Integer ConvertOut(const Integer &a) const
- {return a;}
-
- const Integer& Half(const Integer &a) const;
-
- bool Equal(const Integer &a, const Integer &b) const
- {return a==b;}
-
- const Integer& Identity() const
- {return Integer::Zero();}
-
- const Integer& Add(const Integer &a, const Integer &b) const;
-
- Integer& Accumulate(Integer &a, const Integer &b) const;
-
- const Integer& Inverse(const Integer &a) const;
-
- const Integer& Subtract(const Integer &a, const Integer &b) const;
-
- Integer& Reduce(Integer &a, const Integer &b) const;
-
- const Integer& Double(const Integer &a) const
- {return Add(a, a);}
-
- const Integer& MultiplicativeIdentity() const
- {return Integer::One();}
-
- const Integer& Multiply(const Integer &a, const Integer &b) const
- {return result1 = a*b%modulus;}
-
- const Integer& Square(const Integer &a) const
- {return result1 = a.Squared()%modulus;}
-
- bool IsUnit(const Integer &a) const
- {return Integer::Gcd(a, modulus).IsUnit();}
-
- const Integer& MultiplicativeInverse(const Integer &a) const
- {return result1 = a.InverseMod(modulus);}
-
- const Integer& Divide(const Integer &a, const Integer &b) const
- {return Multiply(a, MultiplicativeInverse(b));}
-
- Integer CascadeExponentiate(const Integer &x, const Integer &e1,
- const Integer &y, const Integer &e2) const;
-
- void SimultaneousExponentiate(Element *results, const Element &base,
- const Integer *exponents, unsigned int exponentsCount) const;
-
- unsigned int MaxElementBitLength() const
- {return (modulus-1).BitCount();}
-
- unsigned int MaxElementByteLength() const
- {return (modulus-1).ByteCount();}
-
-
- static const RandomizationParameter DefaultRandomizationParameter;
-
-protected:
- Integer modulus;
- mutable Integer result, result1;
-
-};
-
-
-
-//! do modular arithmetics in Montgomery representation for increased speed
-class MontgomeryRepresentation : public ModularArithmetic
-{
-public:
- MontgomeryRepresentation(const Integer &modulus); // modulus must be odd
-
- bool IsMontgomeryRepresentation() const {return true;}
-
- Integer ConvertIn(const Integer &a) const
- {return (a<<(WORD_BITS*modulus.reg_.size()))%modulus;}
-
- Integer ConvertOut(const Integer &a) const;
-
- const Integer& MultiplicativeIdentity() const
- {return result1 = Integer::Power2(WORD_BITS*modulus.reg_.size())%modulus;}
-
- const Integer& Multiply(const Integer &a, const Integer &b) const;
-
- const Integer& Square(const Integer &a) const;
-
- const Integer& MultiplicativeInverse(const Integer &a) const;
-
- Integer CascadeExponentiate(const Integer &x, const Integer &e1,
- const Integer &y, const Integer &e2) const
- {return AbstractRing::CascadeExponentiate(x, e1, y, e2);}
-
- void SimultaneousExponentiate(Element *results, const Element &base,
- const Integer *exponents, unsigned int exponentsCount) const
- {AbstractRing::SimultaneousExponentiate(results, base,
- exponents, exponentsCount);}
-
-private:
- Integer u;
- mutable AlignedWordBlock workspace;
-};
-
-
-
-
-} // namespace
-
-#endif // TAO_CRYPT_MODARITH_HPP
diff --git a/mysql/extra/yassl/taocrypt/include/modes.hpp b/mysql/extra/yassl/taocrypt/include/modes.hpp
deleted file mode 100644
index bfe8c6e..0000000
--- a/mysql/extra/yassl/taocrypt/include/modes.hpp
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* modes.hpp provides ECB and CBC modes for block cipher encryption/decryption
-*/
-
-
-#ifndef TAO_CRYPT_MODES_HPP
-#define TAO_CRYPT_MODES_HPP
-
-#include "misc.hpp"
-
-namespace TaoCrypt {
-
-
-enum Mode { ECB, CBC };
-
-
-
-// BlockCipher abstraction
-template<CipherDir DIR, class T, Mode MODE>
-class BlockCipher {
-public:
- BlockCipher() : cipher_(DIR, MODE) {}
-
- void Process(byte* c, const byte* p, word32 sz)
- { cipher_.Process(c, p, sz); }
- void SetKey(const byte* k, word32 sz)
- { cipher_.SetKey(k, sz, DIR); }
- void SetKey(const byte* k, word32 sz, const byte* iv)
- { cipher_.SetKey(k, sz, DIR); cipher_.SetIV(iv); }
-private:
- T cipher_;
-
- BlockCipher(const BlockCipher&); // hide copy
- BlockCipher& operator=(const BlockCipher&); // and assign
-};
-
-
-// Mode Base for block ciphers, static size
-class Mode_BASE : public virtual_base {
-public:
- enum { MaxBlockSz = 16 };
-
- explicit Mode_BASE(int sz, CipherDir dir, Mode mode)
- : blockSz_(sz), reg_(reinterpret_cast<byte*>(r_)),
- tmp_(reinterpret_cast<byte*>(t_)), dir_(dir), mode_(mode)
- {}
- virtual ~Mode_BASE() {}
-
- virtual void Process(byte*, const byte*, word32);
-
- void SetIV(const byte* iv) { memcpy(reg_, iv, blockSz_); }
-protected:
- int blockSz_;
- byte* reg_;
- byte* tmp_;
-
- word32 r_[MaxBlockSz / sizeof(word32)]; // align reg_ on word32
- word32 t_[MaxBlockSz / sizeof(word32)]; // align tmp_ on word32
-
- CipherDir dir_;
- Mode mode_;
-
- void ECB_Process(byte*, const byte*, word32);
- void CBC_Encrypt(byte*, const byte*, word32);
- void CBC_Decrypt(byte*, const byte*, word32);
-
- Mode_BASE(const Mode_BASE&); // hide copy
- Mode_BASE& operator=(const Mode_BASE&); // and assign
-
-private:
- virtual void ProcessAndXorBlock(const byte*, const byte*, byte*) const = 0;
-};
-
-
-inline void Mode_BASE::Process(byte* out, const byte* in, word32 sz)
-{
- if (mode_ == ECB)
- ECB_Process(out, in, sz);
- else if (mode_ == CBC) {
- if (dir_ == ENCRYPTION)
- CBC_Encrypt(out, in, sz);
- else
- CBC_Decrypt(out, in, sz);
- }
-}
-
-
-// ECB Process blocks
-inline void Mode_BASE::ECB_Process(byte* out, const byte* in, word32 sz)
-{
- word32 blocks = sz / blockSz_;
-
- while (blocks--) {
- ProcessAndXorBlock(in, 0, out);
- out += blockSz_;
- in += blockSz_;
- }
-}
-
-
-// CBC Encrypt
-inline void Mode_BASE::CBC_Encrypt(byte* out, const byte* in, word32 sz)
-{
- word32 blocks = sz / blockSz_;
-
- while (blocks--) {
- xorbuf(reg_, in, blockSz_);
- ProcessAndXorBlock(reg_, 0, reg_);
- memcpy(out, reg_, blockSz_);
- out += blockSz_;
- in += blockSz_;
- }
-}
-
-
-// CBC Decrypt
-inline void Mode_BASE::CBC_Decrypt(byte* out, const byte* in, word32 sz)
-{
- word32 blocks = sz / blockSz_;
- byte hold[MaxBlockSz];
-
- while (blocks--) {
- memcpy(tmp_, in, blockSz_);
- ProcessAndXorBlock(tmp_, 0, out);
- xorbuf(out, reg_, blockSz_);
- memcpy(hold, reg_, blockSz_); // swap reg_ and tmp_
- memcpy(reg_, tmp_, blockSz_);
- memcpy(tmp_, hold, blockSz_);
- out += blockSz_;
- in += blockSz_;
- }
-}
-
-
-} // namespace
-
-#endif // TAO_CRYPT_MODES_HPP
diff --git a/mysql/extra/yassl/taocrypt/include/pwdbased.hpp b/mysql/extra/yassl/taocrypt/include/pwdbased.hpp
deleted file mode 100644
index cf4dff5..0000000
--- a/mysql/extra/yassl/taocrypt/include/pwdbased.hpp
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-
-/* pwdbased.hpp defines PBKDF2 from PKCS #5
-*/
-
-
-#ifndef TAO_CRYPT_PWDBASED_HPP
-#define TAO_CRYPT_PWDBASED_HPP
-
-#include <string.h>
-#include "misc.hpp"
-#include "block.hpp"
-#include "hmac.hpp"
-
-namespace TaoCrypt {
-
-
-// From PKCS #5, T must be type suitable for HMAC<T>
-template <class T>
-class PBKDF2_HMAC {
-public:
- word32 MaxDerivedKeyLength() const { return 0xFFFFFFFFU;} // avoid overflow
-
- word32 DeriveKey(byte* derived, word32 dLen, const byte* pwd, word32 pLen,
- const byte* salt, word32 sLen, word32 iterations) const;
-};
-
-
-
-template <class T>
-word32 PBKDF2_HMAC<T>::DeriveKey(byte* derived, word32 dLen, const byte* pwd,
- word32 pLen, const byte* salt, word32 sLen,
- word32 iterations) const
-{
- if (dLen > MaxDerivedKeyLength())
- return 0;
-
- ByteBlock buffer(T::DIGEST_SIZE);
- HMAC<T> hmac;
-
- hmac.SetKey(pwd, pLen);
-
- word32 i = 1;
-
- while (dLen > 0) {
- hmac.Update(salt, sLen);
- word32 j;
- for (j = 0; j < 4; j++) {
- byte b = i >> ((3-j)*8);
- hmac.Update(&b, 1);
- }
- hmac.Final(buffer.get_buffer());
-
- word32 segmentLen = min(dLen, buffer.size());
- memcpy(derived, buffer.get_buffer(), segmentLen);
-
- for (j = 1; j < iterations; j++) {
- hmac.Update(buffer.get_buffer(), buffer.size());
- hmac.Final(buffer.get_buffer());
- xorbuf(derived, buffer.get_buffer(), segmentLen);
- }
- derived += segmentLen;
- dLen -= segmentLen;
- i++;
- }
- return iterations;
-}
-
-
-
-
-} // naemspace
-
-#endif // TAO_CRYPT_PWDBASED_HPP
diff --git a/mysql/extra/yassl/taocrypt/include/rabbit.hpp b/mysql/extra/yassl/taocrypt/include/rabbit.hpp
deleted file mode 100644
index d3ec947..0000000
--- a/mysql/extra/yassl/taocrypt/include/rabbit.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* rabbit.hpp defines Rabbit
-*/
-
-
-#ifndef TAO_CRYPT_RABBIT_HPP
-#define TAO_CRYPT_RABBIT_HPP
-
-#include "misc.hpp"
-
-namespace TaoCrypt {
-
-
-// Rabbit encryption and decryption
-class Rabbit {
-public:
-
- typedef Rabbit Encryption;
- typedef Rabbit Decryption;
-
- enum RabbitCtx { Master = 0, Work = 1 };
-
- Rabbit() {}
-
- void Process(byte*, const byte*, word32);
- void SetKey(const byte*, const byte*);
-private:
- struct Ctx {
- word32 x[8];
- word32 c[8];
- word32 carry;
- };
-
- Ctx masterCtx_;
- Ctx workCtx_;
-
- void NextState(RabbitCtx);
- void SetIV(const byte*);
-
- Rabbit(const Rabbit&); // hide copy
- const Rabbit operator=(const Rabbit&); // and assign
-};
-
-} // namespace
-
-
-#endif // TAO_CRYPT_RABBIT_HPP
-
diff --git a/mysql/extra/yassl/taocrypt/include/random.hpp b/mysql/extra/yassl/taocrypt/include/random.hpp
deleted file mode 100644
index 70c4c0e..0000000
--- a/mysql/extra/yassl/taocrypt/include/random.hpp
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* random.hpp provides a crypto secure Random Number Generator using an OS
- specific seed
-*/
-
-
-#ifndef TAO_CRYPT_RANDOM_HPP
-#define TAO_CRYPT_RANDOM_HPP
-
-#include "arc4.hpp"
-#include "error.hpp"
-
-namespace TaoCrypt {
-
-
-// OS specific seeder
-class OS_Seed {
-public:
- OS_Seed();
- ~OS_Seed();
-
- void GenerateSeed(byte*, word32 sz);
- Error GetError() const { return error_; }
-private:
-#if defined(_WIN32)
- #if defined(_WIN64)
- typedef unsigned __int64 ProviderHandle;
- // type HCRYPTPROV, avoid #include <windows.h>
- #else
- typedef unsigned long ProviderHandle;
- #endif
- ProviderHandle handle_;
-#else
- int fd_;
-#endif
- Error error_;
-
- OS_Seed(const OS_Seed&); // hide copy
- OS_Seed& operator=(const OS_Seed&); // hide assign
-};
-
-
-// secure Random Nnumber Generator
-class RandomNumberGenerator {
-public:
- RandomNumberGenerator();
- ~RandomNumberGenerator() {}
-
- void GenerateBlock(byte*, word32 sz);
- byte GenerateByte();
-
- ErrorNumber GetError() const { return seed_.GetError().What(); }
-private:
- OS_Seed seed_;
- ARC4 cipher_;
-
- RandomNumberGenerator(const RandomNumberGenerator&); // hide copy
- RandomNumberGenerator operator=(const RandomNumberGenerator&); // && assign
-};
-
-
-
-
-} // namespace
-
-#endif // TAO_CRYPT_RANDOM_HPP
-
diff --git a/mysql/extra/yassl/taocrypt/include/ripemd.hpp b/mysql/extra/yassl/taocrypt/include/ripemd.hpp
deleted file mode 100644
index 5fb8aa8..0000000
--- a/mysql/extra/yassl/taocrypt/include/ripemd.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* ripemd.hpp provides RIPEMD digest support
-*/
-
-#ifndef TAO_CRYPT_RIPEMD_HPP
-#define TAO_CRYPT_RIPEMD_HPP
-
-#include "hash.hpp"
-
-
-#if defined(TAOCRYPT_X86ASM_AVAILABLE) && defined(TAO_ASM)
- #define DO_RIPEMD_ASM
-#endif
-
-namespace TaoCrypt {
-
-
-// RIPEMD160 digest
-class RIPEMD160 : public HASHwithTransform {
-public:
- enum { BLOCK_SIZE = 64, DIGEST_SIZE = 20, PAD_SIZE = 56,
- TAO_BYTE_ORDER = LittleEndianOrder }; // in Bytes
- RIPEMD160() : HASHwithTransform(DIGEST_SIZE / sizeof(word32), BLOCK_SIZE)
- { Init(); }
- ByteOrder getByteOrder() const { return ByteOrder(TAO_BYTE_ORDER); }
- word32 getBlockSize() const { return BLOCK_SIZE; }
- word32 getDigestSize() const { return DIGEST_SIZE; }
- word32 getPadSize() const { return PAD_SIZE; }
-
- RIPEMD160(const RIPEMD160&);
- RIPEMD160& operator= (const RIPEMD160&);
-
-#ifdef DO_RIPEMD_ASM
- void Update(const byte*, word32);
-#endif
- void Init();
- void Swap(RIPEMD160&);
-private:
- void Transform();
- void AsmTransform(const byte* data, word32 times);
-};
-
-inline void swap(RIPEMD160& a, RIPEMD160& b)
-{
- a.Swap(b);
-}
-
-
-} // namespace
-
-#endif // TAO_CRYPT_RIPEMD_HPP
-
diff --git a/mysql/extra/yassl/taocrypt/include/rsa.hpp b/mysql/extra/yassl/taocrypt/include/rsa.hpp
deleted file mode 100644
index ee3e378..0000000
--- a/mysql/extra/yassl/taocrypt/include/rsa.hpp
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* rsa.hpp provides RSA ES encrypt/decrypt, SSL (block type 1) sign and verify
-*/
-
-#ifndef TAO_CRYPT_RSA_HPP
-#define TAO_CRYPT_RSA_HPP
-
-#include "integer.hpp"
-#include "random.hpp"
-
-
-namespace TaoCrypt {
-
-class Source;
-
-
-// Public Key Length helper
-class PK_Lengths {
- const Integer& image_;
-public:
- explicit PK_Lengths(const Integer& i) : image_(i) {}
-
- word32 PaddedBlockBitLength() const {return image_.BitCount() - 1;}
- word32 PaddedBlockByteLength() const
- {return BitsToBytes(PaddedBlockBitLength());}
-
- word32 FixedCiphertextLength() const {return image_.ByteCount();}
- word32 FixedMaxPlaintextLength() const
- {return SaturatingSubtract(PaddedBlockBitLength() / 8, 10U); }
-};
-
-
-// RSA Public Key
-class RSA_PublicKey {
-protected:
- Integer n_;
- Integer e_;
-public:
- RSA_PublicKey() {}
- explicit RSA_PublicKey(Source&);
-
- void Initialize(const Integer& n, const Integer& e) {n_ = n; e_ = e;}
- void Initialize(Source&);
-
- Integer ApplyFunction(const Integer& x) const;
-
- const Integer& GetModulus() const {return n_;}
- const Integer& GetPublicExponent() const {return e_;}
-
- void SetModulus(const Integer& n) {n_ = n;}
- void SetPublicExponent(const Integer& e) {e_ = e;}
-
- word32 FixedCiphertextLength()
- {
- return PK_Lengths(n_).FixedCiphertextLength();
- }
-
- RSA_PublicKey(const RSA_PublicKey& other) : n_(other.n_), e_(other.e_) {}
- RSA_PublicKey& operator=(const RSA_PublicKey& that)
- {
- RSA_PublicKey tmp(that);
- Swap(tmp);
- return *this;
- }
-
- void Swap(RSA_PublicKey& other)
- {
- n_.Swap(other.n_);
- e_.Swap(other.e_);
- }
-};
-
-
-// RSA Private Key
-class RSA_PrivateKey : public RSA_PublicKey {
- Integer d_;
- Integer p_;
- Integer q_;
- Integer dp_;
- Integer dq_;
- Integer u_;
-public:
- RSA_PrivateKey() {}
- explicit RSA_PrivateKey(Source&);
-
- void Initialize(const Integer& n, const Integer& e, const Integer& d,
- const Integer& p, const Integer& q, const Integer& dp,
- const Integer& dq, const Integer& u)
- {n_ = n; e_ = e; d_ = d; p_ = p; q_ = q; dp_ = dp; dq_ = dq; u_ = u;}
- void Initialize(Source&);
-
- Integer CalculateInverse(RandomNumberGenerator&, const Integer&) const;
-
- const Integer& GetPrime1() const {return p_;}
- const Integer& GetPrime2() const {return q_;}
- const Integer& GetPrivateExponent() const {return d_;}
- const Integer& GetModPrime1PrivateExponent() const {return dp_;}
- const Integer& GetModPrime2PrivateExponent() const {return dq_;}
- const Integer& GetMultiplicativeInverseOfPrime2ModPrime1() const
- {return u_;}
-
- void SetPrime1(const Integer& p) {p_ = p;}
- void SetPrime2(const Integer& q) {q_ = q;}
- void SetPrivateExponent(const Integer& d) {d_ = d;}
- void SetModPrime1PrivateExponent(const Integer& dp) {dp_ = dp;}
- void SetModPrime2PrivateExponent(const Integer& dq) {dq_ = dq;}
- void SetMultiplicativeInverseOfPrime2ModPrime1(const Integer& u) {u_ = u;}
-private:
- RSA_PrivateKey(const RSA_PrivateKey&); // hide copy
- RSA_PrivateKey& operator=(const RSA_PrivateKey&); // and assign
-};
-
-
-// block type 2 padding
-class RSA_BlockType2 {
-public:
- void Pad(const byte*, word32, byte*, word32,
- RandomNumberGenerator&) const;
- word32 UnPad(const byte*, word32, byte*) const;
-};
-
-
-// block type 1 padding
-class RSA_BlockType1 {
-public:
- void Pad(const byte*, word32, byte*, word32,
- RandomNumberGenerator&) const;
- word32 UnPad(const byte*, word32, byte*) const;
-};
-
-
-// RSA Encryptor, can use any padding
-template<class Pad = RSA_BlockType2>
-class RSA_Encryptor {
- const RSA_PublicKey& key_;
- Pad padding_;
-public:
- explicit RSA_Encryptor(const RSA_PublicKey& k) : key_(k) {}
-
- void Encrypt(const byte*, word32, byte*, RandomNumberGenerator&);
- bool SSL_Verify(const byte* msg, word32 sz, const byte* sig);
-};
-
-
-// RSA Decryptor, can use any padding
-template<class Pad = RSA_BlockType2>
-class RSA_Decryptor {
- const RSA_PrivateKey& key_;
- Pad padding_;
-public:
- explicit RSA_Decryptor(const RSA_PrivateKey& k) : key_(k) {}
-
- word32 Decrypt(const byte*, word32, byte*, RandomNumberGenerator&);
- void SSL_Sign(const byte*, word32, byte*, RandomNumberGenerator&);
-};
-
-
-// Public Encrypt
-template<class Pad>
-void RSA_Encryptor<Pad>::Encrypt(const byte* plain, word32 sz, byte* cipher,
- RandomNumberGenerator& rng)
-{
- PK_Lengths lengths(key_.GetModulus());
- if (sz > lengths.FixedMaxPlaintextLength())
- return;
-
- ByteBlock paddedBlock(lengths.PaddedBlockByteLength());
- padding_.Pad(plain, sz, paddedBlock.get_buffer(),
- lengths.PaddedBlockBitLength(), rng);
-
- key_.ApplyFunction(Integer(paddedBlock.get_buffer(), paddedBlock.size())).
- Encode(cipher, lengths.FixedCiphertextLength());
-}
-
-
-// Private Decrypt
-template<class Pad>
-word32 RSA_Decryptor<Pad>::Decrypt(const byte* cipher, word32 sz, byte* plain,
- RandomNumberGenerator& rng)
-{
- PK_Lengths lengths(key_.GetModulus());
-
- if (sz != lengths.FixedCiphertextLength())
- return 0;
-
- ByteBlock paddedBlock(lengths.PaddedBlockByteLength());
- Integer x = key_.CalculateInverse(rng, Integer(cipher,
- lengths.FixedCiphertextLength()).Ref());
- if (x.ByteCount() > paddedBlock.size())
- x = Integer::Zero(); // don't return false, prevents timing attack
- x.Encode(paddedBlock.get_buffer(), paddedBlock.size());
- return padding_.UnPad(paddedBlock.get_buffer(),
- lengths.PaddedBlockBitLength(), plain);
-}
-
-
-// Private SSL type (block 1) Encrypt
-template<class Pad>
-void RSA_Decryptor<Pad>::SSL_Sign(const byte* message, word32 sz, byte* sig,
- RandomNumberGenerator& rng)
-{
- RSA_PublicKey inverse;
- inverse.Initialize(key_.GetModulus(), key_.GetPrivateExponent());
- RSA_Encryptor<RSA_BlockType1> enc(inverse); // SSL Type
- enc.Encrypt(message, sz, sig, rng);
-}
-
-
-word32 SSL_Decrypt(const RSA_PublicKey& key, const byte* sig, byte* plain);
-
-
-// Public SSL type (block 1) Decrypt
-template<class Pad>
-bool RSA_Encryptor<Pad>::SSL_Verify(const byte* message, word32 sz,
- const byte* sig)
-{
- ByteBlock plain(PK_Lengths(key_.GetModulus()).FixedMaxPlaintextLength());
- if (SSL_Decrypt(key_, sig, plain.get_buffer()) != sz)
- return false; // not right justified or bad padding
-
- if ( (memcmp(plain.get_buffer(), message, sz)) == 0)
- return true;
- return false;
-}
-
-
-typedef RSA_Encryptor<> RSAES_Encryptor;
-typedef RSA_Decryptor<> RSAES_Decryptor;
-
-
-} // namespace
-
-#endif // TAO_CRYPT_RSA_HPP
diff --git a/mysql/extra/yassl/taocrypt/include/runtime.hpp b/mysql/extra/yassl/taocrypt/include/runtime.hpp
deleted file mode 100644
index c984287..0000000
--- a/mysql/extra/yassl/taocrypt/include/runtime.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* runtime.hpp provides C++ runtime support functions when building a pure C
- * version of yaSSL, user must define YASSL_PURE_C
-*/
-
-
-
-#ifndef yaSSL_NEW_HPP
-#define yaSSL_NEW_HPP
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#ifdef YASSL_PURE_C
-
-#ifdef __sun
-
-
-// Handler for pure virtual functions
-namespace __Crun {
- void pure_error(void);
-} // namespace __Crun
-
-#endif // __sun
-
-
-#if defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER))
-
-#if __GNUC__ > 2
-
-extern "C" {
-#if defined(DO_TAOCRYPT_KERNEL_MODE)
- #include "kernelc.hpp"
-#endif
- int __cxa_pure_virtual () __attribute__ ((weak));
-} // extern "C"
-
-#endif // __GNUC__ > 2
-#endif // compiler check
-#endif // YASSL_PURE_C
-#endif // yaSSL_NEW_HPP
-
diff --git a/mysql/extra/yassl/taocrypt/include/sha.hpp b/mysql/extra/yassl/taocrypt/include/sha.hpp
deleted file mode 100644
index cf6d0d0..0000000
--- a/mysql/extra/yassl/taocrypt/include/sha.hpp
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* sha.hpp provides SHA-1 digests, see RFC 3174
-*/
-
-#ifndef TAO_CRYPT_SHA_HPP
-#define TAO_CRYPT_SHA_HPP
-
-#include "hash.hpp"
-
-
-#if defined(TAOCRYPT_X86ASM_AVAILABLE) && defined(TAO_ASM)
- #define DO_SHA_ASM
-#endif
-
-namespace TaoCrypt {
-
-
-// SHA-1 digest
-class SHA : public HASHwithTransform {
-public:
- enum { BLOCK_SIZE = 64, DIGEST_SIZE = 20, PAD_SIZE = 56,
- TAO_BYTE_ORDER = BigEndianOrder}; // in Bytes
- SHA() : HASHwithTransform(DIGEST_SIZE / sizeof(word32), BLOCK_SIZE)
- { Init(); }
- ByteOrder getByteOrder() const { return ByteOrder(TAO_BYTE_ORDER); }
- word32 getBlockSize() const { return BLOCK_SIZE; }
- word32 getDigestSize() const { return DIGEST_SIZE; }
- word32 getPadSize() const { return PAD_SIZE; }
-
-#ifdef DO_SHA_ASM
- void Update(const byte* data, word32 len);
-#endif
- void Init();
-
- SHA(const SHA&);
- SHA& operator= (const SHA&);
-
- void Swap(SHA&);
-private:
- void Transform();
- void AsmTransform(const byte* data, word32 times);
-};
-
-
-inline void swap(SHA& a, SHA& b)
-{
- a.Swap(b);
-}
-
-// SHA-256 digest
-class SHA256 : public HASHwithTransform {
-public:
- enum { BLOCK_SIZE = 64, DIGEST_SIZE = 32, PAD_SIZE = 56,
- TAO_BYTE_ORDER = BigEndianOrder}; // in Bytes
- SHA256() : HASHwithTransform(DIGEST_SIZE / sizeof(word32), BLOCK_SIZE)
- { Init(); }
- ByteOrder getByteOrder() const { return ByteOrder(TAO_BYTE_ORDER); }
- word32 getBlockSize() const { return BLOCK_SIZE; }
- word32 getDigestSize() const { return DIGEST_SIZE; }
- word32 getPadSize() const { return PAD_SIZE; }
-
- void Init();
-
- SHA256(const SHA256&);
- SHA256& operator= (const SHA256&);
-
- void Swap(SHA256&);
-private:
- void Transform();
-};
-
-
-// SHA-224 digest
-class SHA224 : public HASHwithTransform {
-public:
- enum { BLOCK_SIZE = 64, DIGEST_SIZE = 28, PAD_SIZE = 56,
- TAO_BYTE_ORDER = BigEndianOrder}; // in Bytes
- SHA224() : HASHwithTransform(SHA256::DIGEST_SIZE /sizeof(word32),BLOCK_SIZE)
- { Init(); }
- ByteOrder getByteOrder() const { return ByteOrder(TAO_BYTE_ORDER); }
- word32 getBlockSize() const { return BLOCK_SIZE; }
- word32 getDigestSize() const { return DIGEST_SIZE; }
- word32 getPadSize() const { return PAD_SIZE; }
-
- void Init();
-
- SHA224(const SHA224&);
- SHA224& operator= (const SHA224&);
-
- void Swap(SHA224&);
-private:
- void Transform();
-};
-
-
-#ifdef WORD64_AVAILABLE
-
-// SHA-512 digest
-class SHA512 : public HASH64withTransform {
-public:
- enum { BLOCK_SIZE = 128, DIGEST_SIZE = 64, PAD_SIZE = 112,
- TAO_BYTE_ORDER = BigEndianOrder}; // in Bytes
- SHA512() : HASH64withTransform(DIGEST_SIZE / sizeof(word64), BLOCK_SIZE)
- { Init(); }
- ByteOrder getByteOrder() const { return ByteOrder(TAO_BYTE_ORDER); }
- word32 getBlockSize() const { return BLOCK_SIZE; }
- word32 getDigestSize() const { return DIGEST_SIZE; }
- word32 getPadSize() const { return PAD_SIZE; }
-
- void Init();
-
- SHA512(const SHA512&);
- SHA512& operator= (const SHA512&);
-
- void Swap(SHA512&);
-private:
- void Transform();
-};
-
-
-// SHA-384 digest
-class SHA384 : public HASH64withTransform {
-public:
- enum { BLOCK_SIZE = 128, DIGEST_SIZE = 48, PAD_SIZE = 112,
- TAO_BYTE_ORDER = BigEndianOrder}; // in Bytes
- SHA384() : HASH64withTransform(SHA512::DIGEST_SIZE/ sizeof(word64),
- BLOCK_SIZE)
- { Init(); }
- ByteOrder getByteOrder() const { return ByteOrder(TAO_BYTE_ORDER); }
- word32 getBlockSize() const { return BLOCK_SIZE; }
- word32 getDigestSize() const { return DIGEST_SIZE; }
- word32 getPadSize() const { return PAD_SIZE; }
-
- void Init();
-
- SHA384(const SHA384&);
- SHA384& operator= (const SHA384&);
-
- void Swap(SHA384&);
-private:
- void Transform();
-};
-
-enum { MAX_SHA2_DIGEST_SIZE = 64 }; // SHA512
-
-#else
-
-enum { MAX_SHA2_DIGEST_SIZE = 32 }; // SHA256
-
-#endif // WORD64_AVAILABLE
-
-
-} // namespace
-
-
-#endif // TAO_CRYPT_SHA_HPP
-
diff --git a/mysql/extra/yassl/taocrypt/include/twofish.hpp b/mysql/extra/yassl/taocrypt/include/twofish.hpp
deleted file mode 100644
index eeb9b6a..0000000
--- a/mysql/extra/yassl/taocrypt/include/twofish.hpp
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* twofish.hpp defines Twofish
-*/
-
-
-#ifndef TAO_CRYPT_TWOFISH_HPP
-#define TAO_CRYPT_TWOFISH_HPP
-
-#include "misc.hpp"
-#include "modes.hpp"
-#ifdef USE_SYS_STL
- #include <algorithm>
-#else
- #include "algorithm.hpp"
-#endif
-
-
-namespace STL = STL_NAMESPACE;
-
-
-#if defined(TAOCRYPT_X86ASM_AVAILABLE) && defined(TAO_ASM)
- #define DO_TWOFISH_ASM
-#endif
-
-namespace TaoCrypt {
-
-enum { TWOFISH_BLOCK_SIZE = 16 };
-
-
-// Twofish encryption and decryption, see
-class Twofish : public Mode_BASE {
-public:
- enum { BLOCK_SIZE = TWOFISH_BLOCK_SIZE };
-
- Twofish(CipherDir DIR, Mode MODE)
- : Mode_BASE(BLOCK_SIZE, DIR, MODE) {}
-
-#ifdef DO_TWOFISH_ASM
- void Process(byte*, const byte*, word32);
-#endif
- void SetKey(const byte* key, word32 sz, CipherDir fake = ENCRYPTION);
- void SetIV(const byte* iv) { memcpy(r_, iv, BLOCK_SIZE); }
-private:
- static const byte q_[2][256];
- static const word32 mds_[4][256];
-
- word32 k_[40];
- word32 s_[4][256];
-
- static word32 h0(word32 x, const word32 *key, unsigned int kLen);
- static word32 h(word32 x, const word32 *key, unsigned int kLen);
-
- void ProcessAndXorBlock(const byte*, const byte*, byte*) const;
-
- void encrypt(const byte*, const byte*, byte*) const;
- void decrypt(const byte*, const byte*, byte*) const;
-
- void AsmEncrypt(const byte* inBlock, byte* outBlock) const;
- void AsmDecrypt(const byte* inBlock, byte* outBlock) const;
-
- Twofish(const Twofish&); // hide copy
- Twofish& operator=(const Twofish&); // and assign
-};
-
-
-typedef BlockCipher<ENCRYPTION, Twofish, ECB> Twofish_ECB_Encryption;
-typedef BlockCipher<DECRYPTION, Twofish, ECB> Twofish_ECB_Decryption;
-
-typedef BlockCipher<ENCRYPTION, Twofish, CBC> Twofish_CBC_Encryption;
-typedef BlockCipher<DECRYPTION, Twofish, CBC> Twofish_CBC_Decryption;
-
-
-
-} // naemspace
-
-#endif // TAO_CRYPT_TWOFISH_HPP
-
diff --git a/mysql/extra/yassl/taocrypt/include/type_traits.hpp b/mysql/extra/yassl/taocrypt/include/type_traits.hpp
deleted file mode 100644
index 8c6fe53..0000000
--- a/mysql/extra/yassl/taocrypt/include/type_traits.hpp
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* type_traits defines fundamental types
- * see discussion in C++ Templates, $19.1
-*/
-
-
-#ifndef TAO_CRYPT_TYPE_TRAITS_HPP
-#define TAO_CRYPT_TYPE_TRAITS_HPP
-
-#include "types.hpp"
-
-namespace TaoCrypt {
-
-
-// primary template: in general T is not a fundamental type
-
-template <typename T>
-class IsFundamentalType {
- public:
- enum { Yes = 0, No = 1 };
-};
-
-
-// macro to specialize for fundamental types
-#define MK_FUNDAMENTAL_TYPE(T) \
- template<> class IsFundamentalType<T> { \
- public: \
- enum { Yes = 1, No = 0 }; \
- };
-
-
-MK_FUNDAMENTAL_TYPE(void)
-
-MK_FUNDAMENTAL_TYPE(bool)
-MK_FUNDAMENTAL_TYPE( char)
-MK_FUNDAMENTAL_TYPE(signed char)
-MK_FUNDAMENTAL_TYPE(unsigned char)
-
-MK_FUNDAMENTAL_TYPE(signed short)
-MK_FUNDAMENTAL_TYPE(unsigned short)
-MK_FUNDAMENTAL_TYPE(signed int)
-MK_FUNDAMENTAL_TYPE(unsigned int)
-MK_FUNDAMENTAL_TYPE(signed long)
-MK_FUNDAMENTAL_TYPE(unsigned long)
-
-MK_FUNDAMENTAL_TYPE(float)
-MK_FUNDAMENTAL_TYPE( double)
-MK_FUNDAMENTAL_TYPE(long double)
-
-#if defined(WORD64_AVAILABLE) && defined(WORD64_IS_DISTINCT_TYPE)
- MK_FUNDAMENTAL_TYPE(word64)
-#endif
-
-
-#undef MK_FUNDAMENTAL_TYPE
-
-
-} // namespace
-
-#endif // TAO_CRYPT_TYPE_TRAITS_HPP
diff --git a/mysql/extra/yassl/taocrypt/include/types.hpp b/mysql/extra/yassl/taocrypt/include/types.hpp
deleted file mode 100644
index 67ea260..0000000
--- a/mysql/extra/yassl/taocrypt/include/types.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA.
-*/
-
-/* based on Wei Dai's misc.h from CryptoPP, basic crypt types */
-
-
-#ifndef TAO_CRYPT_TYPES_HPP
-#define TAO_CRYPT_TYPES_HPP
-
-#ifdef HAVE_CONFIG_H
- #include "config.h"
-#endif
-
-namespace TaoCrypt {
-
-
-#if defined(WORDS_BIGENDIAN) || (defined(__MWERKS__) && !defined(__INTEL__))
- #define BIG_ENDIAN_ORDER
-#endif
-
-#ifndef BIG_ENDIAN_ORDER
- #define LITTLE_ENDIAN_ORDER
-#endif
-
-
-typedef unsigned char byte;
-typedef unsigned short word16;
-typedef unsigned int word32;
-
-#if defined(_MSC_VER) || defined(__BCPLUSPLUS__)
- #define WORD64_AVAILABLE
- #define WORD64_IS_DISTINCT_TYPE
- typedef unsigned __int64 word64;
- #define W64LIT(x) x##ui64
-#elif SIZEOF_LONG == 8
- #define WORD64_AVAILABLE
- typedef unsigned long word64;
- #define W64LIT(x) x##LL
-#elif SIZEOF_LONG_LONG == 8
- #define WORD64_AVAILABLE
- #define WORD64_IS_DISTINCT_TYPE
- typedef unsigned long long word64;
- #define W64LIT(x) x##LL
-#endif
-
-
-// compilers we've found 64-bit multiply insructions for
-#if defined(__GNUC__) || defined(_MSC_VER) || defined(__DECCXX)
- #if !(defined(__ICC) || defined(__INTEL_COMPILER))
- #define HAVE_64_MULTIPLY
- #endif
-#endif
-
-
-#if defined(HAVE_64_MULTIPLY) && (defined(__ia64__) \
- || defined(_ARCH_PPC64) || defined(__mips64) || defined(__x86_64__) \
- || defined(_M_X64) || defined(_M_IA64))
-// These platforms have 64-bit CPU registers. Unfortunately most C++ compilers
-// don't allow any way to access the 64-bit by 64-bit multiply instruction
-// without using assembly, so in order to use word64 as word, the assembly
-// instruction must be defined in Dword::Multiply().
- typedef word32 hword;
- typedef word64 word;
-#else
- #define TAOCRYPT_NATIVE_DWORD_AVAILABLE
- #ifdef WORD64_AVAILABLE
- #define TAOCRYPT_SLOW_WORD64
- typedef word16 hword;
- typedef word32 word;
- typedef word64 dword;
- #else
- typedef byte hword;
- typedef word16 word;
- typedef word32 dword;
- #endif
-#endif
-
-const word32 WORD_SIZE = sizeof(word);
-const word32 WORD_BITS = WORD_SIZE * 8;
-
-
-} // namespace
-
-#endif // TAO_CRYPT_TYPES_HPP