inc/natfwcredentials.h
changeset 0 1bce908db942
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/natfwcredentials.h	Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,226 @@
+/*
+* 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 "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:    Encapsulates credentials needed with ICE-checks.
+*
+*/
+
+
+
+#ifndef C_CNATFWCREDENTIAL_H
+#define C_CNATFWCREDENTIAL_H
+
+#include <e32base.h>
+
+/**
+ *  Encapsulates credentials needed with ICE connectivity checks.
+ *  
+ *  Credential is composed of a username and associated password that present
+ *  a shared secret between local and remote agent. Username is composed of
+ *  concatenated username fragments of agents A and B.
+ *  
+ *  Connectivity check from A to B utilizes username BFRAG:AFRAG and password
+ *  BPASS. Connectivity check from B to A utilizes AFRAG:BFRAG and password
+ *  APASS.
+ *  
+ *  @lib  natconfw.lib
+ *  @since S60 v3.2
+ */
+class CNATFWCredentials : public CBase
+    {
+
+public:
+    
+    /** Defines utilization direction of the credentials. */
+    enum TUtilizationDirection
+        {
+        /** Credential is used for validation of incoming connectivity
+        check.*/
+        EInbound,
+        
+        /** Credential is used for outgoing connectivity check forming. */
+        EOutbound
+        };
+    
+    /**
+     * Two-phased constructor.
+     */
+    IMPORT_C static CNATFWCredentials* NewL();
+    
+    /**
+     * Two-phased constructor.
+     */
+    IMPORT_C static CNATFWCredentials* NewLC();
+    
+    /**
+     * Two-phased copy constructor.
+     * @param aCredentials               The credentials to copy
+     */
+    IMPORT_C static CNATFWCredentials* NewL(
+        const CNATFWCredentials& aCredentials );
+    
+    /**
+     * Two-phased copy constructor.
+     * @param aCredentials               The credentials to copy
+     */
+    IMPORT_C static CNATFWCredentials* NewLC(
+        const CNATFWCredentials& aCredentials );
+    
+    /**
+     * Destructor.
+     */
+    virtual ~CNATFWCredentials();
+    
+    /**
+     * Sets stream collection identifier.
+     *
+     * @since   S60 v3.2
+     * @param   aStreamCollectionId     Stream collection identifier
+     */
+    IMPORT_C void SetStreamCollectionId( TUint aStreamCollectionId );
+    
+    /**
+     * Returns stream collection identifier.
+     *
+     * @since   S60 v3.2
+     * @return  Stream collection identifier
+     */                          
+    IMPORT_C TUint StreamCollectionId() const;
+    
+    /**
+     * Sets stream identifier.
+     *
+     * @since   S60 v3.2
+     * @param   aStreamId     Stream identifier
+     */
+    IMPORT_C void SetStreamId( TUint aStreamId );
+    
+    /**
+     * Returns stream identifier.
+     *
+     * @since   S60 v3.2
+     * @return  Stream identifier
+     */                          
+    IMPORT_C TUint StreamId() const;
+    
+    /**
+     * Returns utilization direction of these credentials.
+     *
+     * @since   S60 v3.2
+     * @return  Utilization direction
+     */
+    IMPORT_C TUtilizationDirection Direction() const;
+    
+    /**
+     * Sets utilization direction of these credentials.
+     *
+     * @since   S60 v3.2
+     * @param   aDirection      Utilization direction
+     */
+    IMPORT_C void SetDirection( TUtilizationDirection aDirection );
+    
+    /**
+     * Sets username.
+     *
+     * @since   S60 v3.2
+     * @param   aUsername               The username
+     */
+    IMPORT_C void SetUsernameL( const TDesC8& aUsername );
+    
+    /**
+     * Gets username.
+     *
+     * @since   S60 v3.2
+     * @return  Username
+     */
+    IMPORT_C const TDesC8& Username() const;
+    
+    /**
+     * Sets password to be utilized.
+     *
+     * @since   S60 v3.2
+     * @param   aPassword               The password
+     */
+    IMPORT_C void SetPasswordL( const TDesC8& aPassword );
+    
+    /**
+     * Returns password.
+     *
+     * @since   S60 v3.2
+     * @return  Password
+     */
+    IMPORT_C const TDesC8& Password() const;
+    
+    /**
+     * Implements TIdentityRelation.
+     *
+     * @since   S60 v3.2
+     * @param   aCredential1            First credentials to compare
+     * @param   aCredential2            Second credentials to compare
+     */
+    IMPORT_C static TBool Compare( 
+        const CNATFWCredentials& aCredential1,
+        const CNATFWCredentials& aCredential2 );
+    
+    /**
+     * Makes a copy of credentials.
+     *
+     * @since   S60 v3.2
+     * @param   aCredentials            The credentials to copy
+     */
+    IMPORT_C void CopyL( const CNATFWCredentials& aCredentials );
+    
+    IMPORT_C TBool operator==(const CNATFWCredentials& aCandidate) const;
+    
+    IMPORT_C TBool operator!=(const CNATFWCredentials& aCandidate) const;
+    
+private:
+    
+    CNATFWCredentials();
+    
+    void ConstructL();
+    
+    void ConstructL( const CNATFWCredentials& aCredentials );
+    
+private: // data
+    
+    /**
+     * Stream collection identifier
+     */
+    TUint iStreamCollectionId;
+    
+    /**
+     * Stream identifier
+     */
+    TUint iStreamId;
+    
+    /**
+     * Utilization direction of the credentials
+     */
+    TUtilizationDirection iDirection;
+    
+    /**
+     * Username
+     * Own.
+     */
+    RBuf8 iUsername;
+    
+    /**
+     * Password
+     * Own.
+     */
+    RBuf8 iPassword;
+    
+    };
+
+#endif // C_CNATFWCREDENTIAL_H