diff -r 000000000000 -r 307788aac0a8 ipappprotocols_plat/srtp_api/inc/srtpmasterkey.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ipappprotocols_plat/srtp_api/inc/srtpmasterkey.h Tue Feb 02 01:03:15 2010 +0200 @@ -0,0 +1,147 @@ +/* +* 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: SRTP Master key class. +* +*/ + + + + +#ifndef __SRTP_MASTER_KEY_H__ +#define __SRTP_MASTER_KEY_H__ + +// INCLUDES +#include +#include +#include +#include "srtpdef.h" + + +// STRUCT CLASSES + +/** +* Contains an SRTP master key. +*/ +class CSRTPMasterKey : public CBase + { + public: // constructor + + /** + * Two-phased constructor. + * CSRTPCryptoContext takes the ownership of MasterKey and MasterSalt + * @param aKey The master key value. Local copy is made. + * @param aMKI The master key identifier value. Local copy is made. + * MKI key is optional so if there is no MKI key then + * gives empty string "". + * @param aN_E The bit length of the encryption key + * @param aN_A The bit length of the authentication key + * @leave KErrNone if success, system-wide error code otherwise + */ + IMPORT_C static CSRTPMasterKey* NewL( const TDesC8& aKey, + const TDesC8& aMKI, + TUint aN_E = KSRTPDefSessionEncryptionKeyLength, + TUint aN_A = KSRTPDefSessionAuthenticationKeyLength ); + + /** + * Two-phased constructor. + * CSRTPCryptoContext takes the ownership of MasterKey and MasterSalt + * @param aKey The master key value. Local copy is made. + * @param aMKI The master key identifier value. Local copy is made. + * @param aN_E The bit length of the encryption key + * @param aN_A The bit length of the authentication key + * @leave KErrNone if success, system-wide error code otherwise + */ + IMPORT_C static CSRTPMasterKey* NewLC( const TDesC8& aKey, + const TDesC8& aMKI, + TUint aN_E = KSRTPDefSessionEncryptionKeyLength, + TUint aN_A = KSRTPDefSessionAuthenticationKeyLength ); + + /** + * Destructor + */ + ~CSRTPMasterKey(); + + /* + * Gets current master key value + * @return current master key value + */ + IMPORT_C const TDesC8& MasterKey() const; + + /* + * Gets current MKI + * @return current MKI + */ + IMPORT_C const TDesC8& MKI() const; + + /* + * Gets current encryption key length + * @return encryption key length + */ + IMPORT_C TUint EncrKeyLength() const; + + /* + * Gets current authorization key length + * @return authorization key length + */ + IMPORT_C TUint AuthKeyLength() const; + + + /* + * Check the validity of the whole SRTPMasterKey + * @return validity of this SRTPMasterKey + */ + IMPORT_C TBool Valid() const; + + private: //methods + + CSRTPMasterKey( TUint aN_E, TUint aN_A ); + + void ConstructL ( const TDesC8& aKey, + const TDesC8& aMKI ); + + + /* assignment operator */ + const CSRTPMasterKey& operator=(const CSRTPMasterKey& aKey); + + private: //data + + /** + * The master key value. + * The length of the key is determined by the Size() function. + */ + HBufC8 *iKey; + + /** + * The master key identifier value + */ + HBufC8* iMKI; + + /** + * The bit length of the encryption key + */ + TUint iN_E; + + /** + * The bit length of the authentication key + */ + TUint iN_A; + + friend class CSRTPCryptoContext; + #ifdef EUNIT_TESTING + friend class UT_CSRTPMasterKey; + #endif + }; + + +#endif // __SRTP_MASTER_KEY_H__