vpnengine/ikev1lib/inc/ikev1isakmpstream.h
changeset 0 33413c0669b9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vpnengine/ikev1lib/inc/ikev1isakmpstream.h	Thu Dec 17 09:14:51 2009 +0200
@@ -0,0 +1,88 @@
+/*
+* Copyright (c) 2007-2009 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:  Stream class definition for ISAKMP
+*
+*/
+
+
+#ifndef IKEV1ISAKMPSTREAM_H
+#define IKEV1ISAKMPSTREAM_H
+
+#include <e32base.h>
+
+
+class CIkev1Negotiation;
+class TInetAddr;
+class TAttrib;
+class TIdentISAKMP;
+class TAttrib_II;
+class MIkeDebug;
+
+//
+// Constructing outgoing message
+//
+class TIkev1IsakmpStream
+{
+public:
+    TIkev1IsakmpStream( MIkeDebug& aDebug );
+    void IsakmpInit(CIkev1Negotiation *aSession);
+    void IsakmpSa();
+    void IsakmpKeyL();
+    void IsakmpOwnIdentL();
+    void IsakmpPeerIdentL();
+    void IsakmpCertificateL();
+    void IsakmpCertificateReqL();
+    void IsakmpHashL();
+    void IsakmpHashContL();
+    void IsakmpSignatureL();
+    void IsakmpNonce();
+    void IsakmpNotification(TUint16 aType, TUint8 aProtocol, TUint8* aNotifData = NULL, TInt aLth = 0);
+    void IsakmpReplayStatus(TUint8 aProtocol, TUint32 aSPI, TUint8 aReplayWindowLength);
+    void IsakmpResponderLifetime(TUint8 aProtocol, TUint32 aSPI, const TDesC8 &aLifetime, const TDesC8 &aLifesize);
+    void IsakmpDelete(TDesC8 &aSPI, TUint8 aProtocol);
+    void IsakmpChre(TUint16 aLAMType, TUint16 aAttr1, HBufC8 *aBfr1,
+                    TUint16 aAttr2, HBufC8 *aBfr2, TUint16 aAttr3, HBufC8 *aBfr3);
+    void IsakmpVendorId(TInt aID_Type, TUint8 *aICOOKIE, TUint8 *aRCOOKIE, TInetAddr &aLocalAddr,
+                        TUint8 *aGenericVidData = NULL, TInt aGenericVidLth = 0);
+    void IsakmpIntnet(TUint32 aIpv4Addr);
+    void IsakmpNatD(TBool aRfcNatt,TDesC8 &aHash);       
+    void IsakmpAttributes(TUint8 aMsgType, TUint16 aIdentifier, TDesC8 &aAttributes);  
+    
+private:
+    void IsakmpProposal();
+    void IsakmpTransform(TUint8 *aTransform, TUint8 aNumTransforms);
+    void IsakmpAttrib(TUint8 *aTransform);
+    void IsakmpAttrib1(TAttrib *aTransform);
+    void IsakmpAttrib2(TAttrib_II *aTransform);
+    void IsakmpChreAttrib(TUint16 aType, HBufC8 *aBfr);
+    void IsakmpIdentL(TBool aIsOwn);    //Own or Peer
+	void Isakmp_Phase1_IdL(TDes8& aIdData, TIdentISAKMP& aIdPayload);	
+
+private:
+    CIkev1Negotiation *iNegotiation;//const 
+    TUint8 *iNextPayload;
+    TUint8 *iPropNextPayload;   //Used for Proposals to avoid overwritting the SA next 
+                                //field which has to be filled by other payloads
+    TUint8 *iTransfNextPayload; //For Transforms 
+    TInt iHash_pos;             //Stores a position to insert the hash in PHASE_II
+    MIkeDebug&      iDebug;
+        
+public:
+    TBuf8<4096>    iBuf;
+    TBool          iError;      //ETrue if any error building the message
+    };
+
+
+
+#endif // IKEV1ISAKMPSTREAM_H