NAME

  AuthWithBadChunkLength.seq - Authentication Chunk is received with chunk length less than AUTH chunk header


PURPOSE

  To verify that if the AUTH chunk is received with chunk length less
  than AUTH chunk header, the ABORT chunk SHOULD be sent with the error
  cause 'Protocol Violation'.


SYNOPSIS

  ./AuthWithBadChunkLength.seq [-tooloption ...] -pkt ./AuthWithBadChunkLength.def
    -tooloption : v6eval tool option
  See Also: ../common/STD_PKT_COMMON.def
            ../common/SCTP_COMMON.def


PRE-TEST CONDITION

  Association is established between endpoint A and B. Arrange data 
  in endpoint A such that AUTH chunk with chunk length less than AUTH
  chunk header is sent to endpoint B.


TEST PROCEDURE

  Endpoint A                             Endpoint B               ULP
  (ESTABLISHED)                          (ESTABLISHED)
    AUTH          ------------------>
    (with Bad Chunk Length)
                  <------------------  ABORT
                                       (Protocol Violation)
  TEST DESCRIPTION:
  1. Send AUTH chunk from endpoint A to B with chunk length less
     than AUTH chunk header.
  2. Check A: ABORT should be received at endpoint A. And Error 
     cause in ERROR is set to "Protocol Violation".


NOTE

  None


REFERENCE

  RFC 4895
  5.1.  Authentication Chunk (AUTH)
    This chunk is used to hold the result of the HMAC calculation.
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Type = 0x0F   |   Flags=0     |             Length            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Shared Key Identifier      |        HMAC Identifier        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    \                             HMAC                              /
    /                                                               \
    /                               +-------------------------------\
    |                               |           Padding             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                  Figure 5
    Type: 1 byte (unsigned integer)
      This value MUST be set to 0x0F for all AUTH-chunks.
    Flags: 1 byte (unsigned integer)
      SHOULD be set to zero on transmit and MUST be ignored on receipt.
    Length: 2 bytes (unsigned integer)
      This value holds the length of the HMAC in bytes plus 8.
    Shared Key Identifier: 2 bytes (unsigned integer)
      This value describes which endpoint pair shared key is used.
    HMAC Identifier: 2 bytes (unsigned integer)
      This value describes which message digest is being used.  Table 2
      shows the currently defined values.
    HMAC: n bytes (unsigned integer)
      This holds the result of the HMAC calculation.
    Padding: 0, 1, 2, or 3 bytes (unsigned integer)
      If the length of the HMAC is not a multiple of 4 bytes, the sender
      MUST pad the chunk with all zero bytes to make the chunk 32-bit
      aligned.  The Padding MUST NOT be longer than 3 bytes and it MUST
      be ignored by the receiver.
    The control chunk AUTH MUST NOT appear more than once in an SCTP
    packet.  All control and data chunks that are placed after the AUTH
    chunk in the packet are sent in an authenticated way.  Those chunks
    placed in a packet before the AUTH chunk are not authenticated.
    Please note that DATA chunks can not appear before control chunks in
    an SCTP packet.