vpnengine/ikev1lib/src/ikev1crack.cpp
branchRCL_3
changeset 46 29c8f9bc68e1
parent 41 e06095241a65
child 49 5960d2d03390
--- a/vpnengine/ikev1lib/src/ikev1crack.cpp	Tue Sep 14 23:16:15 2010 +0300
+++ b/vpnengine/ikev1lib/src/ikev1crack.cpp	Wed Sep 15 13:20:54 2010 +0300
@@ -192,7 +192,7 @@
  *-------------------------------------------------------------------------*/
     if ( iState & WAITING_USER_RSP ) 
     {    
-       iState &= ~(WAITING_USER_RSP + SECURID_NEXT_PIN_MODE);
+       iState &= ~(WAITING_USER_RSP);
        delete iDialog;  /* delete dialog object */
        iDialog = NULL;
        
@@ -211,6 +211,31 @@
        switch ( iLAMType ) 
        {    
            case CRACK_PASSWORD:
+               
+               if (iNegotiation->iHostData->iSoftToken && (iPluginSession->SoftToken() != NULL))
+                   {
+                   HBufC8* password = NULL;
+                   TInt err;
+                   if (iState & SECURID_NEXT_PIN_MODE)
+                       {
+                       iState &= ~(SECURID_NEXT_PIN_MODE);
+                       err = iPluginSession->SoftToken()->CodeL(*aDialogInfo->iSecret, password, ETrue);
+                       }
+                   else
+                       err = iPluginSession->SoftToken()->CodeL(*aDialogInfo->iSecret, password);
+                   if (KErrNone != err)
+                       {
+                       DEBUG_LOG(_L("Failed to get OTP from SoftToken!"));
+                       delete aDialogInfo;  /* release dialog info object */
+                       iDialogInfo = NULL;  /* reset dialog info pointer  */
+                       return CRACK_FAILED;
+                       }
+                   else
+                       {
+                       aDialogInfo->SetSecret(password);
+                       }
+                   }
+                   
                /*--------------------------------------------------
                 *  Possible attributes: User name, Secret, Domain
                 *-------------------------------------------------*/
@@ -276,10 +301,16 @@
     switch ( iLAMType ) 
     {
         case CRACK_PASSWORD:
+            /*--------------------------------------------------
+             * Request User name and pin from user
+             *-------------------------------------------------*/
+             if (iNegotiation->iHostData->iSoftToken && (iPluginSession->SoftToken() != NULL))
+                 iDialog->GetAsyncSecureidPinDialogL(iDialogInfo, static_cast<MIkeDialogComplete*>(this));
              /*--------------------------------------------------
               * Request User name and password (domain) from user
               *-------------------------------------------------*/
-             iDialog->GetAsyncUNPWDialogL(iDialogInfo, (MIkeDialogComplete*)this);
+             else
+                 iDialog->GetAsyncUNPWDialogL(iDialogInfo, static_cast<MIkeDialogComplete*>(this));
              break;
 
         default:     
@@ -553,12 +584,13 @@
  *  
  *-------------------------------------------------------------------------*/
     TUint32 obj_id = 1;
-    CAuthDialogInfo* info = (CAuthDialogInfo*)aUserInfo;
+    CAuthDialogInfo* info = static_cast<CAuthDialogInfo*>(aUserInfo);
 	DEBUG_LOG1(_L("CIKECRACKNegotiation::DialogCompleteL(), aUserInfo =  %x"), aUserInfo);
 			
     if ( info )
 	{
        obj_id = info->GetObjId();
+       info->iNegotiation = iNegotiation;
 	   DEBUG_LOG1(_L("Preparing to call AuthDialogCompletedL(), ObjId = %x"), obj_id);
        if ( obj_id == DIALOG_INFO_ID )
 	   {