⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yassl_int.hpp

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 HPP
📖 第 1 页 / 共 2 页
字号:
/* yassl_int.hpp                                 * * Copyright (C) 2003 Sawtooth Consulting Ltd. * * This file is part of yaSSL. * * yaSSL 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; either version 2 of the License, or * (at your option) any later version. * * yaSSL 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; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA *//* yaSSL internal header defines SSL supporting types not specified in the * draft along with type conversion functions and openssl compatibility */#ifndef yaSSL_INT_HPP#define yaSSL_INT_HPP#include "yassl_imp.hpp"#include "yassl_error.hpp"#include "crypto_wrapper.hpp"#include "cert_wrapper.hpp"#include "log.hpp"#include "lock.hpp"namespace yaSSL {// State Machine for Record Layer Protocolenum RecordLayerState {    recordNotReady = 0,         // fatal error, no more processing    recordReady};// State Machine for HandShake Protocolenum HandShakeState {    handShakeNotReady = 0,      // fatal error, no more processing    preHandshake,               // initial state    inHandshake,                // handshake started    handShakeReady              // handshake done};// client input HandShake state, use if HandShakeState == inHandShakeenum ClientState {    serverNull = 0,    serverHelloComplete,    serverCertComplete,    serverKeyExchangeComplete,    serverHelloDoneComplete,    serverFinishedComplete	};// server input HandShake state, use if HandShakeState == inHandShakeenum ServerState {    clientNull = 0,    clientHelloComplete,    clientKeyExchangeComplete,    clientFinishedComplete        };// combines all statesclass States {    enum {MAX_ERROR_SZ = 80 };    RecordLayerState recordLayer_;    HandShakeState   handshakeLayer_;    ClientState      clientState_;    ServerState      serverState_;    char             errorString_[MAX_ERROR_SZ];    YasslError       what_;public:    States();    const RecordLayerState& getRecord()    const;    const HandShakeState&   getHandShake() const;    const ClientState&      getClient()    const;    const ServerState&      getServer()    const;    const char*             getString()    const;          YasslError        What()         const;    RecordLayerState& useRecord();    HandShakeState&   useHandShake();    ClientState&      useClient();    ServerState&      useServer();    char*             useString();    void              SetError(YasslError);private:    States(const States&);              // hide copy    States& operator=(const States&);   // and assign};// holds all factoriesclass sslFactory {    MessageFactory      messageFactory_;        // creates new messages by type    HandShakeFactory    handShakeFactory_;      // creates new handshake types    ServerKeyFactory    serverKeyFactory_;      // creates new server key types    ClientKeyFactory    clientKeyFactory_;      // creates new client key types    sslFactory();                               // only GetSSL_Factory createspublic:    const MessageFactory&   getMessage()   const;    const HandShakeFactory& getHandShake() const;    const ServerKeyFactory& getServerKey() const;    const ClientKeyFactory& getClientKey() const;    friend sslFactory& GetSSL_Factory();        // singleton creatorprivate:    sslFactory(const sslFactory&);              // hide copy    sslFactory& operator=(const sslFactory&);   // and assign   };#undef X509_NAME  // wincrypt.h clash// openSSL X509 namesclass X509_NAME {    char* name_;public:    X509_NAME(const char*, size_t sz);    ~X509_NAME();    char* GetName();private:    X509_NAME(const X509_NAME&);                // hide copy    X509_NAME& operator=(const X509_NAME&);     // and assign};// openSSL X509class X509 {    X509_NAME issuer_;    X509_NAME subject_;public:    X509(const char* i, size_t, const char* s, size_t);    ~X509() {}    X509_NAME* GetIssuer();    X509_NAME* GetSubject();private:    X509(const X509&);              // hide copy    X509& operator=(const X509&);   // and assign};// openSSL bignumstruct BIGNUM {    /*      gcc 2.96 fix: because of two Integer classes (yaSSL::Integer and      TaoCrypt::Integer), we need to explicitly state the namespace      here to let gcc 2.96 deduce the correct type.    */    yaSSL::Integer int_;    void assign(const byte* b, uint s) { int_.assign(b,s); }};// openSSL sessionclass SSL_SESSION {    opaque      sessionID_[ID_LEN];    opaque      master_secret_[SECRET_LEN];    Cipher      suite_[SUITE_LEN];    uint        bornOn_;                        // create time in seconds    uint        timeout_;                       // timeout in seconds    RandomPool& random_;                        // will clean master secretpublic:    explicit SSL_SESSION(RandomPool&);    SSL_SESSION(const SSL&, RandomPool&);    ~SSL_SESSION();    const opaque* GetID()      const;    const opaque* GetSecret()  const;    const Cipher* GetSuite()   const;          uint    GetBornOn()  const;          uint    GetTimeOut() const;          void    SetTimeOut(uint);    SSL_SESSION& operator=(const SSL_SESSION&); // allow assign for resumptionprivate:    SSL_SESSION(const SSL_SESSION&);            // hide copy};// holds all sessionsclass Sessions {    mySTL::list<SSL_SESSION*> list_;    RandomPool random_;                 // for session cleaning    Mutex      mutex_;                  // no-op for single threaded    Sessions() {}                       // only GetSessions can createpublic:     SSL_SESSION* lookup(const opaque*, SSL_SESSION* copy = 0);    void         add(const SSL&);    void         remove(const opaque*);    ~Sessions();    friend Sessions& GetSessions(); // singleton creatorprivate:    Sessions(const Sessions&);              // hide copy    Sessions& operator=(const Sessions&);   // and assign};Sessions&   GetSessions();      // forward singletonssslFactory& GetSSL_Factory();// openSSL method and context typesclass SSL_METHOD {    ProtocolVersion version_;    ConnectionEnd   side_;    bool            verifyPeer_;    bool            failNoCert_;public:    explicit SSL_METHOD(ConnectionEnd ce, ProtocolVersion pv);    ProtocolVersion getVersion() const;    ConnectionEnd   getSide()    const;    void setVerifyPeer();    void setFailNoCert();    bool verifyPeer() const;    bool failNoCert() const;private:    SSL_METHOD(const SSL_METHOD&);              // hide copy    SSL_METHOD& operator=(const SSL_METHOD&);   // and assign};struct Ciphers {    bool        setSuites_;             // user set suites from default    byte        suites_[MAX_SUITE_SZ];  // new suites    int         suiteSz_;               // suite length in bytes    Ciphers() : setSuites_(false), suiteSz_(0) {}};struct DH;  // forward// save for SSL constructionstruct DH_Parms {    Integer p_;    Integer g_;    bool set_;   // if set by user    DH_Parms() : set_(false) {}};enum StatsField {     Accept, Connect, AcceptGood, ConnectGood, AcceptRenegotiate,    ConnectRenegotiate, Hits, CbHits, CacheFull, Misses, Timeouts, Number,    GetCacheSize, VerifyMode, VerifyDepth 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -