📄 yassl_int.cpp
字号:
const DH_Parms& SSL_CTX::GetDH_Parms() const{ return dhParms_;}const Stats& SSL_CTX::GetStats() const{ return stats_;}void SSL_CTX::setVerifyPeer(){ method_->setVerifyPeer();}void SSL_CTX::setVerifyNone(){ method_->setVerifyNone();}void SSL_CTX::setFailNoCert(){ method_->setFailNoCert();}bool SSL_CTX::SetDH(const DH& dh){ dhParms_.p_ = dh.p->int_; dhParms_.g_ = dh.g->int_; return dhParms_.set_ = true;}bool SSL_CTX::SetCipherList(const char* list){ if (!list) return false; bool ret = false; char name[MAX_SUITE_NAME]; char needle[] = ":"; char* haystack = const_cast<char*>(list); char* prev; const int suiteSz = sizeof(cipher_names) / sizeof(cipher_names[0]); int idx = 0; for(;;) { int len; prev = haystack; haystack = strstr(haystack, needle); if (!haystack) // last cipher len = min(sizeof(name), strlen(prev)); else len = min(sizeof(name), (size_t)(haystack - prev)); strncpy(name, prev, len); name[(len == sizeof(name)) ? len - 1 : len] = 0; for (int i = 0; i < suiteSz; i++) if (strncmp(name, cipher_names[i], sizeof(name)) == 0) { ciphers_.suites_[idx++] = 0x00; // first byte always zero ciphers_.suites_[idx++] = i; if (!ret) ret = true; // found at least one break; } if (!haystack) break; haystack++; } if (ret) { ciphers_.setSuites_ = true; ciphers_.suiteSz_ = idx; } return ret;}void SSL_CTX::IncrementStats(StatsField fd){ Lock guard(mutex_); switch (fd) { case Accept: ++stats_.accept_; break; case Connect: ++stats_.connect_; break; case AcceptGood: ++stats_.acceptGood_; break; case ConnectGood: ++stats_.connectGood_; break; case AcceptRenegotiate: ++stats_.acceptRenegotiate_; break; case ConnectRenegotiate: ++stats_.connectRenegotiate_; break; case Hits: ++stats_.hits_; break; case CbHits: ++stats_.cbHits_; break; case CacheFull: ++stats_.cacheFull_; break; case Misses: ++stats_.misses_; break; case Timeouts: ++stats_.timeouts_; break; case Number: ++stats_.number_; break; case GetCacheSize: ++stats_.getCacheSize_; break; case VerifyMode: ++stats_.verifyMode_; break; case VerifyDepth: ++stats_.verifyDepth_; break; default: break; }}Crypto::Crypto() : digest_(0), cipher_(0), dh_(0) {}Crypto::~Crypto(){ ysDelete(dh_); ysDelete(cipher_); ysDelete(digest_);}const Digest& Crypto::get_digest() const{ return *digest_;}const BulkCipher& Crypto::get_cipher() const{ return *cipher_;}const DiffieHellman& Crypto::get_dh() const{ return *dh_;}const RandomPool& Crypto::get_random() const{ return random_;}const CertManager& Crypto::get_certManager() const{ return cert_;} Digest& Crypto::use_digest(){ return *digest_;}BulkCipher& Crypto::use_cipher(){ return *cipher_;}DiffieHellman& Crypto::use_dh(){ return *dh_;}RandomPool& Crypto::use_random(){ return random_;}CertManager& Crypto::use_certManager(){ return cert_;}void Crypto::SetDH(DiffieHellman* dh){ dh_ = dh;}void Crypto::SetDH(const DH_Parms& dh){ if (dh.set_) dh_ = NEW_YS DiffieHellman(dh.p_, dh.g_, random_);}bool Crypto::DhSet(){ return dh_ != 0;}void Crypto::setDigest(Digest* digest){ digest_ = digest;}void Crypto::setCipher(BulkCipher* c){ cipher_ = c;}const MD5& sslHashes::get_MD5() const{ return md5HandShake_;}const SHA& sslHashes::get_SHA() const{ return shaHandShake_;}const Finished& sslHashes::get_verify() const{ return verify_;}const Hashes& sslHashes::get_certVerify() const{ return certVerify_;}MD5& sslHashes::use_MD5(){ return md5HandShake_;}SHA& sslHashes::use_SHA(){ return shaHandShake_;}Finished& sslHashes::use_verify(){ return verify_;}Hashes& sslHashes::use_certVerify(){ return certVerify_;}Buffers::~Buffers(){ mySTL::for_each(handShakeList_.begin(), handShakeList_.end(), del_ptr_zero()) ; mySTL::for_each(dataList_.begin(), dataList_.end(), del_ptr_zero()) ;}const Buffers::inputList& Buffers::getData() const{ return dataList_;}const Buffers::outputList& Buffers::getHandShake() const{ return handShakeList_;}Buffers::inputList& Buffers::useData(){ return dataList_;}Buffers::outputList& Buffers::useHandShake(){ return handShakeList_;}Security::Security(ProtocolVersion pv, RandomPool& ran, ConnectionEnd ce, const Ciphers& ciphers, SSL_CTX* ctx, bool haveDH) : conn_(pv, ran), parms_(ce, ciphers, pv, haveDH), resumeSession_(ran), ctx_(ctx), resuming_(false){}const Connection& Security::get_connection() const{ return conn_;}const SSL_CTX* Security::GetContext() const{ return ctx_;}const Parameters& Security::get_parms() const{ return parms_;}const SSL_SESSION& Security::get_resume() const{ return resumeSession_;}bool Security::get_resuming() const{ return resuming_;}Connection& Security::use_connection(){ return conn_;}Parameters& Security::use_parms(){ return parms_;}SSL_SESSION& Security::use_resume(){ return resumeSession_;}void Security::set_resuming(bool b){ resuming_ = b;}X509_NAME::X509_NAME(const char* n, size_t sz) : name_(0), sz_(sz){ if (sz) { name_ = NEW_YS char[sz]; memcpy(name_, n, sz); } entry_.data = 0;}X509_NAME::~X509_NAME(){ ysArrayDelete(name_); ysArrayDelete(entry_.data);}char* X509_NAME::GetName(){ return name_;}X509::X509(const char* i, size_t iSz, const char* s, size_t sSz, const char* b, int bSz, const char* a, int aSz) : issuer_(i, iSz), subject_(s, sSz), beforeDate_(b, bSz), afterDate_(a, aSz){} X509_NAME* X509::GetIssuer(){ return &issuer_;}X509_NAME* X509::GetSubject(){ return &subject_;}ASN1_STRING* X509::GetBefore(){ return beforeDate_.GetString();}ASN1_STRING* X509::GetAfter(){ return afterDate_.GetString();}ASN1_STRING* X509_NAME::GetEntry(int i){ if (i < 0 || i >= int(sz_)) return 0; if (entry_.data) ysArrayDelete(entry_.data); entry_.data = NEW_YS byte[sz_]; // max size; memcpy(entry_.data, &name_[i], sz_ - i); if (entry_.data[sz_ -i - 1]) { entry_.data[sz_ - i] = 0; entry_.length = sz_ - i; } else entry_.length = sz_ - i - 1; entry_.type = 0; return &entry_;}StringHolder::StringHolder(const char* str, int sz){ asnString_.length = sz; asnString_.data = NEW_YS byte[sz + 1]; memcpy(asnString_.data, str, sz); asnString_.type = 0; // not used for now}StringHolder::~StringHolder(){ ysArrayDelete(asnString_.data);}ASN1_STRING* StringHolder::GetString(){ return &asnString_;}} // namespaceextern "C" void yaSSL_CleanUp(){ TaoCrypt::CleanUp(); yaSSL::ysDelete(yaSSL::sslFactoryInstance); yaSSL::ysDelete(yaSSL::sessionsInstance); // In case user calls more than once, prevent seg fault yaSSL::sslFactoryInstance = 0; yaSSL::sessionsInstance = 0;}#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATIONnamespace mySTL {template yaSSL::yassl_int_cpp_local1::SumData for_each<mySTL::list<yaSSL::input_buffer*>::iterator, yaSSL::yassl_int_cpp_local1::SumData>(mySTL::list<yaSSL::input_buffer*>::iterator, mySTL::list<yaSSL::input_buffer*>::iterator, yaSSL::yassl_int_cpp_local1::SumData);template yaSSL::yassl_int_cpp_local1::SumBuffer for_each<mySTL::list<yaSSL::output_buffer*>::iterator, yaSSL::yassl_int_cpp_local1::SumBuffer>(mySTL::list<yaSSL::output_buffer*>::iterator, mySTL::list<yaSSL::output_buffer*>::iterator, yaSSL::yassl_int_cpp_local1::SumBuffer);template mySTL::list<yaSSL::SSL_SESSION*>::iterator find_if<mySTL::list<yaSSL::SSL_SESSION*>::iterator, yaSSL::yassl_int_cpp_local2::sess_match>(mySTL::list<yaSSL::SSL_SESSION*>::iterator, mySTL::list<yaSSL::SSL_SESSION*>::iterator, yaSSL::yassl_int_cpp_local2::sess_match);}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -