NAME

  AuthSendWithChunkAuth.seq - Send all requested chunks that have been authenticated where this has been requested by the peer


PURPOSE

  To verify that Endpoints will send all requested chunks that have
  been authenticated where this has been requested by the peer.


SYNOPSIS

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


PRE-TEST CONDITION

  Association is not established between endpoint A and B. Arrange
  data in endpoint A such that INIT chunk with CHUNKS parameter.
  The chunk types for DATA, SACK, ABORT, SHUTDOWN, SHUTDOWN-ACK, 
  COOKIE-ECHO and COOKIE-ACK chunks be listed in CHUNKS parameter.


TEST PROCEDURE

  Endpoint A                             Endpoint B               ULP
  (CLOSED)                               (CLOSED)
    INIT          ------------------>
    (with CHUNKS parameter)
                  <------------------   INIT-ACK
                                        (with AUTH capable)
    COOKIE-ECHO   ------------------>
                  <------------------   AUTH + COOKIE-ACK
    DATA          ------------------>
                  <------------------   AUTH + SACK
                  <------------------   AUTH + SHUTDOWN
    SHUTDOWN-ACK  ------------------>
                  <------------------   SHUTDOWN-COMPLETE
  TEST DESCRIPTION:
  1. Attempt to make an association from endpoint A to B. Send INIT 
     message containing CHUNKS Parameter. The chunk types for DATA, 
     SACK, ABORT, SHUTDOWN, SHUTDOWN-ACK, COOKIE-ECHO and COOKIE-ACK
     chunks be listed in CHUNKS parameter.
  2. Check A: Association is established between endpoint A and B 
     with AUTH capable.
  3. Check B: DATA, SACK, ABORT, SHUTDOWN, SHUTDOWN-ACK, COOKIE-ECHO
     and COOKIE-ACK chunks should be received at endpoint A in 
     authenticated way.


NOTE

  None


REFERENCE

  RFC 4895
  6.2.  Sending Authenticated Chunks
    Endpoints MUST send all requested chunks that have been authenticated
    where this has been requested by the peer.  The other chunks MAY be
    sent whether or not they have been authenticated.  If endpoint pair
    shared keys are used, one of them MUST be selected for
    authentication.
    To send chunks in an authenticated way, the sender MUST include these
    chunks after an AUTH chunk.  This means that a sender MUST bundle
    chunks in order to authenticate them.
    If the endpoint has no endpoint pair shared key for the peer, it MUST
    use Shared Key Identifier zero with an empty endpoint pair shared
    key.  If there are multiple endpoint shared keys the sender selects
    one and uses the corresponding Shared Key Identifier.
    The sender MUST calculate the Message Authentication Code (MAC) (as
    described in RFC 2104 [2]) using the hash function H as described by
    the HMAC Identifier and the shared association key K based on the
    endpoint pair shared key described by the Shared Key Identifier.  The
    'data' used for the computation of the AUTH-chunk is given by the
    AUTH chunk with its HMAC field set to zero (as shown in Figure 6)
    followed by all the chunks that are placed after the AUTH chunk in
    the SCTP packet.
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Type = 0x0F   |   Flags=0     |         Chunk Length          |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Shared Key Identifier      |        HMAC Identifier        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    \                               0                               /
    /                               +-------------------------------\
    |                               |           Padding             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                  Figure 6
    Please note that all fields are in network byte order and that the
    field that will contain the complete HMAC is filled with zeroes.  The
    length of the field shown as zero is the length of the HMAC described
    by the HMAC Identifier.  The padding of all chunks being
    authenticated MUST be included in the HMAC computation.
    The sender fills the HMAC into the HMAC field and sends the packet.

zz