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.