| class RMobileSmartCardEap : public RTelSubSessionBase |
This sub-session opens under RMobilePhone.
RMobileSmartCardEap provides the client with access to a Smart Card Application's EAP-capability (if one exists).
(See ETSI TS 102.310 v6.2.0 and RFC3748)
To submit authentication challenges or requests, a client must use CAsyncSmartCardEapAuthentication in conjunction with this sub-session.
| Public Member Functions | |
|---|---|
| RMobileSmartCardEap() | |
| IMPORT_C void | Close() |
| IMPORT_C void | GetAuthenticationStatus(TRequestStatus &, TEapAuthStatus &) |
| IMPORT_C void | GetEapKey(TRequestStatus &, const TEapKeyTag, TDes8 &) |
| IMPORT_C TInt | GetEapMethodAccessStatus(TEapMethodAccessStatus &) |
| IMPORT_C void | GetUserIdentity(TRequestStatus &, TEapUserIdType, TDes8 &) |
| IMPORT_C void | InitialiseEapMethod(TRequestStatus &) |
| IMPORT_C TBool | IsEapMethodOwner() |
| IMPORT_C void | NotifyEapMethodAccessStatusChange(TRequestStatus &, TEapMethodAccessStatus &) |
| IMPORT_C TInt | Open(RMobilePhone &, const RMobilePhone::TAID &, const TEapType &) |
| IMPORT_C TInt | ReleaseEapMethod() |
| Protected Member Functions | |
|---|---|
| IMPORT_C void | ConstructL() |
| IMPORT_C void | Destruct() |
| Private Member Functions | |
|---|---|
| RMobileSmartCardEap(const RMobileSmartCardEap &) | |
| void | ConvertBinToText(const TDesC8 &, TDes &) |
| TChar | SeptChar(TInt) |
| Public Member Enumerations | |
|---|---|
| enum | TEapAuthStatus { ENoAuthStarted, EAuthenticating, EAuthenticated, EHeld } |
| enum | TEapKeyTag { EEapKeyMSK = 0x80, EEapKeyEMSK = 0x81 } |
| enum | TEapMethodAccessStatus { EEapMethodAvailable, EEapMethodInUseApplicationActive, EEapMethodInUseApplicationInactive, EEapMethodUnableToInitialise } |
| enum | TEapUserIdType { EPermanentIdentity, EPseudonymIdentity } |
| Inherited Enumerations | |
|---|---|
| RTelSubSessionBase:TReqPriorityType | |
| Public Member Type Definitions | |
|---|---|
| typedef | TPckg< TEapKeyV6 > TEapKeyV6Pckg |
| typedef | TBuf8< KEapTypeSize > TEapType |
| typedef | TPckg< TEapUserIdentityV6 > TEapUserIdentityV6Pckg |
| Private Attributes | |
|---|---|
| CMobileSmartCardEapPtrHolder * | iMmPtrHolder |
| TBool | iOwnsEapMethodLock |
| RSemaphore | iSemaphore |
| Inherited Attributes | |
|---|---|
| RTelSubSessionBase::iPtrHolder | |
| RMobileSmartCardEap | ( | const RMobileSmartCardEap & | ) | [private] |
| const RMobileSmartCardEap & |
| void | ConvertBinToText | ( | const TDesC8 & | aBinData, |
| TDes & | aText | |||
| ) | [private] | |||
| IMPORT_C void | GetAuthenticationStatus | ( | TRequestStatus & | aReqStatus, |
| TEapAuthStatus & | aAuthStatus | |||
| ) | ||||
| TRequestStatus & aReqStatus | |
| TEapAuthStatus & aAuthStatus |
| IMPORT_C void | GetEapKey | ( | TRequestStatus & | aReqStatus, |
| const TEapKeyTag | aRequestedKey, | |||
| TDes8 & | aKey | |||
| ) | ||||
| TRequestStatus & aReqStatus | |
| const TEapKeyTag aRequestedKey | |
| TDes8 & aKey |
| IMPORT_C TInt | GetEapMethodAccessStatus | ( | TEapMethodAccessStatus & | aEapMethodStatus | ) |
| TEapMethodAccessStatus & aEapMethodStatus |
| IMPORT_C void | GetUserIdentity | ( | TRequestStatus & | aReqStatus, |
| TEapUserIdType | aRequestedIdType, | |||
| TDes8 & | aUserId | |||
| ) | ||||
| TRequestStatus & aReqStatus | |
| TEapUserIdType aRequestedIdType | |
| TDes8 & aUserId |
| IMPORT_C void | InitialiseEapMethod | ( | TRequestStatus & | aReqStatus | ) |
| TRequestStatus & aReqStatus |
| IMPORT_C void | NotifyEapMethodAccessStatusChange | ( | TRequestStatus & | aReqStatus, |
| TEapMethodAccessStatus & | aEapMethodStatus | |||
| ) | ||||
| TRequestStatus & aReqStatus | |
| TEapMethodAccessStatus & aEapMethodStatus |
| IMPORT_C TInt | Open | ( | RMobilePhone & | aPhone, |
| const RMobilePhone::TAID & | aAID, | |||
| const TEapType & | aEapType | |||
| ) | ||||
| RMobilePhone & aPhone | |
| const RMobilePhone::TAID & aAID | |
| const TEapType & aEapType |
Authentication status of the EAP supporting UICC application (See section 7.2 of ETSI TS 102.310 v6.2.0). One of these values is returned on completion of an RMobileSmartCardEap::GetAuthenticationStatus() request.
| ENoAuthStarted |
No authentication started |
| EAuthenticating |
Authenticating |
| EAuthenticated |
Authentication complete |
| EHeld |
Held (authentication failure) |
TEapKeyV6 should be used to request one of (currently) two keys available on the EF_EAPKEYS of the UICC application (see section 7.1 of ETSI TS 102.310 v6.2.0). This enumeration type should be used in RMobileSmartCardEap::GetEapKey() to specify the key to be retrieved.
| EEapKeyMSK = 0x80 |
Used to request Master Session Key. |
| EEapKeyEMSK = 0x81 |
Used to request Extended Master Session Key. |
Status of the DF_EAP this subsession refers to. The status is basically an indication of whether the DF is in use by another sub- session client instance.
NotifyEapMethodAccessStatusChange() will give a notification when the status changes.
Status will change when the first client calls InitialiseEapMethod() on this sub-session. When the same client calls ReleaseEapMethod() (or Close()), the status will change again. This allows mutually exclusive access to the DF_EAP. All other RMobileSmartCardEap hanles will get an error if they attempt to make requests that access the same DF_EAP.
RMobileSmartCardEap::NotifyEapMethodAccessStatusChange()
| EEapMethodAvailable |
AID/DF_EAP has been reset, and the DF_EAP has not been initialised by any other instance of RMobileSmartCardEap. |
| EEapMethodInUseApplicationActive |
Another instance of RMobileSmartCardEap has initialised first and taken ownership of the DF_EAP. The DF_EAP is currently active and EAP requests can be made. |
| EEapMethodInUseApplicationInactive |
This instance of RMobileSmartCardEap still owns the lock on the DF_EAP, but the application has been deactivated elsewhere. The client should re-initialise before making further EAP requests. |
| EEapMethodUnableToInitialise |
Lock on the DF_EAP has been released, but another DF_EAP method is in use under the same AID, thus, cannot reset/initialise this subsessions EAP method. Client can only post a notification and wait till status changes to EEapMethodAvailable. |
TEapUserIdType should be used to request an identity from EF_PUId or EF_Ps, when making an RMobileSmartCardEap::GetUserIdentity() request. (See sections 7.3 and 7.4, respectively, of ETSI TS 102.310 v6.2.0, and RFC2486 - The Network Access Identifier).
| EPermanentIdentity |
Identity is permanent type |
| EPseudonymIdentity |
Identity is pseudonym type |
| typedef TPckg< TEapKeyV6 > | TEapKeyV6Pckg |
A typedef'd packaged TEapKeyV6 for passing through a generic API method.
| typedef TBuf8< KEapTypeSize > | TEapType |
A typedef'd buffer to hold the EAP type for the subsequent authentication that will be carried out on the Smart Card Application.
The value specified must correspond to the pre-allocated type identifiers for various EAPs (see http://www.iana.org/assignments/eap-numbers). Some known values are given in etelmm.h.
The type must be specified in hexadecimal format, where each character represents one semi-octet.
| typedef TPckg< TEapUserIdentityV6 > | TEapUserIdentityV6Pckg |
A typedef'd packaged TEapUserIdentityV6 for passing through a generic API method.
| CMobileSmartCardEapPtrHolder * | iMmPtrHolder | [private] |
Pointer Holder for the RMobileSmartCardEap sub-session requests.
| TBool | iOwnsEapMethodLock | [private] |
True if this object is the first to request InitialiseEapMethod() on its <AID,EAPType> when the status is EEapMethodAvailable. I.e. True only for the instance of RMobileSmartCardEap that successfully passes the Wait() on iSemaphore.
| RSemaphore | iSemaphore | [private] |
Semaphore is actually owned by TSY, and used by all instances of RMobileSmartCardEap to stop multiple access to the same EAP method on any one application.