netscape-revival
security/lib/ssl/sslproto.h
#ifndef __sslproto_h_
#define __sslproto_h_
/*
** Various and sundry protocol constants. DON'T CHANGE THESE. These
** values are defined by the SSL protocol specificaiton.
**
** Author: Kipp E.B. Hickman
** Last-Modified: Wed Jan 25 11:25:26 PST 1995
*/
#define SSL_LIBRARY_VERSION_2 0x0002
#define SSL_LIBRARY_VERSION_2_1 0x0201
#define SSL_LIBRARY_VERSION_3_0 0x0300
/* Header length's of some of the messages */
#define SSL_HL_ERROR_HBYTES 3
#define SSL_HL_CLIENT_HELLO_HBYTES 9
#define SSL_HL_CLIENT_MASTER_KEY_HBYTES 10
#define SSL_HL_CLIENT_FINISHED_HBYTES 1
#define SSL_HL_SERVER_HELLO_HBYTES 11
#define SSL_HL_SERVER_VERIFY_HBYTES 1
#define SSL_HL_SERVER_FINISHED_HBYTES 1
#define SSL_HL_REQUEST_CERTIFICATE_HBYTES 2
#define SSL_HL_CLIENT_CERTIFICATE_HBYTES 6
/* Security handshake protocol codes */
#define SSL_MT_ERROR 0
#define SSL_MT_CLIENT_HELLO 1
#define SSL_MT_CLIENT_MASTER_KEY 2
#define SSL_MT_CLIENT_FINISHED 3
#define SSL_MT_SERVER_HELLO 4
#define SSL_MT_SERVER_VERIFY 5
#define SSL_MT_SERVER_FINISHED 6
#define SSL_MT_REQUEST_CERTIFICATE 7
#define SSL_MT_CLIENT_CERTIFICATE 8
/* Certificate type's */
#define SSL_CT_X509_CERTIFICATE 0x01
/* XXX Not implemented yet
#define SSL_PKCS6_CERTIFICATE 0x02
*/
#define SSL_AT_MD5_WITH_RSA_ENCRYPTION 0x01
/* Error codes */
#define SSL_PE_NO_CYPHERS 0x0001
#define SSL_PE_NO_CERTIFICATE 0x0002
#define SSL_PE_BAD_CERTIFICATE 0x0004
#define SSL_PE_UNSUPPORTED_CERTIFICATE_TYPE 0x0006
/* values for "on" argument to SSL_SetPolicy */
#define SSL_NOT_ALLOWED 0
#define SSL_ALLOWED 1
#define SSL_RESTRICTED 2
/* Cypher kind's (not the spec version!) */
#define SSL_CK_RC4_128_WITH_MD5 0x01
#define SSL_CK_RC4_128_EXPORT40_WITH_MD5 0x02
#define SSL_CK_RC2_128_CBC_WITH_MD5 0x03
#define SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5 0x04
#define SSL_CK_IDEA_128_CBC_WITH_MD5 0x05
#define SSL_CK_DES_64_CBC_WITH_MD5 0x06
#define SSL_CK_DES_192_EDE3_CBC_WITH_MD5 0x07
/* Cipher Suite "Families" */
#define CIPHER_FAMILY_PKCS12 "PKCS12"
#define CIPHER_FAMILY_SMIME "SMIME"
#define CIPHER_FAMILY_SSL2 "SSLv2"
#define CIPHER_FAMILY_SSL3 "SSLv3"
#define CIPHER_FAMILY_SSL "SSL"
#define CIPHER_FAMILY_ALL ""
#define CIPHER_FAMILY_UNKNOWN "UNKNOWN"
#define CIPHER_FAMILYID_MASK 0xFFFF0000L
#define CIPHER_FAMILYID_SSL 0x00000000L
#define CIPHER_FAMILYID_SMIME 0x00010000L
#define CIPHER_FAMILYID_PKCS12 0x00020000L
/* Cipher enables. These are used only for SSL_EnableCipher
* These values define the SSL2 suites, and do not colide with the
* SSL3 Cipher suites defined below.
*/
#define SSL_EN_RC4_128_WITH_MD5 0xFF01
#define SSL_EN_RC4_128_EXPORT40_WITH_MD5 0xFF02
#define SSL_EN_RC2_128_CBC_WITH_MD5 0xFF03
#define SSL_EN_RC2_128_CBC_EXPORT40_WITH_MD5 0xFF04
#define SSL_EN_IDEA_128_CBC_WITH_MD5 0xFF05
#define SSL_EN_DES_64_CBC_WITH_MD5 0xFF06
#define SSL_EN_DES_192_EDE3_CBC_WITH_MD5 0xFF07
/* SSL v3 Cipher Suites */
#define SSL_NULL_WITH_NULL_NULL 0x0000
#define SSL_RSA_WITH_NULL_MD5 0x0001
#define SSL_RSA_WITH_NULL_SHA 0x0002
#define SSL_RSA_EXPORT_WITH_RC4_40_MD5 0x0003
#define SSL_RSA_WITH_RC4_128_MD5 0x0004
#define SSL_RSA_WITH_RC4_128_SHA 0x0005
#define SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 0x0006
#define SSL_RSA_WITH_IDEA_CBC_SHA 0x0007
#define SSL_RSA_EXPORT_WITH_DES40_CBC_SHA 0x0008
#define SSL_RSA_WITH_DES_CBC_SHA 0x0009
#define SSL_RSA_WITH_3DES_EDE_CBC_SHA 0x000a
#define SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA 0x000b
#define SSL_DH_DSS_WITH_DES_CBC_SHA 0x000c
#define SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA 0x000d
#define SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA 0x000e
#define SSL_DH_RSA_WITH_DES_CBC_SHA 0x000f
#define SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA 0x0010
#define SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA 0x0011
#define SSL_DHE_DSS_WITH_DES_CBC_SHA 0x0012
#define SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA 0x0013
#define SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA 0x0014
#define SSL_DHE_RSA_WITH_DES_CBC_SHA 0x0015
#define SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA 0x0016
#define SSL_DH_ANON_EXPORT_WITH_RC4_40_MD5 0x0017
#define SSL_DH_ANON_WITH_RC4_128_MD5 0x0018
#define SSL_DH_ANON_EXPORT_WITH_DES40_CBC_SHA 0x0019
#define SSL_DH_ANON_WITH_DES_CBC_SHA 0x001a
#define SSL_DH_ANON_WITH_3DES_EDE_CBC_SHA 0x001b
#define SSL_FORTEZZA_DMS_WITH_NULL_SHA 0x001c
#define SSL_FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA 0x001d
#define SSL_FORTEZZA_DMS_WITH_RC4_128_SHA 0x001e
/* SMIME "Cipher Suites" */
#define SMIME_RC2_CBC_40 (CIPHER_FAMILYID_SMIME | 0001)
#define SMIME_RC2_CBC_64 (CIPHER_FAMILYID_SMIME | 0002)
#define SMIME_RC2_CBC_128 (CIPHER_FAMILYID_SMIME | 0003)
#define SMIME_DES_CBC_56 (CIPHER_FAMILYID_SMIME | 0011)
#define SMIME_DES_EDE3_168 (CIPHER_FAMILYID_SMIME | 0012)
#define SMIME_RC5PAD_64_16_40 (CIPHER_FAMILYID_SMIME | 0021)
#define SMIME_RC5PAD_64_16_64 (CIPHER_FAMILYID_SMIME | 0022)
#define SMIME_RC5PAD_64_16_128 (CIPHER_FAMILYID_SMIME | 0023)
/* PKCS12 "Cipher Suites" */
#define PKCS12_RC2_CBC_40 (CIPHER_FAMILYID_PKCS12 | 0001)
#define PKCS12_RC2_CBC_128 (CIPHER_FAMILYID_PKCS12 | 0002)
#define PKCS12_RC4_40 (CIPHER_FAMILYID_PKCS12 | 0011)
#define PKCS12_RC4_128 (CIPHER_FAMILYID_PKCS12 | 0012)
#define PKCS12_DES_56 (CIPHER_FAMILYID_PKCS12 | 0021)
#define PKCS12_DES_EDE3_168 (CIPHER_FAMILYID_PKCS12 | 0022)
/* SMIME version numbers are negative, to avoid colliding with SSL versions */
#define SMIME_LIBRARY_VERSION_1_0 -0x0100
#endif /* __sslproto_h_ */