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

📄 yassl_imp.hpp

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 HPP
📖 第 1 页 / 共 2 页
字号:
/* yassl_imp.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 implementation header defines all strucutres from the SSL.v3  *  specification "draft-freier-ssl-version3-02.txt" *  all page citations refer to this document unless otherwise noted. */#ifndef yaSSL_IMP_HPP#define yaSSL_IMP_HPP#ifdef _MSC_VER    // disable truncated debug symbols    #pragma warning(disable:4786)#endif#include "yassl_types.hpp"#include "factory.hpp"#include "list.hpp"         // mySTL::listnamespace yaSSL {class SSL;              // forward declsclass input_buffer;class output_buffer;struct ProtocolVersion {    uint8 major_;    uint8 minor_;     // major and minor SSL/TLS version numbers    ProtocolVersion(uint8 maj = 3, uint8 min = 0);};// Record Layer Header for PlainText, Compressed, and CipherTextstruct RecordLayerHeader {    ContentType     type_;    ProtocolVersion version_;    uint16          length_;             // should not exceed 2^14};// base for all messagesstruct Message : public virtual_base {    virtual input_buffer& set(input_buffer&) =0;       virtual output_buffer& get(output_buffer&) const =0;    virtual void Process(input_buffer&, SSL&) =0;    virtual ContentType get_type() const =0;    virtual uint16      get_length() const =0;    virtual ~Message() {}};class ChangeCipherSpec : public Message {    CipherChoice type_;public:    ChangeCipherSpec();    friend input_buffer& operator>>(input_buffer&, ChangeCipherSpec&);    friend output_buffer& operator<<(output_buffer&, const ChangeCipherSpec&);    input_buffer& set(input_buffer& in);    output_buffer& get(output_buffer& out) const;    ContentType get_type()   const;    uint16      get_length() const;    void Process(input_buffer&, SSL&);private:    ChangeCipherSpec(const ChangeCipherSpec&);            // hide copy    ChangeCipherSpec& operator=(const ChangeCipherSpec&); // and assign};class Alert : public Message {    AlertLevel       level_;    AlertDescription description_;public:    Alert() {}    Alert(AlertLevel al, AlertDescription ad);    ContentType get_type()   const;    uint16      get_length() const;    void Process(input_buffer&, SSL&);    friend input_buffer& operator>>(input_buffer&, Alert&);    friend output_buffer& operator<<(output_buffer&, const Alert&);       input_buffer& set(input_buffer& in);    output_buffer& get(output_buffer& out) const;private:    Alert(const Alert&);            // hide copy    Alert& operator=(const Alert&); // and assign};class Data : public Message {    uint16        length_;    opaque*       buffer_;         // read  buffer used by fillData input    const opaque* write_buffer_;   // write buffer used by output operatorpublic:    Data();    Data(uint16 len, opaque* b);    Data(uint16 len, const opaque* w);    friend output_buffer& operator<<(output_buffer&, const Data&);    input_buffer& set(input_buffer& in);    output_buffer& get(output_buffer& out) const;    ContentType   get_type()     const;    uint16        get_length()   const;    const opaque* get_buffer()   const;    void          set_length(uint16 l);    opaque*       set_buffer();    void Process(input_buffer&, SSL&);private:    Data(const Data&);            // hide copy    Data& operator=(const Data&); // and assign};uint32 c24to32(const uint24);       // forward form internal headervoid   c32to24(uint32, uint24&);// HandShake header, same for each message type from page 20/21class HandShakeHeader : public Message {    HandShakeType      type_;    uint24             length_;      // length of messagepublic:    HandShakeHeader() {}    ContentType   get_type()   const;    uint16        get_length() const;    HandShakeType get_handshakeType() const;    void Process(input_buffer&, SSL&);    void set_type(HandShakeType hst);    void set_length(uint32 u32);    friend input_buffer& operator>>(input_buffer&, HandShakeHeader&);    friend output_buffer& operator<<(output_buffer&, const HandShakeHeader&);    input_buffer& set(input_buffer& in);    output_buffer& get(output_buffer& out) const;private:    HandShakeHeader(const HandShakeHeader&);            // hide copy    HandShakeHeader& operator=(const HandShakeHeader&); // and assign};// Base Class for all handshake messagesclass HandShakeBase : public virtual_base {    int     length_;public:    int     get_length() const;    void    set_length(int);    // for building buffer's type field    virtual HandShakeType get_type() const =0;                    // handles dispactch of proper >>    virtual input_buffer&  set(input_buffer& in) =0;    virtual output_buffer& get(output_buffer& out) const =0;    virtual void Process(input_buffer&, SSL&) =0;    virtual ~HandShakeBase() {}};struct HelloRequest : public HandShakeBase {    input_buffer&  set(input_buffer& in);    output_buffer& get(output_buffer& out) const;    void Process(input_buffer&, SSL&);    HandShakeType get_type() const;};// The Client's Hello Message from page 23class ClientHello : public HandShakeBase {    ProtocolVersion     client_version_;    Random              random_;    uint8               id_len_;                         // session id length    opaque              session_id_[ID_LEN];    uint16              suite_len_;                      // cipher suite length    opaque              cipher_suites_[MAX_SUITE_SZ];    uint8               comp_len_;                       // compression length    CompressionMethod   compression_methods_;  public:    friend input_buffer&  operator>>(input_buffer&, ClientHello&);    friend output_buffer& operator<<(output_buffer&, const ClientHello&);      input_buffer&  set(input_buffer& in);    output_buffer& get(output_buffer& out) const;    HandShakeType  get_type() const;    void Process(input_buffer&, SSL&);    const opaque* get_random() const;    friend void buildClientHello(SSL&, ClientHello&, CompressionMethod);    friend void ProcessOldClientHello(input_buffer& input, SSL& ssl);    ClientHello();    explicit ClientHello(ProtocolVersion pv);private:    ClientHello(const ClientHello&);            // hide copy    ClientHello& operator=(const ClientHello&); // and assign};// The Server's Hello Message from page 24class ServerHello : public HandShakeBase {    ProtocolVersion     server_version_;    Random              random_;    uint8               id_len_;                 // session id length    opaque              session_id_[ID_LEN];    opaque              cipher_suite_[SUITE_LEN];    CompressionMethod   compression_method_;public:    explicit ServerHello(ProtocolVersion pv);    ServerHello();              friend input_buffer&  operator>>(input_buffer&, ServerHello&);    friend output_buffer& operator<<(output_buffer&, const ServerHello&);       input_buffer&  set(input_buffer& in);    output_buffer& get(output_buffer& out) const;    HandShakeType  get_type() const;    void Process(input_buffer&, SSL&);    const opaque* get_random() const;    friend void buildServerHello(SSL&, ServerHello&);private:    ServerHello(const ServerHello&);            // hide copy    ServerHello& operator=(const ServerHello&); // and assign};class x509;  // Certificate could be a chainclass Certificate : public HandShakeBase {    const x509* cert_;public:    Certificate();    explicit Certificate(const x509* cert);     friend output_buffer& operator<<(output_buffer&, const Certificate&);    const opaque* get_buffer() const;      // Process handles input, needs SSL    input_buffer&  set(input_buffer& in);    output_buffer& get(output_buffer& out) const;    HandShakeType get_type() const;    void Process(input_buffer&, SSL&);private:    Certificate(const Certificate&);            // hide copy    Certificate& operator=(const Certificate&); // and assign};// RSA Public Keystruct ServerRSAParams {    opaque* rsa_modulus_;    opaque* rsa_exponent_;};// Ephemeral Diffie-Hellman Parametersclass ServerDHParams {    int pSz_;    int gSz_;    int pubSz_;    opaque* p_;    opaque* g_;    opaque* Ys_;public:    ServerDHParams();    ~ServerDHParams();    int get_pSize()   const;    int get_gSize()   const;    int get_pubSize() const;    const opaque* get_p()   const;    const opaque* get_g()   const;    const opaque* get_pub() const;    opaque* alloc_p(int sz);    opaque* alloc_g(int sz);    opaque* alloc_pub(int sz);private:    ServerDHParams(const ServerDHParams&);            // hide copy    ServerDHParams& operator=(const ServerDHParams&); // and assign};struct ServerKeyBase : public virtual_base {    virtual ~ServerKeyBase() {}    virtual void build(SSL&) {}    virtual void read(SSL&, input_buffer&) {}    virtual int  get_length() const;         virtual opaque* get_serverKey() const;};// Server random number for FORTEZZA KEAstruct Fortezza_Server : public ServerKeyBase {    opaque r_s_[FORTEZZA_MAX];};struct SignatureBase : public virtual_base {    virtual ~SignatureBase() {}};struct anonymous_sa : public SignatureBase {};struct Hashes {    uint8 md5_[MD5_LEN];    uint8 sha_[SHA_LEN];};    struct rsa_sa : public SignatureBase {    Hashes hashes_;};struct dsa_sa : public SignatureBase {    uint8 sha_[SHA_LEN];};// Server's Diffie-Hellman exchangeclass DH_Server : public ServerKeyBase {    ServerDHParams  parms_;    opaque*         signature_;

⌨️ 快捷键说明

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