--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommsengine/mmcesrv/mmcemediamanager/inc/mcesecurecryptoinfo.h Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,249 @@
+/*
+* Copyright (c) 2005 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:
+*
+*/
+
+
+
+
+
+
+#ifndef MCESECURECRYPTOINFO_H
+#define MCESECURECRYPTOINFO_H
+
+#include <e32std.h>
+#include "mceclientserver.h"
+#include <mmccsrtpcryptoparams.h>
+
+_LIT( KUnEcryptedSrtp,"UNENCRYPTED_SRTP" );
+_LIT( KUnEcryptedSrtcp,"UNENCRYPTED_SRTCP" );
+_LIT( KUnAuthenticcatedSrtp,"UNAUTHENTICATED_SRTP" );
+_LIT( KKeyDrivationRate,"KDR=");
+_LIT( KFecOrder,"FEC_ORDER=");
+_LIT( KFecType,"FEC_SRTP");
+_LIT( KFecKey,"FEC_Key=");
+_LIT( KWSH,"WSH=");
+
+//2^31 -1 for SRTCP to use as default for both rtp/rtcp
+/*lint -e435 */
+
+const TUint64 KDefalutMaterKeysLifeTime = 0x7FFFFFFF;
+const TUint KAuthTagLength80 = 80;
+const TUint KAuthTagLength32 = 32;
+const TUint KSaltLength = 0xe ;
+const TUint KMasterKeyLength = 0x10;
+const TUint KMasterKeyAndSaltLength = 0x1e;
+const TUint KEncodedStringLength = 0x28;
+const TUint KSessionExtLen = 0x64;
+const TUint16 KMKIDesCLen = 0x101;
+const TUint64 KWSHLen = 0x100000000;
+const TUint KDRLen = 0x2;
+const TUint64 KMLTLen = 0x1000000000000;
+const TUint KCryptoSuiteLen = 0x18;
+typedef TBool TSrtpSessionParam;
+
+/*
+ * Cryptography Information
+ *
+ */
+class TMceSecureCryptoInfo
+ {
+public:
+
+ inline TMceSecureCryptoInfo()
+ : iTag( KMceNotAssigned ),
+ iTagLen( KMceNotAssigned ),
+ iCryptoContextId( KMceNotAssigned ),
+ iMKIValue( KMceNotAssigned ),
+ iMKILength( KMceNotAssigned ),
+ iMKLifeTime(0),
+ iMKIUsed(EFalse),
+ iIfBinded(EFalse),
+ iIfCryptoContextIdSet( EFalse ),
+ iKeysCreated( EFalse ),
+ iEncAlgms( ESrtpEncAES_CM ),
+ iAuthAlgms( ESrtpAuthHMAC_SHA1 ),
+ iSetMasterKey( KNullDesC8 ),
+ iSetSaltKey( KNullDesC8 ),
+ iEncodedKey( KNullDesC8 ),
+ iKeyParamCount(0),
+ iIfFEC( EFalse ),
+ iIfUnEncSRTP(EFalse),
+ iIfUnEncSRTCP(EFalse),
+ iIfUnAuthSRTP(EFalse),
+ iIfSrtpSessionExt(EFalse),
+ iCryptoSuite( KNullDesC8 ),
+ iMKI( KNullDesC8 )
+ {}
+
+
+
+ inline TMceSecureCryptoInfo( const TMceSecureCryptoInfo& aInfo )
+ : iTag(aInfo.iTag),
+ iTagLen(aInfo.iTagLen),
+ iCryptoContextId( aInfo.iCryptoContextId ),
+ iMKIValue(aInfo.iMKIValue),
+ iMKILength(aInfo.iMKILength),
+ iMKLifeTime(aInfo.iMKLifeTime),
+ iMKIUsed(aInfo.iMKIUsed),
+ iIfBinded(aInfo.iIfBinded),
+ iIfCryptoContextIdSet( aInfo.iIfCryptoContextIdSet),
+ iKeysCreated(aInfo.iKeysCreated),
+ iEncAlgms(aInfo.iEncAlgms),
+ iAuthAlgms(aInfo.iAuthAlgms),
+ iSetMasterKey(aInfo.iSetMasterKey),
+ iSetSaltKey(aInfo.iSetSaltKey),
+ iEncodedKey(aInfo.iEncodedKey),
+ iKeyParamCount(aInfo.iKeyParamCount),
+ iIfFEC( aInfo.iIfFEC ),
+ iIfUnEncSRTP(aInfo.iIfUnEncSRTP),
+ iIfUnEncSRTCP(aInfo.iIfUnEncSRTCP),
+ iIfUnAuthSRTP(aInfo.iIfUnAuthSRTP),
+ iIfSrtpSessionExt( aInfo.iIfSrtpSessionExt ),
+ iCryptoSuite( aInfo.iCryptoSuite ),
+ iMKI( aInfo.iMKI )
+ {
+ if(aInfo.iKeyParamCount)
+ {
+ iMasterKeys.Reset();
+ iSaltKeys.Reset();
+ iEncodedKeys.Reset();
+ TInt count =aInfo.iMasterKeys.Count();
+ for (int index=0; index<count; index++)
+ {
+ iMasterKeys.Append(aInfo.iMasterKeys[index]);
+ }
+ count =aInfo.iSaltKeys.Count();
+ for (int index=0; index<count; index++)
+ {
+ iSaltKeys.Append(aInfo.iSaltKeys[index]);
+ }
+ count =aInfo.iEncodedKeys.Count();
+ for (int index=0; index<count; index++)
+ {
+ iEncodedKeys.Append(aInfo.iEncodedKeys[index]);
+ }
+ }
+ }
+
+ inline void Copy( const TMceSecureCryptoInfo& aInfo )
+ {
+ iTag = aInfo.iTag;
+ iTagLen = aInfo.iTagLen;
+ iCryptoContextId=aInfo.iCryptoContextId;
+ iMKIValue = aInfo.iMKIValue;
+ iMKILength = aInfo.iMKILength;
+ iMKLifeTime=aInfo.iMKLifeTime;
+ iMKIUsed=aInfo.iMKIUsed;
+ iIfBinded=aInfo.iIfBinded;
+ iIfCryptoContextIdSet=aInfo.iIfCryptoContextIdSet;
+ iKeysCreated = aInfo.iKeysCreated;
+ iEncAlgms = aInfo.iEncAlgms;
+ iAuthAlgms = aInfo.iAuthAlgms;
+ iSetMasterKey = aInfo.iSetMasterKey;
+ iSetSaltKey = aInfo.iSetSaltKey;
+ iEncodedKey = aInfo.iEncodedKey;
+
+ iKeyParamCount = aInfo.iKeyParamCount;
+ iIfFEC = aInfo.iIfFEC;
+ iIfUnEncSRTP = aInfo.iIfUnEncSRTP;
+ iIfUnEncSRTCP = aInfo.iIfUnEncSRTCP;
+ iIfUnAuthSRTP = aInfo.iIfUnAuthSRTP;
+ iIfSrtpSessionExt = aInfo.iIfSrtpSessionExt;
+ iMKI = aInfo.iMKI;
+ if( aInfo.iKeyParamCount )
+ {
+ iMasterKeys.Reset();
+ iSaltKeys.Reset();
+ iEncodedKeys.Reset();
+ TInt count = aInfo.iMasterKeys.Count();
+ for (int index=0; index<count; index++)
+ {
+ iMasterKeys.Append(aInfo.iMasterKeys[index]);
+ }
+ count = aInfo.iSaltKeys.Count();
+ for (int index=0; index<count; index++)
+ {
+ iSaltKeys.Append(aInfo.iSaltKeys[index]);
+ }
+ count = aInfo.iEncodedKeys.Count();
+ for (int index=0; index<count; index++ )
+ {
+ iEncodedKeys.Append( aInfo.iEncodedKeys[index] );
+ }
+ }
+
+ iCryptoSuite = aInfo.iCryptoSuite;
+ }
+
+ inline TBool IsContextId(TUint32 aContextId) const
+ {
+ return (
+ iIfCryptoContextIdSet &&
+ iCryptoContextId == aContextId );
+ }
+
+ inline void ResetKeys()
+ {
+ iSetMasterKey = KNullDesC8;
+ iSetSaltKey = KNullDesC8;
+ iEncodedKey = KNullDesC8;
+ }
+
+ inline void CryptoDestruct()
+ {
+ iSetMasterKey.Des().Zero();
+ iSetSaltKey.Des().Zero();
+ iEncodedKey.Des().Zero();
+ iMKI.Des().Zero();
+ iMasterKeys.Close();
+ iSaltKeys.Close();
+ iEncodedKeys.Close();
+ }
+
+public://data
+
+ TUint32 iTag; //crypto Tag
+ TUint iTagLen; //authentication tag len
+ TUint32 iCryptoContextId;//1
+ TUint32 iKeyParamCount; //2//how many inline under one attribute
+ TUint32 iMKIValue; //3
+ TUint32 iMKILength;//4
+ TUint64 iMKLifeTime;
+ TBool iMKIUsed; //5
+ TBool iIfBinded; //6
+ TBool iIfCryptoContextIdSet;
+ TBool iKeysCreated;
+ TMccSRTPEncAlg iEncAlgms;
+ TMccSRTPAuthAlg iAuthAlgms;
+ TBufC8< KMasterKeyLength > iSetMasterKey;
+ TBufC8< KSaltLength> iSetSaltKey;
+ TBufC8< KEncodedStringLength> iEncodedKey;
+
+ RArray <TDesC8> iMasterKeys; //if there is more than one inline key method
+ RArray <TDesC8> iSaltKeys;
+ RArray <TDesC8> iEncodedKeys;
+
+ TSrtpSessionParam iIfFEC;/* = EFalse*/
+ TSrtpSessionParam iIfUnEncSRTP;
+ TSrtpSessionParam iIfUnEncSRTCP;
+ TSrtpSessionParam iIfUnAuthSRTP;
+ TSrtpSessionParam iIfSrtpSessionExt;/* = EFlase*/
+ TBufC8< KCryptoSuiteLen > iCryptoSuite;
+ TBufC8< KMKIDesCLen > iMKI;
+ };
+
+#endif // MCESECURECRYPTOINFO_H
+// End of File