diff -r 13d7c31c74e0 -r b183ec05bd8c remotemgmt_plat/scp_server_api/inc/SCPClient.h
--- a/remotemgmt_plat/scp_server_api/inc/SCPClient.h Thu Aug 19 10:44:50 2010 +0300
+++ b/remotemgmt_plat/scp_server_api/inc/SCPClient.h Tue Aug 31 16:04:06 2010 +0300
@@ -175,28 +175,6 @@
*
Contents of return value: The status code of the operation.
*/
IMPORT_C TInt GetParamValue( TInt aParamID, TDes& aValue );
-
- enum TSCPButtonConfig
- {
- SCP_OK,
- SCP_OK_CANCEL,
- SCP_OK_ETEL,
- SCP_OK_CANCEL_ETEL
- };
-
- /**
- * Request the security code from the user.
- *
- */
- IMPORT_C TInt SecCodeQuery( RMobilePhone::TMobilePassword& aPassword,
- TSCPButtonConfig aButtonsShown,
- TBool aECSSupport,
- TInt aFlags );
-
- /**
- * Prompt the user to change the security code.
- */
- IMPORT_C TInt ChangeCodeRequest();
/**
* Checks the server configuration and reports the status.
@@ -239,37 +217,130 @@
IMPORT_C TInt SetAutoLockPeriod( TInt aValue );
- private: // Methods
+
+ /**
+ * This function would return if the Lock Code of the device is allowed to be changed at the given moment.
+ *
+ * The outcome of this function would depend on two of the policies enforced at TARM, EPasscodeMinChangeTolerance and
+ * EPasscodeMinChangeInterval. These two policies would determine how often the user is allowed to change the Lock Code
+ * of the device between a specified time interval. If the user has exceeded the maximum number of times he is allowed
+ * to change the Lock Code of the device then this function would return a non-KErrNone status
+ *
+ * @param aFailedPolicies: On completion of the call, If the Lock Code is not allowed to be changed at this point in time
+ then this array would contain the two policies (mentioned earlier) that failed.
+
+ The policy ID's are available in SCPServerInterface.h under TDevicelockPolicies
+ *
+ *
+ * @return The status, see below
+ *
Name of return value: Operation status
+ *
Type of return value: TInt
+ *
Range of return value: A system wide error code
+ *
Contents of return value: The status code of the operation.
+ *
+ */
+ IMPORT_C TBool IsLockcodeChangeAllowedNow(RArray &aDevicelockPolicies);
- /**
- * Request the security code from the user (encapsulates functionalities of SecCodeQuery()).
- *
- */
- TInt SetSecurityCodeL(RMobilePhone::TMobilePassword& aPassword, TSCPButtonConfig aButtonsShown,
- TBool aECSSupport, TInt aFlags, TInt& aResFileSCP, TInt& aResFileSecUi);
+ /**
+ * Get values for all the policies that are maintained at the server
+ *
+ * @param aDevicelockPolicies: Upon completion of the call, this array would contain the values
+ for each of the parameter that is maintained at the server. The values can be
+ accessed using the policy ID's as index to the aDevicelockPolicies array
+
+ Ex: aDevicelockPolicies[TDevicelockPolicies :: EDeviceLockMaxlength];
+
+ The policy ID's are available in SCPServerInterface.h
+ *
+ *
+ * @return The status, see below
+ *
Name of return value: Operation status
+ *
Type of return value: TInt
+ *
Range of return value: A system wide error code
+ *
Contents of return value: The status code of the operation.
+ *
+ */
+ IMPORT_C TInt GetPolicies(RArray& aDevicelockPolicies);
+
+ /**
+ * Verifies if a new Lock Code is in compliance with the policies enforced at TARM. Ideally this should be invoked
+ * before a call to StoreLockCode.
+ *
+ * @param aNewLockcode: The new Lock Code that is to be verified against TARM policies
+
+ aFailedPolicies: On completion of the call, if the return value is other than KErrNone, this array
+ would contain the policies that were not satisfied by Lock Code provided in aLockCode
- /**
- * Request the new code from the user and try to change the code
- */
- TInt GetNewCodeAndChange( TDes& aOldCode, TInt aMode, TSCPSecCode* aNewDOSCode = NULL, HBufC** aNewCodePptr = NULL );
-
- /**
- * Process the server's response-commands
- */
- void ProcessServerCommandsL( TDes8& aInParams,
- CSCPParamObject** aOutParams = NULL,
- TBool isNotifierEvent = EFalse );
-
- /**
- * Show UI controls based on server commands
- */
- void ShowUIL( CSCPParamObject& aContext );
-
- /**
+ The policy ID's are available in SCPServerInterface.h under TDevicelockPolicies
+ *
+ *
+ * @return The status, see below
+ *
Name of return value: Operation status
+ *
Type of return value: TInt
+ *
Range of return value: A system wide error code
+ *
Contents of return value: The status code of the operation.
+ *
+ */
+ IMPORT_C TInt VerifyNewLockcodeAgainstPolicies(TDesC& aNewLockcode, RArray& aFailedPolicies);
+
+ /**
+ * Sets a new device Lock Code
+ *
+ * @param aNewLockCode: The new Lock Code that is to be set on the device
+
+ aFailedPolicies: On completion of the call, if the New Lock Code is not compliant with the TARM policies
+ (if the return value is other than KErrNone) this array
+ would contain the policies that were not satisfied by Lock Code provided in aNewLockCode
+
+ The policy ID's are available in SCPServerInterface.h under TDevicelockPolicies
+ *
+ *
+ * @return The status, see below
+ *
Name of return value: Operation status
+ *
Type of return value: TInt
+ *
Range of return value: A system wide error code
+ *
Contents of return value: The status code of the operation.
+ *
+ */
+ IMPORT_C TInt StoreLockcode(TDesC& aNewLockcode, TDesC& aOldLockcode, RArray& aFailedPolicies);
+
+ /**
+ * Verifies if the Lock Code enforced on the device is the same as the one mentioned in the argument.
+ *
+ * @param aLockCode: The Lock Code that is to be verified against the current device LockCode
+
+ aISACode: The Lock Code enforced through a call to StoreLockCode would hash the New Lock Code before storing
+ at the ISA (RMobilePhone) side.
+
+ On successful completion of a call to VerifyCurrentLockCode, aISACode would return
+ the Hashed code value equivalent to the current Lock Code enforced on the device
+
+ aFailedPolicies: On completion of the call, this array may contain EDeviceLockPasscodeExpiration depending on
+ if the Lock Code is marked as expired due to the current value of the policy at TARM
+
+ The policy ID's are available in SCPServerInterface.h under TDevicelockPolicies
+ *
+ *
+ * @return The status, see below
+ *
Name of return value: Operation status
+ *
Type of return value: TInt
+ *
Range of return value: A system wide error code
+ *
Contents of return value: The status code of the operation.
+ *
+ */
+ IMPORT_C TInt VerifyCurrentLockcode(TDesC& aLockcode, RMobilePhone :: TMobilePassword& aISACode,
+ RArray& aFailedPolicies, TInt aFlags);
+
+ private: // Methods
+
+
+ /**
* Fetch the limit-values for code length
*/
void FetchLimits( TInt& aMin, TInt& aMax );
- void InformAutolockTask();
+
+ void ReadFailedPoliciesL(TDes8& aFailedPolicyBuf, RArray< TDevicelockPolicies > &aFailedPolicies);
+
TBool isFlagEnabled;
};