Code needed for Change Master Password

This commit is contained in:
Jim Norman 2005-11-03 20:22:45 +00:00
parent 9412f726e6
commit fb5296c0c3
7 changed files with 83 additions and 0 deletions

View File

@ -597,6 +597,18 @@ namespace sscs.cache
return true;
}
internal bool ChangeMasterPassword(string sCurrentPWD, string sNewPWD)
{
string sMasterFilePath = GetPasscodeByMasterPasswdFilePath();
byte[] baPasscode = CASACrypto.GetMasterPasscodeUsingMasterPasswd(sCurrentPWD, sMasterFilePath);
if (baPasscode != null)
{
CASACrypto.EncryptAndStoreMasterPasscodeUsingString(baPasscode, sNewPWD, sMasterFilePath);
return true;
}
return false;
}
internal string GetDesktopPasswd()
{
try

View File

@ -113,6 +113,11 @@
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "common\ResetMasterPassword.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "common\WrappedObject.cs"
SubType = "Code"

View File

@ -0,0 +1,22 @@
using System;
namespace Novell.CASA.MiCasa.Common
{
/// <summary>
/// Summary description for ResetMasterPassword.
/// </summary>
///
[Serializable]
public class ResetMasterPassword
{
public string m_currentPassword;
public string m_newPassword;
public int rcode = 0;
public ResetMasterPassword(string currentPassword, string newPassword)
{
m_currentPassword = currentPassword;
m_newPassword = newPassword;
}
}
}

View File

@ -30,6 +30,7 @@ namespace Novell.CASA.MiCasa.Communication
public const int VERB_REMOVE_KEY = 15;
public const int VERB_READ_KEY = 16;
public const int VERB_GET_KEY_LIST = 17;
public const int VERB_RESET_MASTER_PASSWORD = 18;
public const int VERB_DUMP_LINKED_KEYS = 96;
public const int VERB_CREATE_TEST_SECRETS = 97;
@ -129,7 +130,10 @@ namespace Novell.CASA.MiCasa.Communication
reply = (WrappedObject)formatter.Deserialize(ms);
if (reply.GetReturnCode() != 0)
{
ipcChannel.Close();
throw new Exception(reply.GetReturnCode().ToString());
}
}

View File

@ -2,6 +2,7 @@ OBJS=\
AssemblyInfo \
common/LinkedKeyInfo \
common/Ping \
common/ResetMasterPassword \
common/WrappedObject \
common/MiCASAStore \
communication/IClientChannel \

View File

@ -2,6 +2,7 @@ SRC=\
AssemblyInfo.cs \
common/LinkedKeyInfo.cs \
common/Ping.cs \
common/ResetMasterPassword.cs \
common/WrappedObject.cs \
common/MiCASAStore.cs \
communication/IClientChannel.cs \

View File

@ -183,6 +183,11 @@ namespace sscs.verbs
{
return DoGetKeyList(ssStore, wo);
}
case MiCasaRequestReply.VERB_RESET_MASTER_PASSWORD:
{
return DoResetMasterPassword(ssStore, wo);
}
default:
{
wo.SetError(constants.RetCodes.FAILURE, "Verb Not Supported");
@ -654,6 +659,39 @@ namespace sscs.verbs
return wo;
}
private WrappedObject DoResetMasterPassword(SecretStore ssStore, WrappedObject wo)
{
ResetMasterPassword rmp = (ResetMasterPassword)wo.GetObject();
// verify current master password
try
{
string sMasterPassword = rmp.m_currentPassword;
ssStore.UnlockStore(null, sMasterPassword);
}
catch (Exception e)
{
wo.SetError(constants.RetCodes.FAILURE, e.ToString());
return wo;
}
// change master master password
string sNewPassword = rmp.m_newPassword;
if (sNewPassword == null || sNewPassword.Length < 8)
{
wo.SetError(constants.RetCodes.FAILURE, null);
return wo;
}
if (!ssStore.ChangeMasterPassword(rmp.m_currentPassword, rmp.m_newPassword))
wo.SetError(constants.RetCodes.FAILURE, null);
else
wo.SetError(constants.RetCodes.SUCCESS, null);
return wo;
}
private WrappedObject DoPing(WrappedObject wo)
{
//Console.WriteLine("MICASAD received Ping from Client");