securitydialogs/SecUi/Src/SecUiSecurityHandler.cpp
changeset 56 25a3fbb5e4d3
parent 51 f479c7dc25d6
child 61 1cc4c46c2963
--- a/securitydialogs/SecUi/Src/SecUiSecurityHandler.cpp	Thu Sep 02 21:22:45 2010 +0300
+++ b/securitydialogs/SecUi/Src/SecUiSecurityHandler.cpp	Fri Sep 17 08:35:02 2010 +0300
@@ -281,9 +281,40 @@
             return ret;
             }
 
+		// Validate the code using SCP. This is needed to get hash
+    RDEBUG("AbortSecurityCode", 0);
+    RSCPClient scpClient;
+    RDEBUG("scpClient.Connect", 0);
+    TInt tRet = scpClient.Connect();
+    RDEBUG("tRet", tRet);
+
+    CleanupClosePushL(scpClient);
+
+    RArray<TDevicelockPolicies> aFailedPolicies;
+    TInt retLockcode = KErrNone;
+    RMobilePhone::TMobilePassword aISACode;
+    TInt scpFlags = 0;
+    RDEBUG("scpClient.VerifyCurrentLockcode", 0);
+    // this validate on ISA . No need to do iPhone.VerifySecurityCode
+    retLockcode = scpClient.VerifyCurrentLockcode(iSecUi_password, aISACode, aFailedPolicies, scpFlags);
+    RDEBUG("retLockcode", retLockcode);
+
+    RDEBUG("aISACode", 0);
+    RDEBUGSTR(aISACode);
+
+    RDEBUG("aFailedPolicies.Count()", aFailedPolicies.Count());
+    RDEBUG("Close", 0);
+    scpClient.Close();
+    RDEBUG("PopAndDestroy", 0);
+    CleanupStack::PopAndDestroy(); //scpClient
+
         CWait* wait = CWait::NewL();
+        RDEBUG("iSecUi_password", 0);
+        RDEBUGSTR(iSecUi_password);
+        RDEBUG("aISACode", 0);
+        RDEBUGSTR(aISACode);
         RDEBUG("VerifySecurityCode", 0);
-        iPhone.VerifySecurityCode(wait->iStatus, secCodeType, iSecUi_password, required_fourth);
+        iPhone.VerifySecurityCode(wait->iStatus, secCodeType, aISACode /* not iSecUi_password !!! */, required_fourth);
         RDEBUG("WaitForRequestL", 0);
         status = wait->WaitForRequestL();
         RDEBUG("status", status);
@@ -296,7 +327,7 @@
             }
 #endif
 
-        ret = ETrue;
+        ret = EFalse;
         queryAccepted = KErrCancel; // because it's not yet validated
         switch (status)
             {
@@ -345,9 +376,11 @@
                 CSecuritySettings::ShowResultNoteL(status, CAknNoteDialog::EErrorTone);
                 }
             }
+        RDEBUG("while AskSecCodeL", 1);
         } // while
 
     iQueryCanceled = ETrue;
+    RDEBUG("ret", ret);
     return ret;
     }
 //
@@ -751,10 +784,10 @@
     TDevicelockPolicies failedPolicy;
     TInt retLockcode = KErrNone;
     RMobilePhone::TMobilePassword aISACode;
-    TInt aFlags = 0;
+    TInt scpFlags = 0;
     RDEBUG("scpClient.VerifyCurrentLockcode", 0);
     // this validate on ISA . No need to do iPhone.VerifySecurityCode
-    retLockcode = scpClient.VerifyCurrentLockcode(iSecUi_password, aISACode, aFailedPolicies, aFlags);
+    retLockcode = scpClient.VerifyCurrentLockcode(iSecUi_password, aISACode, aFailedPolicies, scpFlags);
     RDEBUG("retLockcode", retLockcode);
 
     RDEBUG("aISACode", 0);
