ssl3prot.h

来自「支持SSL v2/v3, TLS, PKCS #5, PKCS #7, PKCS」· C头文件 代码 · 共 308 行

H
308
字号
/* * Various and sundry protocol constants. DON'T CHANGE THESE. These * values are defined by the SSL 3.0 protocol specification. * * The contents of this file are subject to the Mozilla Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/MPL/ *  * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. *  * The Original Code is the Netscape security libraries. *  * The Initial Developer of the Original Code is Netscape * Communications Corporation.  Portions created by Netscape are  * Copyright (C) 1994-2000 Netscape Communications Corporation.  All * Rights Reserved. *  * Contributor(s): *  * Alternatively, the contents of this file may be used under the * terms of the GNU General Public License Version 2 or later (the * "GPL"), in which case the provisions of the GPL are applicable  * instead of those above.  If you wish to allow use of your  * version of this file only under the terms of the GPL and not to * allow others to use your version of this file under the MPL, * indicate your decision by deleting the provisions above and * replace them with the notice and other provisions required by * the GPL.  If you do not delete the provisions above, a recipient * may use your version of this file under either the MPL or the * GPL. * * $Id: ssl3prot.h,v 1.1 2000/03/31 19:33:16 relyea%netscape.com Exp $ */#ifndef __ssl3proto_h_#define __ssl3proto_h_typedef uint8 SSL3Opaque;typedef uint16 SSL3ProtocolVersion;/* version numbers are defined in sslproto.h */typedef uint16 ssl3CipherSuite;/* The cipher suites are defined in sslproto.h */#define MAX_CERT_TYPES			10#define MAX_COMPRESSION_METHODS		10#define MAX_MAC_LENGTH			64#define MAX_PADDING_LENGTH		64#define MAX_KEY_LENGTH			64#define EXPORT_KEY_LENGTH		 5#define SSL3_RANDOM_LENGTH		32#define SSL3_RECORD_HEADER_LENGTH	 5#define MAX_FRAGMENT_LENGTH		16384     typedef enum {    content_change_cipher_spec = 20,     content_alert              = 21,    content_handshake          = 22,     content_application_data   = 23} SSL3ContentType;typedef struct {    SSL3ContentType     type;    SSL3ProtocolVersion version;    uint16              length;    SECItem             fragment;} SSL3Plaintext;typedef struct {    SSL3ContentType     type;    SSL3ProtocolVersion version;    uint16              length;    SECItem             fragment;} SSL3Compressed;typedef struct {    SECItem    content;    SSL3Opaque MAC[MAX_MAC_LENGTH];} SSL3GenericStreamCipher;typedef struct {    SECItem    content;    SSL3Opaque MAC[MAX_MAC_LENGTH];    uint8      padding[MAX_PADDING_LENGTH];    uint8      padding_length;} SSL3GenericBlockCipher;typedef enum { change_cipher_spec_choice = 1 } SSL3ChangeCipherSpecChoice;typedef struct {    SSL3ChangeCipherSpecChoice choice;} SSL3ChangeCipherSpec;typedef enum { alert_warning = 1, alert_fatal = 2 } SSL3AlertLevel;typedef enum {    close_notify            = 0,    unexpected_message      = 10,    bad_record_mac          = 20,    decryption_failed       = 21,	/* TLS only */    record_overflow         = 22,	/* TLS only */    decompression_failure   = 30,    handshake_failure       = 40,    no_certificate          = 41,	/* SSL3 only, NOT TLS */    bad_certificate         = 42,    unsupported_certificate = 43,    certificate_revoked     = 44,    certificate_expired     = 45,    certificate_unknown     = 46,    illegal_parameter       = 47,/* All alerts below are TLS only. */    unknown_ca              = 48,    access_denied           = 49,    decode_error            = 50,    decrypt_error           = 51,    export_restriction      = 60,    protocol_version        = 70,    insufficient_security   = 71,    internal_error          = 80,    user_canceled           = 90,    no_renegotiation        = 100} SSL3AlertDescription;typedef struct {    SSL3AlertLevel       level;    SSL3AlertDescription description;} SSL3Alert;typedef enum {    hello_request	= 0,     client_hello	= 1,     server_hello	= 2,    certificate 	= 11,     server_key_exchange = 12,    certificate_request	= 13,     server_hello_done	= 14,    certificate_verify	= 15,     client_key_exchange	= 16,     finished		= 20} SSL3HandshakeType;typedef struct {    uint8 empty;} SSL3HelloRequest;     typedef struct {    SSL3Opaque rand[SSL3_RANDOM_LENGTH];} SSL3Random;     typedef struct {    SSL3Opaque id[32];    uint8 length;} SSL3SessionID;     typedef enum { compression_null = 0 } SSL3CompressionMethod;     typedef struct {    SSL3ProtocolVersion   client_version;    SSL3Random            random;    SSL3SessionID         session_id;    SECItem               cipher_suites;    uint8                 cm_count;    SSL3CompressionMethod compression_methods[MAX_COMPRESSION_METHODS];} SSL3ClientHello;     typedef struct  {    SSL3ProtocolVersion   server_version;    SSL3Random            random;    SSL3SessionID         session_id;    ssl3CipherSuite       cipher_suite;    SSL3CompressionMethod compression_method;} SSL3ServerHello;     typedef struct {    SECItem list;} SSL3Certificate;typedef enum {    sign_null, sign_rsa, sign_dsa} SSL3SignType;/* The SSL key exchange method used */     typedef enum {    kea_null,     kea_rsa,     kea_rsa_export,    kea_rsa_export_1024,    kea_dh_dss,     kea_dh_dss_export,     kea_dh_rsa,     kea_dh_rsa_export,    kea_dhe_dss,     kea_dhe_dss_export,     kea_dhe_rsa,     kea_dhe_rsa_export,    kea_dh_anon,     kea_dh_anon_export,     kea_fortezza,     kea_rsa_fips} SSL3KeyExchangeAlgorithm;     typedef struct {    SECItem modulus;    SECItem exponent;} SSL3ServerRSAParams;typedef struct {    SECItem p;    SECItem g;    SECItem Ys;} SSL3ServerDHParams;typedef struct {    union {	SSL3ServerDHParams dh;	SSL3ServerRSAParams rsa;    } u;} SSL3ServerParams;typedef struct {    uint8 md5[16];    uint8 sha[20];} SSL3Hashes;     typedef struct {    union {	SSL3Opaque anonymous;	SSL3Hashes certified;    } u;} SSL3ServerKeyExchange;     typedef enum {    ct_RSA_sign 	=  1,     ct_DSS_sign 	=  2,     ct_RSA_fixed_DH 	=  3,    ct_DSS_fixed_DH 	=  4,     ct_RSA_ephemeral_DH =  5,     ct_DSS_ephemeral_DH =  6,    ct_Fortezza 	= 20} SSL3ClientCertificateType;     typedef SECItem *SSL3DistinquishedName;typedef struct {    SSL3Opaque client_version[2];    SSL3Opaque random[46];} SSL3RSAPreMasterSecret;     typedef SECItem SSL3EncryptedPreMasterSecret;/* Following struct is the format of a Fortezza ClientKeyExchange message. */typedef struct {    SECItem    y_c;    SSL3Opaque r_c                      [128];    SSL3Opaque y_signature              [40];    SSL3Opaque wrapped_client_write_key [12];    SSL3Opaque wrapped_server_write_key [12];    SSL3Opaque client_write_iv          [24];    SSL3Opaque server_write_iv          [24];    SSL3Opaque master_secret_iv         [24];    SSL3Opaque encrypted_preMasterSecret[48];} SSL3FortezzaKeys;typedef SSL3Opaque SSL3MasterSecret[48];typedef enum { implicit, explicit } SSL3PublicValueEncoding;     typedef struct {    union {	SSL3Opaque implicit;	SECItem    explicit;    } dh_public;} SSL3ClientDiffieHellmanPublic;     typedef struct {    union {	SSL3EncryptedPreMasterSecret  rsa;	SSL3ClientDiffieHellmanPublic diffie_helman;	SSL3FortezzaKeys              fortezza;    } exchange_keys;} SSL3ClientKeyExchange;typedef SSL3Hashes SSL3PreSignedCertificateVerify;typedef SECItem SSL3CertificateVerify;typedef enum {    sender_client = 0x434c4e54,    sender_server = 0x53525652} SSL3Sender;typedef SSL3Hashes SSL3Finished;   typedef struct {    SSL3Opaque verify_data[12];} TLSFinished;#endif /* __ssl3proto_h_ */

⌨️ 快捷键说明

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