diff -r eb9b28acd381 -r 2f10d260163b contentmgmt/cafstreamingsupport/source/ipsec/ipseckeystreamsink.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contentmgmt/cafstreamingsupport/source/ipsec/ipseckeystreamsink.h Mon Mar 15 12:46:43 2010 +0200 @@ -0,0 +1,86 @@ +/* +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* +*/ + + +/** +@file + +@internalComponent +@released +*/ + +#include +#include + +#include +#include +#include +#include + +#ifndef __IPSECKEYSTREAMSINK_H__ +#define __IPSECKEYSTREAMSINK_H__ + +class RDesReadStream; + +namespace StreamAccess +{ + NONSHARABLE_CLASS(CIpSecKeyStreamSink) : public CKeyStreamSink + { + public: + static CIpSecKeyStreamSink* NewLC(RReadStream& aReadStream); + static CIpSecKeyStreamSink* NewLC(const TInetAddr& aSrcAddr, const TInetAddr& aDstAddr); + ~CIpSecKeyStreamSink(); + + // CKeyStreamSink interface + CKeyStreamSink* CloneLC() const; + void ProcessNewKeyAssociationL(const CKeyAssociation& aKeyAssociation); + void SetEncryptionAlgorithmL(const TEncryptionAlgorithm& aEncryptionAlgorithm); + void SetAuthenticationAlgorithmL(const TAuthenticationAlgorithm& aAuthenticationAlgorithm); + protected: + void DoExternalizeL(RWriteStream& aStream) const; + private: + void ConstructL(); + void SetPolicyL(); + void RemoveSaL(TUint32 aSpi); + void SynchronousSendAndVerifyMessageL(TPfkeySendMsg& aMessage, TInt aMessageType, TUint32 aSpi); + TBool CompareReceivedMessageExtensionsL(TPfkeyRecvMsg &aReceivedReply, TUint32 aSpi) const; + void VerifyAssociationsNotSentL() const; + CIpSecKeyStreamSink(const TInetAddr& aSrcAddr, const TInetAddr& aDstAddr); + void AddAssociationL(TPfkeySendMsg& aMessage, TUint32 aSpi); + private: + RSocketServ iSocketServ; + /** Handle to policy server */ + RIpsecPolicyServ iPolicyServer; + /** Handle to SADB socket */ + RSADB iSADB; + TInetAddr iSourceAddr; + TInetAddr iDestinationAddr; + TUint8 iAuthAlg; + TUint8 iEncAlg; + TUint32 iSequenceNumber; + /** Signifies whether a security policy has already been set */ + TBool iPolicySet; + TPolicyHandlePckg iPolicyHandle; + /** Used for removing old SA-s, managed as a FIFO queue */ + RArray iSubmittedSpiList; + /** Number of supported concurrent SA-s */ + TInt iMaxSpiNumber; + }; +} // namespace StreamAccess +#endif /* __IPSECKEYSTREAMSINK_H__ */ + +