networksecurity/tlsprovider/inc/tlstypedef_internal.h
changeset 0 af10295192d8
child 53 7e41d162e158
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networksecurity/tlsprovider/inc/tlstypedef_internal.h	Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,181 @@
+/**
+* Copyright (c) 2003-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:
+* This file contains shared types and data structures between TLS protocol,Provider and Token
+* 
+*
+*/
+
+
+
+/**
+ @file
+ @internalComponent
+ @released
+*/
+
+#ifndef __TLSTYPEDEF_INTERNAL_H__
+#define __TLSTYPEDEF_INTERNAL_H__
+
+#include <e32std.h>
+#include <e32base.h>
+
+
+#include "pkixcertchain.h"
+#include <sslerr.h>
+#include <tlstypedef.h>
+
+#ifndef BULLSEYE_OFF
+#ifdef _BullseyeCoverage
+#define BULLSEYE_OFF "BullseyeCoverage save off";
+#define BULLSEYE_RESTORE "BullseyeCoverage restore";
+#else
+#define BULLSEYE_OFF 
+#define BULLSEYE_RESTORE 
+#endif
+#endif
+
+#define KTLSMasterSecretLen 48
+#define KTLSPreMasterSecretLen 48
+#define KTLSMaxSymmetricKeyLen 24 
+#define KTLSMaxMacSecretLen 20
+#define KTLSMaxIVLen 8 
+
+#define KTLSServerFinishedLabel _L8("server finished")
+#define KTLSClientFinishedLabel _L8("client finished")
+#define KTLSKeyExpansionLabel _L8("key expansion")
+
+const TUint KAESBlockBytes = 16;
+
+//Do not uncomment KDESBlockBytes..security comps doesnt define this anymore..
+const TUint KDESBlockBytes = 8;  
+const TUint KRC2BlockBytes = 8;
+
+const TUint8 KIpad=0x36;
+const TUint8 KOpad=0x5C;
+
+//Dont change the order
+/**
+ * @internalAll 
+ */
+enum TTLSClientCertType { ENullCertType, ERsaSign, EDssSign, EDssFixedDh,ERsaFixedDh, 
+						  ERsaEDH, EDssEDH, EFortezza}; 
+
+/**
+High and low sequence number of TTLS
+@internalComponent
+@released
+*/
+class TTLSSequenceNumber
+	{
+public:
+	TUint32 iSeqHi;
+	TUint32 iSeqLo;
+	};
+
+/**
+Holds the description of the message.
+@internalComponent
+@released
+*/
+class TTLSMessageDigest
+	{
+public:
+	CMessageDigest* iMd5Digest;
+	CMessageDigest* iShaDigest;
+	};
+
+const TInt KMaxMac=32;
+const TInt KMaxPad=8; 
+
+// Unfortunatelty can not include #include <ssl.h> as it causes compilation errors...
+class MSoPskKeyHandler;
+
+/**
+This structure hold all the information required by the provider or the token obtained form 
+the handshake. The structure is gradually filled in by the protocol.
+@internalAll
+@released optional The following structure is incomplete and will have to be decided with nicky
+Also the enums and constants, may be referenced through ssl.h
+*/
+class CTlsCryptoAttributes : public CBase
+	{
+public:
+	TTLSMasterSecretInput iMasterSecretInput;
+	TTLSCompressionMethod iCompressionMethod;
+	TTLSCipherSuite	 iCurrentCipherSuite;
+	TTLSProtocolVersion iNegotiatedProtocol;
+	TTLSProtocolVersion iProposedProtocol;
+	TTLSSessionNameAndID iSessionNameAndID;	
+	CTLSPublicKeyParams* iPublicKeyParams;
+	RArray<TTLSClientCertType> iReqCertTypes;
+	RPointerArray<const TDesC8> iDistinguishedCANames; //!!in fact array of HBufC8* because of the parameters of iPtrUnifiedCertStore->List(..)
+                                                      //values are deleted in ~CTlsCryptoAttributes()
+
+	TBuf8<60> iProposedCiphers; 
+	TBool iClientAuthenticate;
+	TBool iDialogNonAttendedMode;  
+	TTLSSignatureAlgorithm isignatureAlgorithm; 
+	TBuf8<256> idomainName;		
+
+	TBool iAllowNullCipherSuites;
+
+	TBool iPskConfigured;
+	MSoPskKeyHandler *iPskKeyHandler;
+	HBufC8* iPskIdentityHint;
+
+	CDesC8Array *iServerNames; ///< Optional RFC3546 server name indication - see SetOpt KSoServerNameIndication
+
+	HBufC8* iServerDNFromCertSubject; //if iDistingshuiedCANames is not set, use iServerDNFromCert* as a backup
+	HBufC8* iServerDNFromCertIssuer;
+public:	
+	/**
+	 * @internalAll 
+	 */
+	static CTlsCryptoAttributes* NewL();
+	/**
+	 * @internalAll
+	 */
+	virtual ~CTlsCryptoAttributes();
+private:
+	CTlsCryptoAttributes();
+
+	//option flags
+	};
+/**
+ * @internalAll 
+ */
+enum TRecordProtocol{EChangeCipherSpec=20,EAlert=21, EHandshake=22,EApplicationData=23};
+
+
+/**
+This class hold the information of the tokens
+@internalComponent
+@released
+*/
+class CTokenInfo : public CBase
+	{
+public:		
+	RArray<TTLSKeyExchangeAlgorithm> aKeyExchAlgs;
+	RArray<TTLSSignatureAlgorithm> aSignatureExchAlgs;
+	RArray<TTLSCipherSuite> iCipherSuitesSupported;
+	RArray<TTLSProtocolVersion> iSupportedProtocols;
+	TBool iSupported;
+	
+public:
+	void Close();
+	~CTokenInfo();
+	};
+
+#endif //__TLSTYPEDEF_INTERNAL_H__