rtp/srtpstack/tsrc/ut_srtpstack/src/UT_CSRTPMasterSalt.cpp
changeset 0 307788aac0a8
child 19 b5e99d8877c7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtp/srtpstack/tsrc/ut_srtpstack/src/UT_CSRTPMasterSalt.cpp	Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,260 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  
+*
+*/
+
+
+
+
+//  CLASS HEADER
+#include "UT_CSRTPMasterSalt.h"
+
+//  EXTERNAL INCLUDES
+#include <digia/eunit/eunitmacros.h>
+
+
+//  INTERNAL INCLUDES
+#include "srtpmastersalt.h"
+#include "srtputils.h"
+#include "srtpdef.h"
+
+_LIT8(KRFCTestSalt112bits,              "0EC675AD498AFEEBB6960B3AABE6");
+_LIT8(KRFCTestSalt112bits2,              "0E0E0E0E0E0E0E0E0E0E0E0E");
+
+
+// CONSTRUCTION
+UT_CSRTPMasterSalt* UT_CSRTPMasterSalt::NewL()
+    {
+    UT_CSRTPMasterSalt* self = UT_CSRTPMasterSalt::NewLC(); 
+    CleanupStack::Pop();
+
+    return self;
+    }
+
+UT_CSRTPMasterSalt* UT_CSRTPMasterSalt::NewLC()
+    {
+    UT_CSRTPMasterSalt* self = new( ELeave ) UT_CSRTPMasterSalt();
+    CleanupStack::PushL( self );
+
+	self->ConstructL(); 
+
+    return self;
+    }
+
+// Destructor (virtual by CBase)
+UT_CSRTPMasterSalt::~UT_CSRTPMasterSalt()
+    {
+    }
+
+// Default constructor
+UT_CSRTPMasterSalt::UT_CSRTPMasterSalt() 
+    {
+    }
+
+// Second phase construct
+void UT_CSRTPMasterSalt::ConstructL()
+    {
+    // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+    // It generates the test case table.
+    CEUnitTestSuiteClass::ConstructL();
+    }
+
+
+//  METHODS
+
+void UT_CSRTPMasterSalt::SetupL(  )
+    {
+    HBufC8* masterSalt =HBufC8::NewL(KRFCTestSalt112bits().Length());
+    CleanupStack::PushL( masterSalt);
+	*masterSalt = KRFCTestSalt112bits;
+	
+	
+	HBufC8* masterSalt2 =HBufC8::NewL(KRFCTestSalt112bits2().Length());
+    CleanupStack::PushL( masterSalt2);
+	*masterSalt2 = KRFCTestSalt112bits2;
+	
+    iMasterSalt = CSRTPMasterSalt::NewL( *masterSalt,KSRTPDefSessionSaltingKeyLength );
+    iMasterSalt2 = CSRTPMasterSalt::NewL( *masterSalt,100 );
+    iMasterSalt3 = CSRTPMasterSalt::NewL( *masterSalt2, KSRTPDefSessionSaltingKeyLength);
+    iMasterSalt4 = CSRTPMasterSalt::NewL( *masterSalt);
+    CleanupStack::PopAndDestroy( masterSalt2 );
+    CleanupStack::PopAndDestroy( masterSalt );
+    
+    } 
+
+void UT_CSRTPMasterSalt::Teardown(  )
+    {
+	delete iMasterSalt;
+	delete iMasterSalt2;
+	delete iMasterSalt3;
+	delete iMasterSalt4;
+	iRFCTestSalt112bits.Zero();
+    iRFCTestSalt112bits_dehexed.Zero();      
+    }
+
+void UT_CSRTPMasterSalt::Hex(HBufC8& aString)
+{
+    TPtr8 ptr=aString.Des();
+    TInt length = aString.Length();
+    if (aString.Length()%2)
+        {
+        ptr.SetLength(0);
+        return;
+        }
+    TInt i;
+    for (i=0;i<aString.Length();i+=2)
+        {
+        TUint8 tmp;
+        tmp=(TUint8)(aString[i]-(aString[i]>'9'?('A'-10):'0'));
+        tmp*=16;
+        tmp|=(TUint8)(aString[i+1]-(aString[i+1]>'9'?('A'-10):'0'));
+        ptr[i/2]=tmp;
+        }
+    ptr.SetLength(aString.Length()/2);
+
+}
+void UT_CSRTPMasterSalt::UT_CSRTPMasterSalt_TSRTPMasterSaltL(  )
+    {
+    iSaltKey.Append(0x0E);
+    iSaltKey.Append(0xC6);
+    iSaltKey.Append(0x75);
+    iSaltKey.Append(0xAD);
+    iSaltKey.Append(0x49);
+    iSaltKey.Append(0x8A);
+    iSaltKey.Append(0xFE);
+    iSaltKey.Append(0xEB);
+    iSaltKey.Append(0xB6);
+    iSaltKey.Append(0x96);
+    iSaltKey.Append(0x0B);
+    iSaltKey.Append(0x3A);
+    iSaltKey.Append(0xAB);
+    iSaltKey.Append(0xE6); 
+    
+    const TBuf8<32> salt = iMasterSalt->MasterSalt();      
+    EUNIT_ASSERT( salt.Compare(iSaltKey) == 0);      
+    
+    EUNIT_ASSERT( iMasterSalt->SaltLength() == KSRTPDefaultMasterSaltLength );   
+    iSaltKey.Zero(); 
+    }
+
+void UT_CSRTPMasterSalt::UT_CSRTPMasterSalt_MasterSaltL(  )
+    {
+//     initialize salting key (from RFC)
+    iRFCTestSalt112bits.Copy(KRFCTestSalt112bits);
+    TSRTPUtils::DeHex(iRFCTestSalt112bits, iRFCTestSalt112bits_dehexed); 
+    
+    const TBuf8<32> salt = iMasterSalt->MasterSalt();
+
+    EUNIT_ASSERT( salt.Compare(iRFCTestSalt112bits_dehexed) == 0);      
+      
+//    EUNIT_ASSERT( salt.Compare(iSaltKey) == 0);      
+    }
+
+void UT_CSRTPMasterSalt::UT_CSRTPMasterSalt_SaltLengthL(  )
+    {        
+    EUNIT_ASSERT( iMasterSalt->SaltLength() == KSRTPDefaultMasterSaltLength );
+    }
+
+void UT_CSRTPMasterSalt::UT_CSRTPMasterSalt_ValidL(  )
+    {            
+    //this one should pass
+    EUNIT_ASSERT( iMasterSalt->Valid());
+    //invalid session salt length
+    EUNIT_ASSERT( !iMasterSalt2->Valid());
+    //invalid master salt length
+    EUNIT_ASSERT( !iMasterSalt3->Valid());
+    //test constructing with default values
+    EUNIT_ASSERT( iMasterSalt4->Valid());
+    }
+
+void UT_CSRTPMasterSalt::TestEqualL(  )
+	{
+	HBufC8* masterSalt =HBufC8::NewL(KRFCTestSalt112bits().Length());
+    CleanupStack::PushL( masterSalt);
+	*masterSalt = KRFCTestSalt112bits;
+	Hex(*masterSalt);
+	const CSRTPMasterSalt& tempSalt=iMasterSalt2->operator=(*iMasterSalt2);
+
+	EUNIT_ASSERT(tempSalt.MasterSalt() == *masterSalt);
+	EUNIT_ASSERT(tempSalt.SaltLength()==100);
+	CleanupStack::PopAndDestroy(masterSalt);
+	}
+
+void UT_CSRTPMasterSalt::UT_CSRTPMasterSalt_ConstructLL(  )
+	{
+	HBufC8* masterSalt =HBufC8::NewL(KRFCTestSalt112bits().Length());
+    CleanupStack::PushL( masterSalt);
+	*masterSalt = KRFCTestSalt112bits;
+	Hex(*masterSalt);
+	
+	const CSRTPMasterSalt& masterSaltlength14 = iMasterSalt->operator=(*iMasterSalt);
+ 	
+    EUNIT_ASSERT( masterSaltlength14.MasterSalt()== *masterSalt);  
+    CleanupStack::PopAndDestroy(masterSalt);
+ 	 
+ 	
+	}
+//  TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE( 
+    UT_CSRTPMasterSalt,
+    "CSRTPMasterSalt",
+    "UNIT" )
+
+EUNIT_TEST(
+    "TSRTPMasterSalt - test ",
+    "CSRTPMasterSalt",
+    "CSRTPMasterSalt",
+    "FUNCTIONALITY",
+    SetupL, UT_CSRTPMasterSalt_TSRTPMasterSaltL, Teardown)
+
+EUNIT_TEST(
+    "MasterSalt - test ",
+    "CSRTPMasterSalt",
+    "MasterSalt",
+    "FUNCTIONALITY",
+    SetupL, UT_CSRTPMasterSalt_MasterSaltL, Teardown)
+
+EUNIT_TEST(
+    "SaltLength - test ",
+    "CSRTPMasterSalt",
+    "SaltLength",
+    "FUNCTIONALITY",
+    SetupL, UT_CSRTPMasterSalt_SaltLengthL, Teardown)
+
+EUNIT_TEST(
+    "Valid - test ",
+    "CSRTPMasterSalt",
+    "Valid",
+    "FUNCTIONALITY",
+    SetupL, UT_CSRTPMasterSalt_ValidL, Teardown)
+
+EUNIT_TEST(
+    "Test = ",
+    "CSRTPMasterSalt",
+    "Test Operator equal",
+    "FUNCTIONALITY",
+    SetupL, TestEqualL, Teardown)
+
+EUNIT_TEST(
+    "Test Construct",
+    "CSRTPMasterSalt",
+    "Test contruct keys with different length",
+    "FUNCTIONALITY",
+    SetupL, UT_CSRTPMasterSalt_ConstructLL, Teardown)
+    
+EUNIT_END_TEST_TABLE
+
+//  END OF FILE