Loading extra/yassl/mySTL/helpers.hpp +5 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,11 @@ return static_cast<void*>(d); } // for compilers that want matching delete inline void operator delete(void* ptr, Dummy* d) { } typedef Dummy* yassl_pointer; namespace mySTL { Loading extra/yassl/src/template_instnt.cpp +0 −1 Original line number Diff line number Diff line Loading @@ -31,7 +31,6 @@ #include "hmac.hpp" #include "md5.hpp" #include "sha.hpp" #include "ripemd.hpp" #include "openssl/ssl.h" #ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION Loading extra/yassl/taocrypt/include/asn.hpp +13 −6 Original line number Diff line number Diff line Loading @@ -79,7 +79,13 @@ enum ASNIdFlag enum DNTags { COMMON_NAME = 0x03 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 }; Loading @@ -92,7 +98,8 @@ enum Constants MAX_SEQ_SZ = 5, // enum(seq|con) + length(4) MAX_ALGO_SIZE = 9, MAX_DIGEST_SZ = 25, // SHA + enum(Bit or Octet) + length(4) DSA_SIG_SZ = 40 DSA_SIG_SZ = 40, NAME_MAX = 512 // max total of all included names }; Loading Loading @@ -205,14 +212,14 @@ enum { SHA_SIZE = 20 }; // A Signing Authority class Signer { PublicKey key_; char* name_; char name_[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* GetCommonName() const { return name_; } const char* GetName() const { return name_; } const byte* GetHash() const { return hash_; } private: Loading Loading @@ -257,8 +264,8 @@ private: byte subjectHash_[SHA_SIZE]; // hash of all Names byte issuerHash_[SHA_SIZE]; // hash of all Names byte* signature_; char* issuer_; // CommonName char* subject_; // CommonName char issuer_[NAME_MAX]; // Names char subject_[NAME_MAX]; // Names bool verify_; // Default to yes, but could be off void ReadHeader(); Loading extra/yassl/taocrypt/src/asn.cpp +52 −12 Original line number Diff line number Diff line Loading @@ -213,21 +213,17 @@ void PublicKey::AddToEnd(const byte* data, word32 len) Signer::Signer(const byte* k, word32 kSz, const char* n, const byte* h) : key_(k, kSz), name_(0) : key_(k, kSz) { if (n) { int sz = strlen(n); name_ = NEW_TC char[sz + 1]; memcpy(name_, n, sz); name_[sz] = 0; } memcpy(hash_, h, SHA::DIGEST_SIZE); } Signer::~Signer() { tcArrayDelete(name_); } Loading Loading @@ -424,17 +420,19 @@ void DH_Decoder::Decode(DH& key) CertDecoder::CertDecoder(Source& s, bool decode, SignerList* signers, bool noVerify, CertType ct) : BER_Decoder(s), certBegin_(0), sigIndex_(0), sigLength_(0), signature_(0), issuer_(0), subject_(0), verify_(!noVerify) signature_(0), verify_(!noVerify) { issuer_[0] = 0; subject_[0] = 0; if (decode) Decode(signers, ct); } CertDecoder::~CertDecoder() { tcArrayDelete(subject_); tcArrayDelete(issuer_); tcArrayDelete(signature_); } Loading Loading @@ -672,8 +670,12 @@ void CertDecoder::GetName(NameType nt) SHA sha; word32 length = GetSequence(); // length of all distinguished names assert (length < NAME_MAX); length += source_.get_index(); char* ptr = (nt == ISSUER) ? issuer_ : subject_; word32 idx = 0; while (source_.get_index() < length) { GetSet(); GetSequence(); Loading @@ -694,13 +696,49 @@ void CertDecoder::GetName(NameType nt) byte id = source_.next(); b = source_.next(); // strType word32 strLen = GetLength(source_); bool copy = false; if (id == COMMON_NAME) { char*& ptr = (nt == ISSUER) ? issuer_ : subject_; ptr = NEW_TC char[strLen + 1]; memcpy(ptr, source_.get_current(), strLen); ptr[strLen] = 0; memcpy(&ptr[idx], "/CN=", 4); idx += 4; copy = true; } else if (id == SUR_NAME) { memcpy(&ptr[idx], "/SN=", 4); idx += 4; copy = true; } else if (id == COUNTRY_NAME) { memcpy(&ptr[idx], "/C=", 3); idx += 3; copy = true; } else if (id == LOCALITY_NAME) { memcpy(&ptr[idx], "/L=", 3); idx += 3; copy = true; } else if (id == STATE_NAME) { memcpy(&ptr[idx], "/ST=", 4); idx += 4; copy = true; } else if (id == ORG_NAME) { memcpy(&ptr[idx], "/O=", 3); idx += 3; copy = true; } else if (id == ORGUNIT_NAME) { memcpy(&ptr[idx], "/OU=", 4); idx += 4; copy = true; } if (copy) { memcpy(&ptr[idx], source_.get_current(), strLen); idx += strLen; } sha.Update(source_.get_current(), strLen); source_.advance(strLen); } Loading @@ -711,6 +749,8 @@ void CertDecoder::GetName(NameType nt) source_.advance(length); } } ptr[idx++] = 0; if (nt == ISSUER) sha.Final(issuerHash_); else Loading extra/yassl/taocrypt/src/make.bat +1 −1 Original line number Diff line number Diff line # quick and dirty build file for testing different MSDEVs REM quick and dirty build file for testing different MSDEVs setlocal set myFLAGS= /I../include /I../../mySTL /c /W3 /G6 /O2 Loading Loading
extra/yassl/mySTL/helpers.hpp +5 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,11 @@ return static_cast<void*>(d); } // for compilers that want matching delete inline void operator delete(void* ptr, Dummy* d) { } typedef Dummy* yassl_pointer; namespace mySTL { Loading
extra/yassl/src/template_instnt.cpp +0 −1 Original line number Diff line number Diff line Loading @@ -31,7 +31,6 @@ #include "hmac.hpp" #include "md5.hpp" #include "sha.hpp" #include "ripemd.hpp" #include "openssl/ssl.h" #ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION Loading
extra/yassl/taocrypt/include/asn.hpp +13 −6 Original line number Diff line number Diff line Loading @@ -79,7 +79,13 @@ enum ASNIdFlag enum DNTags { COMMON_NAME = 0x03 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 }; Loading @@ -92,7 +98,8 @@ enum Constants MAX_SEQ_SZ = 5, // enum(seq|con) + length(4) MAX_ALGO_SIZE = 9, MAX_DIGEST_SZ = 25, // SHA + enum(Bit or Octet) + length(4) DSA_SIG_SZ = 40 DSA_SIG_SZ = 40, NAME_MAX = 512 // max total of all included names }; Loading Loading @@ -205,14 +212,14 @@ enum { SHA_SIZE = 20 }; // A Signing Authority class Signer { PublicKey key_; char* name_; char name_[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* GetCommonName() const { return name_; } const char* GetName() const { return name_; } const byte* GetHash() const { return hash_; } private: Loading Loading @@ -257,8 +264,8 @@ private: byte subjectHash_[SHA_SIZE]; // hash of all Names byte issuerHash_[SHA_SIZE]; // hash of all Names byte* signature_; char* issuer_; // CommonName char* subject_; // CommonName char issuer_[NAME_MAX]; // Names char subject_[NAME_MAX]; // Names bool verify_; // Default to yes, but could be off void ReadHeader(); Loading
extra/yassl/taocrypt/src/asn.cpp +52 −12 Original line number Diff line number Diff line Loading @@ -213,21 +213,17 @@ void PublicKey::AddToEnd(const byte* data, word32 len) Signer::Signer(const byte* k, word32 kSz, const char* n, const byte* h) : key_(k, kSz), name_(0) : key_(k, kSz) { if (n) { int sz = strlen(n); name_ = NEW_TC char[sz + 1]; memcpy(name_, n, sz); name_[sz] = 0; } memcpy(hash_, h, SHA::DIGEST_SIZE); } Signer::~Signer() { tcArrayDelete(name_); } Loading Loading @@ -424,17 +420,19 @@ void DH_Decoder::Decode(DH& key) CertDecoder::CertDecoder(Source& s, bool decode, SignerList* signers, bool noVerify, CertType ct) : BER_Decoder(s), certBegin_(0), sigIndex_(0), sigLength_(0), signature_(0), issuer_(0), subject_(0), verify_(!noVerify) signature_(0), verify_(!noVerify) { issuer_[0] = 0; subject_[0] = 0; if (decode) Decode(signers, ct); } CertDecoder::~CertDecoder() { tcArrayDelete(subject_); tcArrayDelete(issuer_); tcArrayDelete(signature_); } Loading Loading @@ -672,8 +670,12 @@ void CertDecoder::GetName(NameType nt) SHA sha; word32 length = GetSequence(); // length of all distinguished names assert (length < NAME_MAX); length += source_.get_index(); char* ptr = (nt == ISSUER) ? issuer_ : subject_; word32 idx = 0; while (source_.get_index() < length) { GetSet(); GetSequence(); Loading @@ -694,13 +696,49 @@ void CertDecoder::GetName(NameType nt) byte id = source_.next(); b = source_.next(); // strType word32 strLen = GetLength(source_); bool copy = false; if (id == COMMON_NAME) { char*& ptr = (nt == ISSUER) ? issuer_ : subject_; ptr = NEW_TC char[strLen + 1]; memcpy(ptr, source_.get_current(), strLen); ptr[strLen] = 0; memcpy(&ptr[idx], "/CN=", 4); idx += 4; copy = true; } else if (id == SUR_NAME) { memcpy(&ptr[idx], "/SN=", 4); idx += 4; copy = true; } else if (id == COUNTRY_NAME) { memcpy(&ptr[idx], "/C=", 3); idx += 3; copy = true; } else if (id == LOCALITY_NAME) { memcpy(&ptr[idx], "/L=", 3); idx += 3; copy = true; } else if (id == STATE_NAME) { memcpy(&ptr[idx], "/ST=", 4); idx += 4; copy = true; } else if (id == ORG_NAME) { memcpy(&ptr[idx], "/O=", 3); idx += 3; copy = true; } else if (id == ORGUNIT_NAME) { memcpy(&ptr[idx], "/OU=", 4); idx += 4; copy = true; } if (copy) { memcpy(&ptr[idx], source_.get_current(), strLen); idx += strLen; } sha.Update(source_.get_current(), strLen); source_.advance(strLen); } Loading @@ -711,6 +749,8 @@ void CertDecoder::GetName(NameType nt) source_.advance(length); } } ptr[idx++] = 0; if (nt == ISSUER) sha.Final(issuerHash_); else Loading
extra/yassl/taocrypt/src/make.bat +1 −1 Original line number Diff line number Diff line # quick and dirty build file for testing different MSDEVs REM quick and dirty build file for testing different MSDEVs setlocal set myFLAGS= /I../include /I../../mySTL /c /W3 /G6 /O2 Loading