📄 yassl_int.cpp
字号:
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::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)
: 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_INSTANTIATION
namespace 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 + -