#!/usr/bin/perl # # SCTP Conformance Test Suite Implementation # (C) Copyright Fujitsu Ltd. 2008, 2009 # # This file is part of the SCTP Conformance Test Suite implementation. # # The SCTP Conformance Test Suite implementation is free software; # you can redistribute it and/or modify it under the terms of # the GNU General Public License version 2 as published by # the Free Software Foundation. # # The SCTP Conformance Test Suite implementation is distributed in the # hope that it will be useful, but WITHOUT ANY WARRANTY; without even # the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU CC; see the file COPYING. If not, write to # the Free Software Foundation, 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # # Please send any bug reports or fixes you make to the # email address(es): # networktest sctp # # Or submit a bug report through the following website: # http://networktest.sourceforge.net/ # # Written or modified by: # Hiroaki Kago # Wei Yongjun # # Any bugs reported given to us we will try to fix... any fixes shared will # be incorporated into the next SCTP release. # ############################################################################## BEGIN { $V6evalTool::TestVersion = '$Name: REL_1_0_0 $'; } use lib "../common"; use V6evalTool; use SCTP; %pktdesc = ( sctp_chunk_auth_hmac_nosupp => "Send SCTP CHUNK_AUTH (Unsupported HMAC Identifier)", sctp_chunk_error => "Recv SCTP CHUNK_ERROR (Unsupported HMAC Identifier)", ); $IF0 = Link0; vCapture($IF0); sctpCheckEnv($IF0); sctpStartServer($IF0); vConnect($IF0); vLogHTML('================ Main Test ================='); vSend($IF0, sctp_chunk_auth_hmac_nosupp); %ret = vWarpRecv($IF0, 10, 0, 0, sctp_chunk_error); if ($ret{status} == 0 && $ret{recvFrame} eq 'sctp_chunk_error') { vSend($IF0, sctp_chunk_abort_snd); vLogHTML('Received unexpected packet SCTP CHUNK_ERROR'); vLogHTML('NG'); exit $V6evalTool::exitFail; } vSendMsg($IF0); vClose($IF0); vLogHTML(OK); exit $V6evalTool::exitPass; ###################################################################### __END__ =head1 NAME AuthWithoutCapable.seq - Authentication Chunk is received from endpoint which has no AUTH capable =head1 PURPOSE None =head1 SYNOPSIS =begin html
  ./AuthWithoutCapable.seq [-tooloption ...] -pkt ./AuthWithoutCapable.def
    -tooloption : v6eval tool option
  See Also: ../common/STD_PKT_COMMON.def
            ../common/SCTP_COMMON.def
=end html =head1 PRE-TEST CONDITION Association is established between endpoint A and B. Arrange data in endpoint A such that AUTH chunk is sent to endpoint B. =head1 TEST PROCEDURE Endpoint A Endpoint B ULP (ESTABLISHED) (ESTABLISHED) AUTH ------------------> Silently discard TEST DESCRIPTION: 1. Send AUTH chunk from endpoint A to B with Unsupported HMAC Identifier. 2. Check A: ERROR should not be received at endpoint A. AUTH chunk is silently discarded. =head1 NOTE None =head1 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 =begin html
    Type: 1 byte (unsigned integer)
      This value MUST be set to 0x0F for all AUTH-chunks.
=end html 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.