wtls_machine-decl.h
上传用户:gzpyjq
上传日期:2013-01-31
资源大小:1852k
文件大小:4k
源码类别:

手机WAP编程

开发平台:

WINDOWS

  1. /*
  2.  * wtls_machine-decl.h - macro call for generating WTLS server state machine. See 
  3.  * the architecture document for guidance how to use and update it.
  4.  *
  5.  * By Nick Clarey <nclarey@3glab.com> (c) 3GLab Ltd.
  6.  *
  7.  * The WTLSMachine data structure preserves the state of the existing WTLS
  8.  * transaction. The fields which are included;
  9.  *
  10.  * Machine identification: address four-tuple
  11.  * Connection End : Server (1) or Client (2) This is always "server"
  12.  *                                 (at least at the moment)
  13.  * Bulk Cipher Algorithm : The algorithm to be used for stream or block encryption
  14.  * Key Size : ?????
  15.  * IV Size : The base IV used to calculate a record level IV for block ciphers running
  16.  *                    in CBC mode for records sent by the server
  17.  * MAC Algorithm : The algorithm identifier used for message authentication.
  18.  * Master Secret : A shared secret between the two peers
  19.  * Client Random : A random value supplied by the client
  20.  * Server Random : A random value supplied by the server
  21.  * Sequence Number Mode : Off (0), Implicit (1) or Explicit (2)
  22.  * Key Refresh rate : New keys for MAC secret, IV and Encryption are calculated
  23.  *                                   every "n", where n = 2^(RefreshRate)
  24.  * Compression Method : The algorithm to compress data prior to encryption
  25.  *
  26.  */
  27. #if !defined(MACHINE) 
  28. #error "wtls_machine-decl.h: Macro MACHINE is missing."
  29. #elif !defined(ENUM) 
  30. #error "wtls_machine-decl.h: Macro ENUM is missing."
  31. #elif !defined(ADDRTUPLE) 
  32. #error "wtls_machine-decl.h: Macro ADDRTUPLE is missing."
  33. #elif !defined(INTEGER) 
  34. #error "wtls_machine-decl.h: Macro INTEGER is missing."
  35. #elif !defined(OCTSTR) 
  36. #error "wtls_machine-decl.h: Macro OCTSTR is missing."
  37. #elif !defined(PDULIST) 
  38. #error "wtls_machine-decl.h: Macro PDULIST is missing."
  39. #endif
  40. /* Need to add server sent and client received packets for sequence numbering */
  41. /* Last received packet maybe needs to be hashed according to Alert message in
  42.    case we need to send an alert. */
  43. MACHINE(ENUM(state)
  44.         ADDRTUPLE(addr_tuple) /* The source address/port and dest address/port */
  45.         INTEGER(bulk_cipher_algorithm) /* Bulk Cipher Algorithm identifier */
  46.         INTEGER(cipher_type)                    /* Cipher type */
  47.         INTEGER(mac_algorithm)                  /* MAC Algorithm identifier */
  48.         OCTSTR(client_random)                   /* The client's random number */
  49.         OCTSTR(server_random)                   /* The server's random number */
  50.         OCTSTR(master_secret)                   /* The master secret */
  51.         INTEGER (key_size)              /* The "key size". Which key size, I have no idea */
  52.         INTEGER (key_material_length)   /* and what might that be ? */
  53.         INTEGER (is_exportable)                 /* exportable flag (?) */
  54.         INTEGER(iv_size)                /* The IV size */
  55.         INTEGER(mac_size)                               /* MAC size */
  56.         INTEGER(mac_key_size)                   /* MAC key size */
  57.         INTEGER(sequence_number_mode)   /* The sequence number mode */
  58.         INTEGER(key_refresh)                    /* How often we should refresh our keys */
  59.         OCTSTR(compression_method)              /* The compression algorithm */
  60.         INTEGER(encrypted) /* set if packets are encrypted */
  61.         OCTSTR(client_write_MAC_secret) /*  */
  62.         OCTSTR(client_write_enc_key)    /*  */
  63.         OCTSTR(client_write_IV)                 /*  */
  64.         OCTSTR(server_write_MAC_secret) /*  */
  65.         OCTSTR(server_write_enc_key)    /*  */
  66.         OCTSTR(server_write_IV)                 /*  */
  67.         INTEGER(client_seq_num)                 /* incremented for each client msg */
  68.         INTEGER(server_seq_num)                 /* incremented for each server msg */
  69.                                 
  70.         OCTSTR(last_packet_checksum) /* The last received packet checksum */
  71.         PDULIST(last_received_packet) /* The last received packet checksum */
  72.         OCTSTR(handshake_data) /* All the handshake payloads, received or sent,
  73.                                   concatenated in order */
  74.         OCTSTR(packet_to_send) /* A packet we're preparing to send */
  75.        )
  76. #undef MACHINE
  77. #undef ENUM
  78. #undef ADDRTUPLE
  79. #undef INTEGER
  80. #undef OCTSTR
  81. #undef PDULIST