@@ -809,9 +842,13 @@
     else
         {
         RDEBUG( "wait", 0 );
+        RDEBUG("iSecUi_password", 0);
+        RDEBUGSTR(iSecUi_password);
+        RDEBUG("aISACode", 0);
+        RDEBUGSTR(aISACode);
         wait = CWait::NewL();
         RDEBUG("VerifySecurityCode", 0);
-        iPhone.VerifySecurityCode(wait->iStatus, secCodeType, iSecUi_password, required_fourth);
+        iPhone.VerifySecurityCode(wait->iStatus, secCodeType, aISACode /* not iSecUi_password !!! */, required_fourth);
         RDEBUG("WaitForRequestL",
                 0);
         status = wait->WaitForRequestL();
@@ -993,6 +1030,8 @@
             }
             break;
         case KErrGsmSSPasswordAttemptsViolation:
+    				RDEBUG("KErrGsmSSPasswordAttemptsViolation", KErrGsmSSPasswordAttemptsViolation);
+    				// and continue
         case KErrLocked:
         		{
             // security code blocked!
@@ -1002,6 +1041,8 @@
           	}
             break;
         case KErrGsm0707IncorrectPassword:
+    				RDEBUG("KErrGsm0707IncorrectPassword", KErrGsm0707IncorrectPassword);
+    				// and continue
         case KErrAccessDenied:
         		{
             RDEBUG("KErrAccessDenied", KErrAccessDenied);
@@ -1096,6 +1137,7 @@
     res = KErrNone;
     codeInfo.iRemainingEntryAttempts = 3;
 #endif
+		RDEBUG("KErrPermissionDenied", KErrPermissionDenied);
     User::LeaveIfError(res);
 
     RDEBUG("codeInfo.iRemainingEntryAttempts",
@@ -1169,6 +1211,7 @@
         case KErrAccessDenied:
             // code was entered erroneously
             CSecuritySettings::ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
+           	RDEBUG("StartUp", StartUp);
             if (StartUp)
                 {
                 returnValue = Pin1RequiredL();
@@ -1178,6 +1221,7 @@
         case KErrLocked:
             // code blocked; show error note and terminate.
             // what if not during Startup? Probably it's Ok since the SIM would had also failed at StartUp
+           	RDEBUG("StartUp", StartUp);
             if (StartUp)
                 CSecuritySettings::ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
             break;
@@ -1271,8 +1315,12 @@
     title.Append(_L("$"));
     title.AppendNum(attempts);
     TInt lSecUiCancelSupported = ESecUiCancelSupported | ESecUiEmergencyNotSupported;
+    RDEBUG("StartUp", 0);
     if (StartUp) // how to know whether PUK comes from failing at Starter, or failing at any other PIN (i.e. changing PIN, or changing PIN-request) ???
+    		{
         lSecUiCancelSupported = ESecUiCancelNotSupported | ESecUiEmergencySupported;
+        RDEBUG("new ", lSecUiCancelSupported);
+      	}
     queryAccepted = iSecQueryUi->SecQueryDialog(title, puk1_password, SEC_C_PUK_CODE_MIN_LENGTH, SEC_C_PUK_CODE_MAX_LENGTH, ESecUiSecretNotSupported | ESecUiAlphaNotSupported
             | lSecUiCancelSupported | ESecUiPukRequired);
     RDEBUG("puk1_password", 0);
@@ -1344,7 +1392,13 @@
         HBufC* stringHolder2 = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_verify_new_pin_code"));
         title.Append(stringHolder2->Des());
         CleanupStack::PopAndDestroy(stringHolder2);
-        queryAccepted = iSecQueryUi->SecQueryDialog(title, aNewPinPassword, SEC_C_PIN_CODE_MIN_LENGTH, SEC_C_PIN_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | ESecUiCancelSupported
+        lSecUiCancelSupported = ESecUiCancelSupported;
+        RDEBUG("StartUp", 0);
+		    if (StartUp) // how to know whether PUK comes from failing at Starter, or failing at any other PIN (i.e. changing PIN, or changing PIN-request) ???
+		    		{
+		    		lSecUiCancelSupported = ESecUiCancelNotSupported;
+		    		}
+        queryAccepted = iSecQueryUi->SecQueryDialog(title, aNewPinPassword, SEC_C_PIN_CODE_MIN_LENGTH, SEC_C_PIN_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | lSecUiCancelSupported
                 | ESecUiPukRequired);
         RDEBUG("aNewPinPassword", 0);
         RDEBUGSTR(aNewPinPassword);