gba/inc/gbauicc.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 19 Mar 2010 09:41:08 +0200
changeset 14 b75757c81051
parent 0 164170e6151a
permissions -rw-r--r--
Revision: 201007 Kit: 201011

/*
* 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:  Functionality for accessing uicc
*
*/


#ifndef _GBAUICC_H_
#define _GBAUICC_H_

#include <e32base.h>

_LIT8(KAKAV1, "USIM");
_LIT8(KSIMV1, "SIM");
_LIT8(KISIMV1, "ISIM");
_LIT8(KUICC_DEFAULT, "");

#define GBAUICC_INTERFACE  0x2000F86B

const TUid KGBAUICCInterfaceUID = { GBAUICC_INTERFACE };

/**
* An abstract interface for accessing applications on UICC. Use this interface to query identity and authentication parameters from UICC.
*/
class MUICCInterface
    {
    public:

        /**
         * Fetches identity stored on the UICC
         * param stores
         * exception if UICC is not accessible call will leave
         * result is returned 3GPP TS 23.003: "3rd Generation Partnership Project; Technical Specification Group Core Network; Numbering, addressing and identification".
         */
        virtual void QueryIdentityL(TDes8& aIdentity) = 0;
   
        /**
         * Fetches Home network domain name
         * exception if UICC is not accessible call will leave
         * result is returned 
         * see 3GPP TS 23.003: "3rd Generation Partnership Project; Technical Specification Group Core Network; Numbering, addressing and identification".
         */
        virtual void QueryHomeNetworkDnL(TDes8& aHNDN) = 0;

        /**
         * Queries authentication vector from UICC application
         * param challenge in
         * param calculated response
         * return true on success false on failure
         * exception if UICC is not accessible call will leave
         */
        virtual TBool QueryAuthenticationL(const TDesC8& aNonce, TDes8& aResponse, TDes8& aResync ) = 0; 
  
        /**
         * Fetches key material from UICC
         * param resulting key material
         */
        virtual void QueryKeyMaterialL  (   const TDesC8& aKeyMaterial,
                                            const TDesC8& aRand,
                                            const TDesC8& aIMPI,
                                            const TDesC8& aUTF8_NAF_ID,
                                            TDes8& aDerivedKey )  = 0; 
  
       /**
        * Fetches the master keys in what ever format they exist
        */
       virtual TBool QueryKs(TDes8& aKS) =0;


       /**
        * Check if the 2G interface
        * Return ETrue when only 2G interface available 
        */
       virtual TBool InterfaceIs2G() = 0;


        /**
         * The API used to update B-TID and key lifetime
         */
        virtual TInt UpdateGBADataL( const TDesC8& aBTID, const TDesC8& aLifetime ) = 0;

        /**
         * API to get the GBA_U availability
         * Set aGBAAvail to ETrue if smart card is GBA_U card
         */
        virtual void QueryGBAUAvailabilityL( TBool& aGBAAvail ) = 0;
    
        /**
         * delete the objects
         */
        virtual void Release() = 0;
        
        /*
         * Notify the smart card is changed
         */
         virtual void NotifyCardChangeL() = 0; 
    }; 

#endif // _GBAUICC_H_
//EOF