📄 yassl_int.cpp
字号:
SSL_CTX::~SSL_CTX(){ ysDelete(method_); ysDelete(certificate_); ysDelete(privateKey_); mySTL::for_each(caList_.begin(), caList_.end(), del_ptr_zero());}void SSL_CTX::AddCA(x509* ca){ caList_.push_back(ca);}const SSL_CTX::CertList& SSL_CTX::GetCA_List() const{ return caList_;}const x509* SSL_CTX::getCert() const{ return certificate_;}const x509* SSL_CTX::getKey() const{ return privateKey_;}const SSL_METHOD* SSL_CTX::getMethod() const{ return method_;}const Ciphers& SSL_CTX::GetCiphers() const{ return ciphers_;}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::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) : conn_(pv, ran), parms_(ce, ciphers, pv), 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){ if (sz) { name_ = new (ys) char[sz]; memcpy(name_, n, sz); }}X509_NAME::~X509_NAME(){ ysArrayDelete(name_);}char* X509_NAME::GetName(){ return name_;}X509::X509(const char* i, size_t iSz, const char* s, size_t sSz) : issuer_(i, iSz), subject_(s, sSz){} X509_NAME* X509::GetIssuer(){ return &issuer_;}X509_NAME* X509::GetSubject(){ return &subject_;}} // namespace#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 + -