LCOV - code coverage report
Current view: top level - src - SSLCiphers.h (source / functions) Hit Total Coverage
Test: app.info Lines: 1 1 100.0 %
Date: 2010-12-13 Functions: 2 5 40.0 %
Branches: 1 4 25.0 %

           Branch data     Line data    Source code
       1                 :            : // $Id: SSLCiphers.h 1678 2005-11-08 19:16:37Z vern $
       2                 :            : 
       3                 :            : #ifndef SSL_CIPHERS_H
       4                 :            : #define SSL_CIPHERS_H
       5                 :            : 
       6                 :            : #include "Dict.h"
       7                 :            : 
       8                 :            : // --- definitions for sslv3x cipher handling ---------------------------------
       9                 :            : 
      10                 :            : /*!
      11                 :            :  * In SSLv2, a cipher spec consists of three bytes.
      12                 :            :  */
      13                 :            : enum SSLv2_CipherSpec {
      14                 :            :         // --- standard SSLv2 ciphers
      15                 :            :         SSL_CK_RC4_128_WITH_MD5              = 0x010080,
      16                 :            :         SSL_CK_RC4_128_EXPORT40_WITH_MD5     = 0x020080,
      17                 :            :         SSL_CK_RC2_128_CBC_WITH_MD5          = 0x030080,
      18                 :            :         SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5 = 0x040080,
      19                 :            :         SSL_CK_IDEA_128_CBC_WITH_MD5         = 0x050080,
      20                 :            :         SSL_CK_DES_64_CBC_WITH_MD5           = 0x060040,
      21                 :            :         SSL_CK_DES_192_EDE3_CBC_WITH_MD5     = 0x0700C0,
      22                 :            :         SSL_CK_RC4_64_WITH_MD5               = 0x080080
      23                 :            : };
      24                 :            : 
      25                 :            : 
      26                 :            : /*!
      27                 :            :  * In SSLv3x, a cipher spec consists of two bytes.
      28                 :            :  */
      29                 :            : enum SSL3_1_CipherSpec {
      30                 :            :         // --- standard SSLv3x ciphers
      31                 :            :         TLS_NULL_WITH_NULL_NULL                = 0x0000,
      32                 :            :         TLS_RSA_WITH_NULL_MD5                  = 0x0001,
      33                 :            :         TLS_RSA_WITH_NULL_SHA                  = 0x0002,
      34                 :            :         TLS_RSA_EXPORT_WITH_RC4_40_MD5         = 0x0003,
      35                 :            :         TLS_RSA_WITH_RC4_128_MD5               = 0x0004,
      36                 :            :         TLS_RSA_WITH_RC4_128_SHA               = 0x0005,
      37                 :            :         TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5     = 0x0006,
      38                 :            :         TLS_RSA_WITH_IDEA_CBC_SHA              = 0x0007,
      39                 :            :         TLS_RSA_EXPORT_WITH_DES40_CBC_SHA      = 0x0008,
      40                 :            :         TLS_RSA_WITH_DES_CBC_SHA               = 0x0009,
      41                 :            :         TLS_RSA_WITH_3DES_EDE_CBC_SHA          = 0x000A,
      42                 :            :         TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA   = 0x000B,
      43                 :            :         TLS_DH_DSS_WITH_DES_CBC_SHA            = 0x000C,
      44                 :            :         TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA       = 0x000D,
      45                 :            :         TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA   = 0x000E,
      46                 :            :         TLS_DH_RSA_WITH_DES_CBC_SHA            = 0x000F,
      47                 :            :         TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA       = 0x0010,
      48                 :            :         TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA  = 0x0011,
      49                 :            :         TLS_DHE_DSS_WITH_DES_CBC_SHA           = 0x0012,
      50                 :            :         TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA      = 0x0013,
      51                 :            :         TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA  = 0x0014,
      52                 :            :         TLS_DHE_RSA_WITH_DES_CBC_SHA           = 0x0015,
      53                 :            :         TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA      = 0x0016,
      54                 :            :         TLS_DH_ANON_EXPORT_WITH_RC4_40_MD5     = 0x0017,
      55                 :            :         TLS_DH_ANON_WITH_RC4_128_MD5           = 0x0018,
      56                 :            :         TLS_DH_ANON_EXPORT_WITH_DES40_CBC_SHA  = 0x0019,
      57                 :            :         TLS_DH_ANON_WITH_DES_CBC_SHA           = 0x001A,
      58                 :            :         TLS_DH_ANON_WITH_3DES_EDE_CBC_SHA      = 0x001B,
      59                 :            :         // --- special SSLv3 ciphers
      60                 :            :         SSL_FORTEZZA_KEA_WITH_NULL_SHA         = 0x001C,
      61                 :            :         SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA = 0x001D,
      62                 :            :         SSL_FORTEZZA_KEA_WITH_RC4_128_SHA      = 0x001E,
      63                 :            :         // --- special SSLv3 FIPS ciphers
      64                 :            :         SSL_RSA_FIPS_WITH_DES_CBC_SHA              = 0xFEFE,
      65                 :            :         SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA         = 0XFEFF,
      66                 :            :         // --- new 56 bit export ciphers
      67                 :            :         TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA     = 0x0062,
      68                 :            :         TLS_RSA_EXPORT1024_WITH_RC4_56_SHA      = 0x0064,
      69                 :            :         TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA = 0x0063,
      70                 :            :         TLS_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA  = 0x0065,
      71                 :            :         TLS_DHE_DSS_WITH_RC4_128_SHA            = 0x0066,
      72                 :            :         // --- new AES ciphers
      73                 :            :         TLS_RSA_WITH_AES_128_CBC_SHA      = 0x002F,
      74                 :            :         TLS_DH_DSS_WITH_AES_128_CBC_SHA   = 0x0030,
      75                 :            :         TLS_DH_RSA_WITH_AES_128_CBC_SHA   = 0x0031,
      76                 :            :         TLS_DHE_DSS_WITH_AES_128_CBC_SHA  = 0x0032,
      77                 :            :         TLS_DHE_RSA_WITH_AES_128_CBC_SHA  = 0x0033,
      78                 :            :         TLS_DH_ANON_WITH_AES_128_CBC_SHA  = 0x0034,
      79                 :            :         TLS_RSA_WITH_AES_256_CBC_SHA      = 0x0035,
      80                 :            :         TLS_DH_DSS_WITH_AES_256_CBC_SHA   = 0x0036,
      81                 :            :         TLS_DH_RSA_WITH_AES_256_CBC_SHA   = 0x0037,
      82                 :            :         TLS_DHE_DSS_WITH_AES_256_CBC_SHA  = 0x0038,
      83                 :            :         TLS_DHE_RSA_WITH_AES_256_CBC_SHA  = 0x0039,
      84                 :            :         TLS_DH_ANON_WITH_AES_256_CBC_SHA  = 0x003A
      85                 :            : };
      86                 :            : 
      87                 :            : enum SSL_CipherType {
      88                 :            :         SSL_CIPHER_TYPE_STREAM,
      89                 :            :         SSL_CIPHER_TYPE_BLOCK,
      90                 :            :         SSL_CIPHER_TYPE_NULL
      91                 :            : };
      92                 :            : 
      93                 :            : enum SSL_BulkCipherAlgorithm {
      94                 :            :         SSL_CIPHER_NULL,
      95                 :            :         SSL_CIPHER_RC4,
      96                 :            :         SSL_CIPHER_RC2,
      97                 :            :         SSL_CIPHER_DES,
      98                 :            :         SSL_CIPHER_3DES,
      99                 :            :         SSL_CIPHER_DES40,
     100                 :            :         SSL_CIPHER_FORTEZZA,
     101                 :            :         SSL_CIPHER_IDEA,
     102                 :            :         SSL_CIPHER_AES
     103                 :            : };
     104                 :            : 
     105                 :            : enum SSL_MACAlgorithm {
     106                 :            :         SSL_MAC_NULL,
     107                 :            :         SSL_MAC_MD5,
     108                 :            :         SSL_MAC_SHA
     109                 :            : };
     110                 :            : 
     111                 :            : enum SSL_KeyExchangeAlgorithm {
     112                 :            :         SSL_KEY_EXCHANGE_NULL,
     113                 :            :         SSL_KEY_EXCHANGE_RSA,
     114                 :            :         SSL_KEY_EXCHANGE_RSA_EXPORT,
     115                 :            :         SSL_KEY_EXCHANGE_DH,
     116                 :            :         SSL_KEY_EXCHANGE_DH_DSS,
     117                 :            :         SSL_KEY_EXCHANGE_DH_DSS_EXPORT,
     118                 :            :         SSL_KEY_EXCHANGE_DH_RSA,
     119                 :            :         SSL_KEY_EXCHANGE_DH_RSA_EXPORT,
     120                 :            :         SSL_KEY_EXCHANGE_DHE_DSS,
     121                 :            :         SSL_KEY_EXCHANGE_DHE_DSS_EXPORT,
     122                 :            :         SSL_KEY_EXCHANGE_DHE_RSA,
     123                 :            :         SSL_KEY_EXCHANGE_DHE_RSA_EXPORT,
     124                 :            :         SSL_KEY_EXCHANGE_DH_ANON,
     125                 :            :         SSL_KEY_EXCHANGE_DH_ANON_EXPORT,
     126                 :            :         SSL_KEY_EXCHANGE_FORTEZZA_KEA,
     127                 :            :         // --- new 56 bit export ciphers
     128                 :            :         SSL_KEY_EXCHANGE_RSA_EXPORT1024,
     129                 :            :         SSL_KEY_EXCHANGE_DHE_DSS_EXPORT1024
     130                 :            : };
     131                 :            : 
     132                 :            : #if 0
     133                 :            : struct SSL_CipherSpecImprove {
     134                 :            :         uint32 identifier;
     135                 :            : 
     136                 :            :         // SSL_CipherType cipherType;
     137                 :            :         SSL_BulkCipherAlgorithm encryptionAlgorithm;
     138                 :            :         SSL_BulkCipherAlgorithm authenticationAlgorithm;
     139                 :            :         SSL_BulkCipherAlgorithm keyAlgorithm;
     140                 :            :         SSL_MACAlgorithm        macAlgorithm;
     141                 :            : 
     142                 :            :         int clearkeySize;
     143                 :            :         int encryptedkeySize;
     144                 :            :         uint32 flags;   // IsExportable IsSSLv2 IsSSLv30 IsSSLv31
     145                 :            :         const char* fullName = "TLS_WITH_NULL_NULL";
     146                 :            : 
     147                 :            : };
     148                 :            : #endif
     149                 :            : 
     150                 :            : struct SSL_CipherSpec {
     151                 :            :         uint32 identifier; ///< type code of the CIPHER-SPEC (2 or 3 Bytes)
     152                 :            : 
     153                 :            :         SSL_CipherType cipherType;
     154                 :            :         uint32 flags;
     155                 :            :         SSL_BulkCipherAlgorithm bulkCipherAlgorithm;
     156                 :            :         SSL_MACAlgorithm macAlgorithm;
     157                 :            :         SSL_KeyExchangeAlgorithm keyExchangeAlgorithm;
     158                 :            : 
     159                 :            :         int clearKeySize;     ///< size in bits of plaintext part of master key
     160                 :            :         int encryptedKeySize; ///< size in bits of encrypted part of master key
     161                 :            :         int hashSize;
     162                 :            : };
     163                 :            : 
     164                 :            : const uint32 SSL_FLAG_EXPORT = 0x0001; ///< set if exportable cipher
     165                 :            : const uint32 SSL_FLAG_SSLv20 = 0x0002; ///< set if cipher defined for SSLv20
     166                 :            : const uint32 SSL_FLAG_SSLv30 = 0x0004; ///< set if cipher defined for SSLv30
     167                 :            : const uint32 SSL_FLAG_SSLv31 = 0x0008; ///< set if cipher defined for SSLv31
     168                 :            : 
     169 [ #  # ][ -  + ]:          6 : declare(PDict, SSL_CipherSpec);
     170                 :            : extern PDict(SSL_CipherSpec) SSL_CipherSpecDict;
     171                 :            : extern SSL_CipherSpec SSL_CipherSpecs[];
     172                 :            : extern const uint SSL_CipherSpecs_Count;
     173                 :            : 
     174                 :            : #endif

Generated by: LCOV version 1.8