Add Export/import feature

This commit is contained in:
Jim Norman 2006-08-10 16:21:47 +00:00
parent 38264cc856
commit 2d3518d9bd
18 changed files with 1591 additions and 279 deletions

View File

@ -185,6 +185,11 @@
SubType = "Code" SubType = "Code"
BuildAction = "Compile" BuildAction = "Compile"
/> />
<File
RelPath = "ExportSecrets.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File <File
RelPath = "Firefox.cs" RelPath = "Firefox.cs"
SubType = "Code" SubType = "Code"
@ -195,6 +200,11 @@
SubType = "Code" SubType = "Code"
BuildAction = "Compile" BuildAction = "Compile"
/> />
<File
RelPath = "ImportSecrets.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File <File
RelPath = "KdeWallet.cs" RelPath = "KdeWallet.cs"
SubType = "Code" SubType = "Code"
@ -235,11 +245,6 @@
SubType = "Code" SubType = "Code"
BuildAction = "Compile" BuildAction = "Compile"
/> />
<File
RelPath = "TrayLib.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File <File
RelPath = "images\CASA.bmp" RelPath = "images\CASA.bmp"
BuildAction = "Content" BuildAction = "Content"

View File

@ -2072,6 +2072,23 @@ namespace Novell.CASA.GUI
} }
public void on_exportSecrets_activate(object obj, EventArgs args)
{
ExportSecrets es = new ExportSecrets(config);
es.Run();
}
public void on_importSecrets_activate(object obj, EventArgs args)
{
ImportSecrets importSecrets = new ImportSecrets(config, objMiCasa);
importSecrets.Run();
if (objMiCasa != null)
objMiCasa.AggregateStore();
}
/// <summary> /// <summary>
/// ******************************************************************** /// ********************************************************************
/// private void HandleQuit() /// private void HandleQuit()

View File

@ -39,6 +39,9 @@ namespace Novell.CASA.GUI
public class CommonGUI public class CommonGUI
{ {
public static string HINT_DIR = "Export Directory";
public static string HINT_FILENAME = "Export Filename";
[Glade.Widget] [Glade.Widget]
Gtk.Label label86, Gtk.Label label86,
label88; label88;
@ -212,6 +215,106 @@ namespace Novell.CASA.GUI
mTrayInstance.UpdateTrayIcon(false); mTrayInstance.UpdateTrayIcon(false);
} }
} }
public static string FileChooser(FileChooserAction action, String sWindowTitle, String sCurrentFolder, String sHintFileName)
{
FileChooserDialog chooser = new FileChooserDialog (sWindowTitle,
null,
action);
if (sCurrentFolder != null)
chooser.SetCurrentFolder(sCurrentFolder);
if (sHintFileName != null)
chooser.SetFilename(sCurrentFolder+sHintFileName);
// set location
chooser.SetPosition(Gtk.WindowPosition.CenterAlways);
chooser.AddButton (Stock.Cancel, ResponseType.Cancel);
if (action == FileChooserAction.Open)
chooser.AddButton (Stock.Open, ResponseType.Ok);
else
chooser.AddButton(Stock.Save, ResponseType.Ok);
int response = chooser.Run ();
string ret = null;
if ((ResponseType) response == ResponseType.Ok)
{
ret = chooser.Uri;
}
/*
// if the action is SAVE, and the file that is choosen exists, prompt the user for overwrite
if (action == FileChooserAction.Save)
{
string sFilename = ret.Substring(8);
if (System.IO.File.Exists(sFilename))
{
// prompt user for overwrite
}
}
*/
chooser.Destroy();
return ret;
}
/// <summary>
/// VerifyMasterPasswordWithUser dialog
/// </summary>
public void VerifyMasterPasswordWithUser()
{
//Logger.DbgLog("GUI:CasaMain.Login() - IsMasterPasswordSet returned false");
#if W32
Glade.XML gxmlTemp = new Glade.XML ("../images/casa.glade", "dialogLogin", null);
#endif
#if LINUX
Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogLogin", null);
#endif
gxmlTemp.Autoconnect (this);
dialogLogin.TransientFor = (Gtk.Window)CasaMain.gxmlMain.GetWidget("windowMain");;
label86.Text = "Enter your Master Password to continue.";
entryMasterPassword3.Text="";
label88.Hide();
entryMasterPassword4.Hide();
//dialogLogin.SetPosition(Gtk.WindowPosition.Center);
dialogLogin.Destroyed += new EventHandler(dialogLogin_Destroyed);
dialogLogin.Modal = true;
dialogLogin.Show();
}
public static void DisplayMessage(Gtk.MessageType messageType, String sMessage)
{
MessageDialog md = new MessageDialog(null,
Gtk.DialogFlags.Modal,
messageType,
Gtk.ButtonsType.Close,
sMessage);
md.SetPosition(Gtk.WindowPosition.CenterAlways);
md.Response +=new ResponseHandler(md_Response3);
md.Show();
}
private static void md_Response3(object o, ResponseArgs args)
{
MessageDialog md = (MessageDialog)o;
if (md != null)
{
md.Destroy();
}
}
#if W32 #if W32
public static bool IsGTKSharpInstalled() public static bool IsGTKSharpInstalled()

150
CASA/gui/ExportSecrets.cs Normal file
View File

@ -0,0 +1,150 @@
using System;
using System.IO;
using Novell.CASA.MiCasa.Communication;
using Novell.CASA.MiCasa.Common;
using Gtk;
using Glade;
namespace Novell.CASA.GUI
{
/// <summary>
/// Summary description for ExportSecrets.
/// </summary>
public class ExportSecrets
{
private Config m_config = null;
[Glade.Widget]
Gtk.Label label86,
label88;
[Glade.Widget]
Gtk.Entry entryMasterPassword;
[Glade.Widget]
Gtk.Dialog dialogExport;
[Glade.Widget]
Gtk.CheckButton checkbuttonNoEncrypt;
public ExportSecrets(Config config)
{
m_config = config;
}
public void Run()
{
// prompt for master password, and optional passphrase to encrypt
//Logger.DbgLog("GUI:CasaMain.Login() - IsMasterPasswordSet returned false");
#if W32
Glade.XML gxmlTemp = new Glade.XML ("../images/casa.glade", "dialogExport", null);
#endif
#if LINUX
Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogLogin", null);
#endif
gxmlTemp.Autoconnect (this);
dialogExport.TransientFor = (Gtk.Window)CasaMain.gxmlMain.GetWidget("windowMain");;
dialogExport.Destroyed += new EventHandler(dialogExport_Destroyed);
dialogExport.Modal = true;
dialogExport.Show();
}
private void dialogExport_Destroyed(object sender, EventArgs e)
{
}
private void on_buttonCloseExportSecrets_clicked(object sender, EventArgs args)
{
if (dialogExport != null)
{
dialogExport.Destroy();
}
}
private void on_buttonOkExportSecrets_clicked(object sender, EventArgs args)
{
if( 0 == miCASA.SetMasterPassword(0, entryMasterPassword.Text) )
{
string sMasterPWD = entryMasterPassword.Text;
string sEncryptString = entryMasterPassword.Text;
if (checkbuttonNoEncrypt.Active)
sEncryptString = null;
if (dialogExport != null)
{
dialogExport.Destroy();
}
string sHintDir = m_config.GetConfigSetting(CommonGUI.HINT_DIR, null);
string sHintFile = m_config.GetConfigSetting(CommonGUI.HINT_FILENAME, null);
// prompt the user for storage location
string sFileName = GetStorageFileName(sHintDir, sHintFile);
if (sFileName != null)
{
//Store off this location for next export
int iLastSlash = sFileName.LastIndexOf("/");
if (iLastSlash > 0)
{
sHintFile = sFileName.Substring(iLastSlash + 1);
sHintDir = sFileName.Substring(8, sFileName.Length - sHintFile.Length - 8);
}
// save for later use
m_config.SetConfigSetting(CommonGUI.HINT_DIR, sHintDir);
m_config.SetConfigSetting(CommonGUI.HINT_FILENAME, sHintFile);
m_config.WriteConfig();
// call our daemon to get the users secrets
ExportXMLSecrets exportSecrets = new ExportXMLSecrets(sMasterPWD, sEncryptString);
byte[] theSecrets = (byte[])Novell.CASA.MiCasa.Communication.MiCasaRequestReply.Send(MiCasaRequestReply.VERB_EXPORT_SECRETS, null, null, null, exportSecrets);
// write em out.
FileStream fs = new FileStream(sFileName.Substring(8), FileMode.Create);
fs.Write(theSecrets, 0, theSecrets.Length);
fs.Flush();
fs.Close();
CommonGUI.DisplayMessage(MessageType.Info, "Secrets saved to: \r\n" + sFileName.Substring(8));
}
}
else
{
// prompt user
MessageDialog md=new MessageDialog(dialogExport,Gtk.DialogFlags.Modal,
Gtk.MessageType.Warning,
Gtk.ButtonsType.Ok,
"Master Password incorrect");
md.Response +=new ResponseHandler(md_Response2);
md.SetPosition(Gtk.WindowPosition.CenterOnParent);
md.Modal = true;
md.Show();
}
}
private string GetStorageFileName(string sHintDir, string sHintFile)
{
String sFileName = CommonGUI.FileChooser(FileChooserAction.Save, "Select filename and location for secrets", sHintDir, sHintFile);
return sFileName;
}
private void md_Response2(object o, ResponseArgs args)
{
MessageDialog md = (MessageDialog)o;
if (md != null)
{
md.Destroy();
}
}
}
}

119
CASA/gui/ImportSecrets.cs Normal file
View File

@ -0,0 +1,119 @@
using System;
using System.IO;
using Novell.CASA.MiCasa.Communication;
using Novell.CASA.MiCasa.Common;
namespace Novell.CASA.GUI
{
/// <summary>
/// Summary description for ImportSecrets.
/// </summary>
public class ImportSecrets
{
Config m_config = null;
public MiCasa m_objMiCasa = null;
byte[] buffer = null;
[Glade.Widget]
Gtk.Entry entryMasterPassword;
[Glade.Widget]
Gtk.Dialog dialogImport;
public ImportSecrets(Config config, MiCasa objMiCasa)
{
m_config = config;
m_objMiCasa = objMiCasa;
}
public void Run()
{
String sHintDir = m_config.GetConfigSetting(CommonGUI.HINT_DIR, null);;
String sHintFilename = m_config.GetConfigSetting(CommonGUI.HINT_FILENAME, null);
// ask the user to locate the secret file to import
string sFile = CommonGUI.FileChooser(Gtk.FileChooserAction.Open, "Select import file", sHintDir, sHintFilename);
if (sFile != null)
{
// parse of the file:///
sFile = sFile.Substring(8);
if (File.Exists(sFile))
{
// let's read it
FileStream fs = new FileStream(sFile, FileMode.Open);
buffer = new byte[fs.Length];
int iBytes = fs.Read(buffer, 0, (int)fs.Length);
string data = System.Text.Encoding.ASCII.GetString(buffer);
fs.Flush();
fs.Close();
// check for clear text secrets
if (data.StartsWith("<?xml"))
{
ImportXMLSecrets addSecrets = new ImportXMLSecrets(null, buffer);
MiCasaRequestReply.Send(MiCasaRequestReply.VERB_ADD_XML_SECRETS, null, null, null, addSecrets);
CommonGUI.DisplayMessage(Gtk.MessageType.Info, "Import complete");
}
else
{
GetMasterPasswordUsedForImport();
}
}
}
}
public void GetMasterPasswordUsedForImport()
{
// prompt for master password, and optional passphrase to encrypt
//Logger.DbgLog("GUI:CasaMain.Login() - IsMasterPasswordSet returned false");
#if W32
Glade.XML gxmlTemp = new Glade.XML ("../images/casa.glade", "dialogImport", null);
#endif
#if LINUX
Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogLogin", null);
#endif
gxmlTemp.Autoconnect (this);
dialogImport.TransientFor = (Gtk.Window)CasaMain.gxmlMain.GetWidget("windowMain");;
dialogImport.Modal = true;
dialogImport.Show();
}
private void on_buttonImportOK_clicked(object sender, EventArgs args)
{
if (entryMasterPassword != null)
{
ImportXMLSecrets addSecrets = new ImportXMLSecrets(entryMasterPassword.Text, buffer);
addSecrets = (ImportXMLSecrets)MiCasaRequestReply.Send(MiCasaRequestReply.VERB_ADD_XML_SECRETS, null, null, null, addSecrets);
if (dialogImport != null)
{
dialogImport.Destroy();
}
if (m_objMiCasa != null)
{
m_objMiCasa.AggregateStore();
}
if (addSecrets.GetStatus().Equals("Success"))
CommonGUI.DisplayMessage(Gtk.MessageType.Info, "Import complete");
else
CommonGUI.DisplayMessage(Gtk.MessageType.Info, "Failed: " + addSecrets.GetStatus());
}
}
private void on_buttonImportClose_clicked(object sender, EventArgs args)
{
if (dialogImport != null)
{
dialogImport.Destroy();
}
}
}
}

View File

@ -56,7 +56,7 @@
<property name="use_underline">True</property> <property name="use_underline">True</property>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3732"> <widget class="GtkImage" id="image3902">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-new</property> <property name="stock">gtk-new</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -78,7 +78,7 @@
<signal name="activate" handler="OnNewSecretActivated" last_modification_time="Tue, 27 Sep 2005 06:02:26 GMT"/> <signal name="activate" handler="OnNewSecretActivated" last_modification_time="Tue, 27 Sep 2005 06:02:26 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3733"> <widget class="GtkImage" id="image3903">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-new</property> <property name="stock">gtk-new</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -99,7 +99,7 @@
<signal name="activate" handler="OnNewKeyActivated" last_modification_time="Tue, 27 Sep 2005 06:02:36 GMT"/> <signal name="activate" handler="OnNewKeyActivated" last_modification_time="Tue, 27 Sep 2005 06:02:36 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3734"> <widget class="GtkImage" id="image3904">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-new</property> <property name="stock">gtk-new</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -125,7 +125,7 @@
<accelerator key="F5" modifiers="0" signal="activate"/> <accelerator key="F5" modifiers="0" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3735"> <widget class="GtkImage" id="image3905">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-refresh</property> <property name="stock">gtk-refresh</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -152,7 +152,7 @@
<signal name="activate" handler="OnLockMiCASASecrets" last_modification_time="Mon, 10 Oct 2005 19:51:54 GMT"/> <signal name="activate" handler="OnLockMiCASASecrets" last_modification_time="Mon, 10 Oct 2005 19:51:54 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3736"> <widget class="GtkImage" id="image3906">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-dialog-authentication</property> <property name="stock">gtk-dialog-authentication</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -173,7 +173,7 @@
<signal name="activate" handler="OnUnLockMiCASASecrets" last_modification_time="Tue, 11 Oct 2005 20:12:35 GMT"/> <signal name="activate" handler="OnUnLockMiCASASecrets" last_modification_time="Tue, 11 Oct 2005 20:12:35 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3737"> <widget class="GtkImage" id="image3907">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-open</property> <property name="stock">gtk-open</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -194,7 +194,7 @@
<signal name="activate" handler="OnDestroyMiCASASecrets" last_modification_time="Tue, 11 Oct 2005 20:12:35 GMT"/> <signal name="activate" handler="OnDestroyMiCASASecrets" last_modification_time="Tue, 11 Oct 2005 20:12:35 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3738"> <widget class="GtkImage" id="image3908">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-delete</property> <property name="stock">gtk-delete</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -213,6 +213,54 @@
</widget> </widget>
</child> </child>
<child>
<widget class="GtkImageMenuItem" id="exportSecrets">
<property name="visible">True</property>
<property name="label" translatable="yes">_Export Secrets</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_exportSecrets_activate" last_modification_time="Mon, 07 Aug 2006 19:38:42 GMT"/>
<child internal-child="image">
<widget class="GtkImage" id="image3909">
<property name="visible">True</property>
<property name="stock">gtk-floppy</property>
<property name="icon_size">1</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
</child>
</widget>
</child>
<child>
<widget class="GtkImageMenuItem" id="importSecrets">
<property name="visible">True</property>
<property name="label" translatable="yes">_Import Secrets</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_importSecrets_activate" last_modification_time="Mon, 07 Aug 2006 19:38:42 GMT"/>
<child internal-child="image">
<widget class="GtkImage" id="image3910">
<property name="visible">True</property>
<property name="stock">gtk-open</property>
<property name="icon_size">1</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
</child>
</widget>
</child>
<child>
<widget class="GtkSeparatorMenuItem" id="separator7">
<property name="visible">True</property>
</widget>
</child>
<child> <child>
<widget class="GtkImageMenuItem" id="quit1"> <widget class="GtkImageMenuItem" id="quit1">
<property name="visible">True</property> <property name="visible">True</property>
@ -222,7 +270,7 @@
<accelerator key="Q" modifiers="GDK_CONTROL_MASK" signal="activate"/> <accelerator key="Q" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3739"> <widget class="GtkImage" id="image3911">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-quit</property> <property name="stock">gtk-quit</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -258,7 +306,7 @@
<accelerator key="F2" modifiers="0" signal="activate"/> <accelerator key="F2" modifiers="0" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3740"> <widget class="GtkImage" id="image3912">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-zoom-fit</property> <property name="stock">gtk-zoom-fit</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -279,7 +327,7 @@
<signal name="activate" handler="LinkKeyValue" last_modification_time="Fri, 19 Aug 2005 06:23:15 GMT"/> <signal name="activate" handler="LinkKeyValue" last_modification_time="Fri, 19 Aug 2005 06:23:15 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3741"> <widget class="GtkImage" id="image3913">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-jump-to</property> <property name="stock">gtk-jump-to</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -300,7 +348,7 @@
<signal name="activate" handler="CopyKeyValue" last_modification_time="Fri, 19 Aug 2005 06:23:15 GMT"/> <signal name="activate" handler="CopyKeyValue" last_modification_time="Fri, 19 Aug 2005 06:23:15 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3742"> <widget class="GtkImage" id="image3914">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-copy</property> <property name="stock">gtk-copy</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -328,7 +376,7 @@
<accelerator key="Delete" modifiers="0" signal="activate"/> <accelerator key="Delete" modifiers="0" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3743"> <widget class="GtkImage" id="image3915">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-delete</property> <property name="stock">gtk-delete</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -362,7 +410,7 @@
<property name="use_underline">True</property> <property name="use_underline">True</property>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3744"> <widget class="GtkImage" id="image3916">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-execute</property> <property name="stock">gtk-execute</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -384,7 +432,7 @@
<signal name="activate" handler="on_konquerer_activate" last_modification_time="Thu, 02 Mar 2006 07:08:06 GMT"/> <signal name="activate" handler="on_konquerer_activate" last_modification_time="Thu, 02 Mar 2006 07:08:06 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3745"> <widget class="GtkImage" id="image3917">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-execute</property> <property name="stock">gtk-execute</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -405,7 +453,7 @@
<signal name="activate" handler="on_kopete_activate" last_modification_time="Thu, 02 Mar 2006 07:08:44 GMT"/> <signal name="activate" handler="on_kopete_activate" last_modification_time="Thu, 02 Mar 2006 07:08:44 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3746"> <widget class="GtkImage" id="image3918">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-execute</property> <property name="stock">gtk-execute</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -426,7 +474,7 @@
<signal name="activate" handler="on_networkmanager_activate" last_modification_time="Thu, 02 Mar 2006 07:07:54 GMT"/> <signal name="activate" handler="on_networkmanager_activate" last_modification_time="Thu, 02 Mar 2006 07:07:54 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3747"> <widget class="GtkImage" id="image3919">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-execute</property> <property name="stock">gtk-execute</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -447,7 +495,7 @@
<signal name="activate" handler="on_gaim_activate" last_modification_time="Thu, 02 Mar 2006 07:07:29 GMT"/> <signal name="activate" handler="on_gaim_activate" last_modification_time="Thu, 02 Mar 2006 07:07:29 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3748"> <widget class="GtkImage" id="image3920">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-execute</property> <property name="stock">gtk-execute</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -472,7 +520,7 @@
<signal name="activate" handler="ResetMasterPassword" last_modification_time="Wed, 02 Nov 2005 15:28:00 GMT"/> <signal name="activate" handler="ResetMasterPassword" last_modification_time="Wed, 02 Nov 2005 15:28:00 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3749"> <widget class="GtkImage" id="image3921">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-revert-to-saved</property> <property name="stock">gtk-revert-to-saved</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -499,7 +547,7 @@
<signal name="activate" handler="Preferences" last_modification_time="Fri, 19 Aug 2005 06:40:17 GMT"/> <signal name="activate" handler="Preferences" last_modification_time="Fri, 19 Aug 2005 06:40:17 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3750"> <widget class="GtkImage" id="image3922">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-preferences</property> <property name="stock">gtk-preferences</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -533,7 +581,7 @@
<signal name="activate" handler="on_create_sample_secrets1_activate" last_modification_time="Fri, 30 Sep 2005 12:58:41 GMT"/> <signal name="activate" handler="on_create_sample_secrets1_activate" last_modification_time="Fri, 30 Sep 2005 12:58:41 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3751"> <widget class="GtkImage" id="image3923">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-add</property> <property name="stock">gtk-add</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -554,7 +602,7 @@
<signal name="activate" handler="on_remove_test_secrets1_activate" last_modification_time="Fri, 30 Sep 2005 12:59:05 GMT"/> <signal name="activate" handler="on_remove_test_secrets1_activate" last_modification_time="Fri, 30 Sep 2005 12:59:05 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3752"> <widget class="GtkImage" id="image3924">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-remove</property> <property name="stock">gtk-remove</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -605,7 +653,7 @@
<accelerator key="F1" modifiers="0" signal="activate"/> <accelerator key="F1" modifiers="0" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3753"> <widget class="GtkImage" id="image3925">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-help</property> <property name="stock">gtk-help</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -632,7 +680,7 @@
<signal name="activate" handler="About" last_modification_time="Thu, 01 Sep 2005 15:30:28 GMT"/> <signal name="activate" handler="About" last_modification_time="Thu, 01 Sep 2005 15:30:28 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image3754"> <widget class="GtkImage" id="image3926">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-dialog-info</property> <property name="stock">gtk-dialog-info</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -11863,4 +11911,614 @@ the following characters
</child> </child>
</widget> </widget>
<widget class="GtkDialog" id="dialogExport">
<property name="visible">True</property>
<property name="title" translatable="yes">CASA - Export Secrets</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_CENTER_ALWAYS</property>
<property name="modal">True</property>
<property name="resizable">False</property>
<property name="destroy_with_parent">True</property>
<property name="icon">CASAicons.ico</property>
<property name="decorated">True</property>
<property name="skip_taskbar_hint">False</property>
<property name="skip_pager_hint">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<property name="focus_on_map">True</property>
<property name="urgency_hint">False</property>
<property name="has_separator">True</property>
<child internal-child="vbox">
<widget class="GtkVBox" id="vbox148">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child internal-child="action_area">
<widget class="GtkHButtonBox" id="hbuttonbox23">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
<widget class="GtkButton" id="button64">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-help</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NONE</property>
<property name="focus_on_click">True</property>
<property name="response_id">-11</property>
</widget>
</child>
<child>
<widget class="GtkButton" id="buttonCloseExportSecrets">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-close</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">-7</property>
<signal name="clicked" handler="on_buttonCloseExportSecrets_clicked" last_modification_time="Tue, 08 Aug 2006 19:58:38 GMT"/>
</widget>
</child>
<child>
<widget class="GtkButton" id="buttonOkExportSecrets">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-ok</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">-5</property>
<signal name="clicked" handler="on_buttonOkExportSecrets_clicked" last_modification_time="Mon, 07 Aug 2006 23:37:55 GMT"/>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vbox149">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkHBox" id="hbox87">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkVBox" id="vbox150">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkImage" id="image3853">
<property name="visible">True</property>
<property name="stock">gtk-dialog-authentication</property>
<property name="icon_size">6</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">4</property>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">4</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vbox151">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkLabel" id="label263">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Export miCASA Secrets&lt;/b&gt;</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="padding">4</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label264">
<property name="visible">True</property>
<property name="label" translatable="yes">Your Master Password is required to
export your secrets. Your secrets will
be encrypted using your Master Password.
If you wish, you can export your secrets
in clear text. </property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="padding">4</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkFrame" id="frame30">
<property name="border_width">6</property>
<property name="visible">True</property>
<property name="label_xalign">0</property>
<property name="label_yalign">0.5</property>
<property name="shadow_type">GTK_SHADOW_IN</property>
<child>
<widget class="GtkAlignment" id="alignment45">
<property name="visible">True</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xscale">1</property>
<property name="yscale">1</property>
<property name="top_padding">0</property>
<property name="bottom_padding">0</property>
<property name="left_padding">12</property>
<property name="right_padding">0</property>
<child>
<widget class="GtkTable" id="table31">
<property name="border_width">6</property>
<property name="visible">True</property>
<property name="n_rows">3</property>
<property name="n_columns">2</property>
<property name="homogeneous">False</property>
<property name="row_spacing">6</property>
<property name="column_spacing">6</property>
<child>
<widget class="GtkLabel" id="label265">
<property name="visible">True</property>
<property name="label" translatable="yes">Master Password :</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">1</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="entryMasterPassword">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="editable">True</property>
<property name="visibility">False</property>
<property name="max_length">512</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
<property name="invisible_char">*</property>
<property name="activates_default">False</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="checkbuttonNoEncrypt">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Do not encrypt export file</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="active">False</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
</widget>
</child>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
</child>
</widget>
<widget class="GtkDialog" id="dialogImport">
<property name="visible">True</property>
<property name="title" translatable="yes">CASA - Import Secrets</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_CENTER_ALWAYS</property>
<property name="modal">True</property>
<property name="resizable">False</property>
<property name="destroy_with_parent">True</property>
<property name="icon">CASAicons.ico</property>
<property name="decorated">True</property>
<property name="skip_taskbar_hint">False</property>
<property name="skip_pager_hint">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<property name="focus_on_map">True</property>
<property name="urgency_hint">False</property>
<property name="has_separator">True</property>
<child internal-child="vbox">
<widget class="GtkVBox" id="vbox152">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child internal-child="action_area">
<widget class="GtkHButtonBox" id="hbuttonbox24">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
<widget class="GtkButton" id="button65">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-help</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NONE</property>
<property name="focus_on_click">True</property>
<property name="response_id">-11</property>
</widget>
</child>
<child>
<widget class="GtkButton" id="buttonImportClose">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-close</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">-7</property>
<signal name="clicked" handler="on_buttonImportClose_clicked" last_modification_time="Wed, 09 Aug 2006 20:53:18 GMT"/>
</widget>
</child>
<child>
<widget class="GtkButton" id="buttonImportOK">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-ok</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">-5</property>
<signal name="clicked" handler="on_buttonImportOK_clicked" last_modification_time="Wed, 09 Aug 2006 20:53:23 GMT"/>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vbox153">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkHBox" id="hbox88">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkVBox" id="vbox154">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkImage" id="image3854">
<property name="visible">True</property>
<property name="stock">gtk-dialog-authentication</property>
<property name="icon_size">6</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">4</property>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">4</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vbox155">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkLabel" id="label266">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Export miCASA Secrets&lt;/b&gt;</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="padding">4</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label267">
<property name="visible">True</property>
<property name="label" translatable="yes">The file you selected appears
to be encypted. Please enter
the Master Password used
to encrypt this file</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="padding">4</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkFrame" id="frame31">
<property name="border_width">6</property>
<property name="visible">True</property>
<property name="label_xalign">0</property>
<property name="label_yalign">0.5</property>
<property name="shadow_type">GTK_SHADOW_IN</property>
<child>
<widget class="GtkAlignment" id="alignment46">
<property name="visible">True</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xscale">1</property>
<property name="yscale">1</property>
<property name="top_padding">0</property>
<property name="bottom_padding">0</property>
<property name="left_padding">12</property>
<property name="right_padding">0</property>
<child>
<widget class="GtkTable" id="table32">
<property name="border_width">6</property>
<property name="visible">True</property>
<property name="n_rows">3</property>
<property name="n_columns">2</property>
<property name="homogeneous">False</property>
<property name="row_spacing">6</property>
<property name="column_spacing">6</property>
<child>
<widget class="GtkLabel" id="label268">
<property name="visible">True</property>
<property name="label" translatable="yes">Master Password :</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">1</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="entryMasterPassword">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="editable">True</property>
<property name="visibility">False</property>
<property name="max_length">512</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
<property name="invisible_char">*</property>
<property name="activates_default">False</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="y_options"></property>
</packing>
</child>
</widget>
</child>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
</child>
</widget>
</glade-interface> </glade-interface>

View File

@ -804,5 +804,49 @@ namespace sscs.cache
string homeDir = GetUserHomeDirectory(); string homeDir = GetUserHomeDirectory();
return homeDir + ConstStrings.MICASA_VALIDATION_FILE; return homeDir + ConstStrings.MICASA_VALIDATION_FILE;
} }
internal byte[] GetSecrets(string sEncryptionString)
{
if (lss != null)
{
MemoryStream ms = lss.GetSecretsAsXMLStream();
byte[] baSecrets = ms.ToArray();
// encrypt if an encryptionstring was passed
if ((sEncryptionString != null) && (sEncryptionString.Length > 0))
{
byte[] baKey = sscs.crypto.CASACrypto.Generate16ByteKeyFromString(sEncryptionString, null, false);
// now encypt it.
baSecrets = sscs.crypto.CASACrypto.EncryptData(baSecrets, baKey);
}
return baSecrets;
}
else
{
return null;
}
}
internal void MergeXMLSecrets(byte[] encryptedXmlSecrets, string sEncryptionString)
{
if (sEncryptionString != null)
{
// decrypt the buffer using the string passed in.
byte[] baKey = sscs.crypto.CASACrypto.Generate16ByteKeyFromString(sEncryptionString, null, false);
byte[] baBuffer = sscs.crypto.CASACrypto.DecryptData(encryptedXmlSecrets, baKey);
MergeXMLSecrets(baBuffer);
}
}
internal void MergeXMLSecrets(byte[] decryptedXmlSecrets)
{
XmlDocument doc = new XmlDocument();
String sXMLData = Encoding.ASCII.GetString(decryptedXmlSecrets);
doc.LoadXml(sXMLData);
if (lss != null)
{
lss.AddXMLSecretsToStore(doc);
}
}
} }
} }

View File

@ -40,7 +40,7 @@ namespace sscs.communication.win {
private uint NumberPipes = 16; private uint NumberPipes = 16;
private uint OutBuffer = 65536; //512; private uint OutBuffer = 65536; //512;
private uint InBuffer = 65536; //512; private uint InBuffer = 65536; //512;
private const int MAX_READ_BYTES = 5000; private const int MAX_READ_BYTES = 15000;
private bool _listen = true; private bool _listen = true;
public bool Listen { public bool Listen {
get { get {

View File

@ -98,6 +98,16 @@
SubType = "Code" SubType = "Code"
BuildAction = "Compile" BuildAction = "Compile"
/> />
<File
RelPath = "common\ExportXMLSecrets.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "common\ImportXMLSecrets.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File <File
RelPath = "common\LinkedKeyInfo.cs" RelPath = "common\LinkedKeyInfo.cs"
SubType = "Code" SubType = "Code"

View File

@ -0,0 +1,34 @@
using System;
namespace Novell.CASA.MiCasa.Common
{
/// <summary>
/// Summary description for ExportSecrets.
/// </summary>
///
[Serializable]
public class ExportXMLSecrets
{
private string m_sMasterPassword = null;
private string m_sPassphrase = null;
public ExportXMLSecrets(string sMasterPassword, string sPassphrase)
{
m_sMasterPassword = sMasterPassword;
if (sPassphrase != null)
{
m_sPassphrase = sPassphrase;
}
}
public string GetMasterPassword()
{
return m_sMasterPassword;
}
public string GetPassphrase()
{
return m_sPassphrase;
}
}
}

View File

@ -0,0 +1,42 @@
using System;
namespace Novell.CASA.MiCasa.Common
{
/// <summary>
/// Summary description for AddXMLSecrets.
/// </summary>
///
[Serializable]
public class ImportXMLSecrets
{
private string m_MasterPassword = null;
private byte[] m_XmlSecrets = null;
private string m_sStatus = "";
public ImportXMLSecrets(string sMasterPassword, byte[] XmlSecrets)
{
m_MasterPassword = sMasterPassword;
m_XmlSecrets = XmlSecrets;
}
public string GetMasterPasssword()
{
return m_MasterPassword;
}
public byte[] GetXmlSecrets()
{
return m_XmlSecrets;
}
public void SetStatus(string s)
{
m_sStatus = s;
}
public string GetStatus()
{
return m_sStatus;
}
}
}

View File

@ -56,6 +56,8 @@ namespace Novell.CASA.MiCasa.Communication
public const int VERB_RESET_MASTER_PASSWORD = 18; public const int VERB_RESET_MASTER_PASSWORD = 18;
public const int VERB_GET_SECRETIDS = 19; public const int VERB_GET_SECRETIDS = 19;
public const int VERB_VALIDATE_DESKTOP_PWD = 20; public const int VERB_VALIDATE_DESKTOP_PWD = 20;
public const int VERB_EXPORT_SECRETS = 21;
public const int VERB_ADD_XML_SECRETS = 22;
public const int VERB_DUMP_LINKED_KEYS = 96; public const int VERB_DUMP_LINKED_KEYS = 96;
public const int VERB_CREATE_TEST_SECRETS = 97; public const int VERB_CREATE_TEST_SECRETS = 97;

View File

@ -170,6 +170,62 @@ namespace sscs.crypto
return baSavedKey; return baSavedKey;
} }
internal static byte[] DecryptData(byte[] encyptedXmlData, byte[] key)
{
CryptoStream csDecrypt = null;
byte[] buffer = new byte[encyptedXmlData.Length];
MemoryStream ms = new MemoryStream(encyptedXmlData);
try
{
//Get an decryptor.
RijndaelManaged myRijndael = new RijndaelManaged();
ICryptoTransform decryptor = myRijndael.CreateDecryptor(key, key);
csDecrypt = new CryptoStream(ms, decryptor, CryptoStreamMode.Read);
//Read all data to the crypto stream and flush it.
int iBytesRead = csDecrypt.Read(buffer,0,encyptedXmlData.Length);
}
catch(Exception e)
{
CSSSLogger.ExpLog(e.ToString());
CSSSLogger.DbgLog("decrypting failed.");
}
if (csDecrypt != null)
csDecrypt.Close();
return buffer;
}
internal static byte[] EncryptData(byte[] xmlData, byte[] key)
{
CryptoStream csEncrypt = null;
MemoryStream encryptedData = new MemoryStream();
try
{
//Get an encryptor.
RijndaelManaged myRijndael = new RijndaelManaged();
ICryptoTransform encryptor = myRijndael.CreateEncryptor(key, key);
//csEncrypt = new CryptoStream(fsEncrypt, encryptor, CryptoStreamMode.Write);
csEncrypt = new CryptoStream(encryptedData, encryptor, CryptoStreamMode.Write);
//Write all data to the crypto stream and flush it.
csEncrypt.Write(xmlData, 0, xmlData.Length);
csEncrypt.FlushFinalBlock();
}
catch(Exception e)
{
CSSSLogger.ExpLog(e.ToString());
CSSSLogger.DbgLog("Encrypting failed.");
}
if (csEncrypt != null)
csEncrypt.Close();
return encryptedData.ToArray();
}
internal static void EncryptDataAndWriteToFile(byte[] xmlData, internal static void EncryptDataAndWriteToFile(byte[] xmlData,
byte[] key, string fileName) byte[] key, string fileName)
{ {

View File

@ -237,6 +237,24 @@ namespace sscs.lss
{ {
return false; return false;
} }
// add these to the store
AddXMLSecretsToStore(doc);
}
catch(Exception e)
{
CSSSLogger.ExpLog(e.ToString());
}
// collect now to remove old data from memory
GC.Collect();
return true;
}
internal void AddXMLSecretsToStore(XmlDocument doc)
{
string xpath = "";
xpath = "//" + XmlConsts.miCASANode; xpath = "//" + XmlConsts.miCASANode;
XmlNode miCASANode = doc.SelectSingleNode(xpath); XmlNode miCASANode = doc.SelectSingleNode(xpath);
if(miCASANode != null) if(miCASANode != null)
@ -321,16 +339,6 @@ namespace sscs.lss
}//end of traversing keyChainNodeList }//end of traversing keyChainNodeList
} }
} }
catch(Exception e)
{
CSSSLogger.ExpLog(e.ToString());
}
// collect now to remove old data from memory
GC.Collect();
return true;
}
private void PersistStoreDelayThreadFn() private void PersistStoreDelayThreadFn()
{ {

View File

@ -33,6 +33,7 @@ using sscs.lss;
using System.Runtime.Serialization.Formatters.Binary; using System.Runtime.Serialization.Formatters.Binary;
using System.IO; using System.IO;
using System.Xml;
using Novell.CASA.MiCasa.Common; using Novell.CASA.MiCasa.Common;
using Novell.CASA.MiCasa.Communication; using Novell.CASA.MiCasa.Communication;
@ -218,6 +219,14 @@ namespace sscs.verbs
{ {
return DoValidateDesktopPwd(ssStore, wo); return DoValidateDesktopPwd(ssStore, wo);
} }
case MiCasaRequestReply.VERB_EXPORT_SECRETS:
{
return DoExportSecrets(ssStore, wo);
}
case MiCasaRequestReply.VERB_ADD_XML_SECRETS:
{
return DoMergeXMLSecrets(ssStore, wo);
}
default: default:
{ {
@ -235,6 +244,61 @@ namespace sscs.verbs
return wo; return wo;
} }
private WrappedObject DoMergeXMLSecrets(SecretStore ssStore, WrappedObject wo)
{
ImportXMLSecrets addSecrets = (ImportXMLSecrets)wo.GetObject();
string sMasterPassword = addSecrets.GetMasterPasssword();
byte[] baXMLSecrets = addSecrets.GetXmlSecrets();
try
{
if (sMasterPassword != null)
{
// decrypt secrets if possible
ssStore.MergeXMLSecrets(baXMLSecrets, sMasterPassword);
}
else
{
// do the merge now.
ssStore.MergeXMLSecrets(baXMLSecrets);
}
addSecrets.SetStatus("Success");
wo.SetError(constants.RetCodes.SUCCESS, "");
}
catch (Exception e)
{
addSecrets.SetStatus(e.ToString());
wo.SetError(constants.RetCodes.FAILURE, e.ToString());
}
return wo;
}
private WrappedObject DoExportSecrets(SecretStore ssStore, WrappedObject wo)
{
ExportXMLSecrets secrets = (ExportXMLSecrets)wo.GetObject();
// validate masterpassword
try
{
string sMasterPassword = secrets.GetMasterPassword();
ssStore.UnlockStore(null, sMasterPassword);
}
catch (Exception e)
{
wo.SetError(constants.RetCodes.FAILURE, e.ToString());
return wo;
}
string sEncrpyptionPassphrase = secrets.GetPassphrase();
// get all secrets
wo.SetObject(ssStore.GetSecrets(sEncrpyptionPassphrase));
wo.SetError(constants.RetCodes.SUCCESS, "");
return wo;
}
private WrappedObject DoValidateDesktopPwd(SecretStore ssStore, WrappedObject wo) private WrappedObject DoValidateDesktopPwd(SecretStore ssStore, WrappedObject wo)
{ {
// let's validate the Desktop pwd // let's validate the Desktop pwd

View File

@ -21,24 +21,6 @@
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_43A67B1DA6D34A6098E563CC902B950F"
"OwnerKey" = "8:_A6D188F9B5AF430C92D0B9606ADF4C63"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_43A67B1DA6D34A6098E563CC902B950F"
"OwnerKey" = "8:_98DCC664712A41B993FCD33026D06FFC"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_43A67B1DA6D34A6098E563CC902B950F"
"OwnerKey" = "8:_BF2CE61978054B2DB482792974E390F0"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_6CE0B932302E4E3783AAD1EA468ABD34" "MsmKey" = "8:_6CE0B932302E4E3783AAD1EA468ABD34"
"OwnerKey" = "8:_UNDEFINED" "OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
@ -75,6 +57,24 @@
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_EF3E9937AC8B4A898E7B80BCEA175E6A"
"OwnerKey" = "8:_98DCC664712A41B993FCD33026D06FFC"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_EF3E9937AC8B4A898E7B80BCEA175E6A"
"OwnerKey" = "8:_BF2CE61978054B2DB482792974E390F0"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_EF3E9937AC8B4A898E7B80BCEA175E6A"
"OwnerKey" = "8:_A6D188F9B5AF430C92D0B9606ADF4C63"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_EF467E7BEF8E4109BAD7E2FE47508D13" "MsmKey" = "8:_EF467E7BEF8E4109BAD7E2FE47508D13"
"OwnerKey" = "8:_UNDEFINED" "OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
@ -307,13 +307,13 @@
{ {
"Name" = "8:Microsoft Visual Studio" "Name" = "8:Microsoft Visual Studio"
"ProductName" = "8:CASA" "ProductName" = "8:CASA"
"ProductCode" = "8:{9763A76D-50C8-4D81-AAB2-0415D042E299}" "ProductCode" = "8:{970A65D5-A969-4659-B2AF-F212B518F99A}"
"PackageCode" = "8:{A775679E-BE18-4FCC-884B-B5A6626CD0A4}" "PackageCode" = "8:{1368B6D9-3ACA-446D-8E33-C207F44508D6}"
"UpgradeCode" = "8:{DFD8B8A0-EA51-4202-831C-7CD2B90A63AE}" "UpgradeCode" = "8:{DFD8B8A0-EA51-4202-831C-7CD2B90A63AE}"
"RestartWWWService" = "11:FALSE" "RestartWWWService" = "11:FALSE"
"RemovePreviousVersions" = "11:TRUE" "RemovePreviousVersions" = "11:TRUE"
"DetectNewerInstalledVersion" = "11:TRUE" "DetectNewerInstalledVersion" = "11:TRUE"
"ProductVersion" = "8:1.7.732" "ProductVersion" = "8:1.7.786"
"Manufacturer" = "8:Novell" "Manufacturer" = "8:Novell"
"ARPHELPTELEPHONE" = "8:" "ARPHELPTELEPHONE" = "8:"
"ARPHELPLINK" = "8:" "ARPHELPLINK" = "8:"
@ -835,7 +835,7 @@
} }
"MergeModule" "MergeModule"
{ {
"{35A69C6E-5BA4-440D-803D-762B59A45393}:_43A67B1DA6D34A6098E563CC902B950F" "{35A69C6E-5BA4-440D-803D-762B59A45393}:_EF3E9937AC8B4A898E7B80BCEA175E6A"
{ {
"UseDynamicProperties" = "11:TRUE" "UseDynamicProperties" = "11:TRUE"
"IsDependency" = "11:TRUE" "IsDependency" = "11:TRUE"
@ -854,7 +854,7 @@
{ {
"{8062640A-2EEE-46E9-AB67-688E9A886E9F}:_98DCC664712A41B993FCD33026D06FFC" "{8062640A-2EEE-46E9-AB67-688E9A886E9F}:_98DCC664712A41B993FCD33026D06FFC"
{ {
"SourcePath" = "8:..\\CASA-gui-msm\\Debug\\CASA-gui.msm" "SourcePath" = "8:..\\CASA-gui-msm\\Release\\CASA-gui.msm"
"TargetName" = "8:" "TargetName" = "8:"
"Tag" = "8:" "Tag" = "8:"
"Folder" = "8:_E8900D5F0BD44DC0BB0BEFDF7C43B30C" "Folder" = "8:_E8900D5F0BD44DC0BB0BEFDF7C43B30C"
@ -907,7 +907,7 @@
} }
"{8062640A-2EEE-46E9-AB67-688E9A886E9F}:_A6D188F9B5AF430C92D0B9606ADF4C63" "{8062640A-2EEE-46E9-AB67-688E9A886E9F}:_A6D188F9B5AF430C92D0B9606ADF4C63"
{ {
"SourcePath" = "8:..\\CASA-dev-msm\\Debug\\miCASA-Dev-msm.msm" "SourcePath" = "8:..\\CASA-dev-msm\\Release\\miCASA-Dev-msm.msm"
"TargetName" = "8:" "TargetName" = "8:"
"Tag" = "8:" "Tag" = "8:"
"Folder" = "8:_E8900D5F0BD44DC0BB0BEFDF7C43B30C" "Folder" = "8:_E8900D5F0BD44DC0BB0BEFDF7C43B30C"
@ -939,17 +939,31 @@
"SourcePath" = "8:..\\CASA-dev-msm\\Release\\miCASA-Dev-msm.msm" "SourcePath" = "8:..\\CASA-dev-msm\\Release\\miCASA-Dev-msm.msm"
"Properties" "Properties"
{ {
"_62D43560615587AE3DB95A0BA428D5BE.4F1ACC03A482468C9BEBF6D83FA4F7FE" "_4610C2D660057AC39D7FDD4891590B10.4F1ACC03A482468C9BEBF6D83FA4F7FE"
{ {
"Name" = "8:_62D43560615587AE3DB95A0BA428D5BE.4F1ACC03A482468C9BEBF6D83FA4F7FE" "Name" = "8:_4610C2D660057AC39D7FDD4891590B10.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"DisplayName" = "8:" "DisplayName" = "8:"
"Description" = "8:" "Description" = "8:"
"Type" = "3:2" "Type" = "3:2"
"ContextData" = "8:InstallToGAC=;IsolateToManifest=_A1ECD7DAF522A0E5D85BCDD9EAED3209.4F1ACC03A482468C9BEBF6D83FA4F7FE" "ContextData" = "8:InstallToGAC=;IsolateToManifest=_8FCF3A547028ECFD0B5049EFAB348182.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"Attributes" = "3:0" "Attributes" = "3:0"
"Setting" = "3:2" "Setting" = "3:2"
"Value" = "8:_A1ECD7DAF522A0E5D85BCDD9EAED3209.4F1ACC03A482468C9BEBF6D83FA4F7FE" "Value" = "8:_8FCF3A547028ECFD0B5049EFAB348182.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"DefaultValue" = "8:_A1ECD7DAF522A0E5D85BCDD9EAED3209.4F1ACC03A482468C9BEBF6D83FA4F7FE" "DefaultValue" = "8:_8FCF3A547028ECFD0B5049EFAB348182.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"ParentName" = "8:_6418E7496A474EDDAC9A91150BBE4A26.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"UsePlugInResources" = "11:FALSE"
}
"_4F85CEF984A77868D0A929E54872824F.4F1ACC03A482468C9BEBF6D83FA4F7FE"
{
"Name" = "8:_4F85CEF984A77868D0A929E54872824F.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"DisplayName" = "8:"
"Description" = "8:"
"Type" = "3:2"
"ContextData" = "8:InstallToGAC=;IsolateToManifest=_0683B4C519DB3748EBD996E0ABA831C0.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"Attributes" = "3:0"
"Setting" = "3:2"
"Value" = "8:_0683B4C519DB3748EBD996E0ABA831C0.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"DefaultValue" = "8:_0683B4C519DB3748EBD996E0ABA831C0.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"ParentName" = "8:_6418E7496A474EDDAC9A91150BBE4A26.4F1ACC03A482468C9BEBF6D83FA4F7FE" "ParentName" = "8:_6418E7496A474EDDAC9A91150BBE4A26.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"UsePlugInResources" = "11:FALSE" "UsePlugInResources" = "11:FALSE"
} }
@ -964,59 +978,45 @@
"Setting" = "3:1" "Setting" = "3:1"
"UsePlugInResources" = "11:FALSE" "UsePlugInResources" = "11:FALSE"
} }
"_6E1C74B0F6DBAA22C571F4B02C1DB283.4F1ACC03A482468C9BEBF6D83FA4F7FE" "_B6F5734BF952F464EAB21BAD6E20F38A.4F1ACC03A482468C9BEBF6D83FA4F7FE"
{ {
"Name" = "8:_6E1C74B0F6DBAA22C571F4B02C1DB283.4F1ACC03A482468C9BEBF6D83FA4F7FE" "Name" = "8:_B6F5734BF952F464EAB21BAD6E20F38A.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"DisplayName" = "8:" "DisplayName" = "8:"
"Description" = "8:" "Description" = "8:"
"Type" = "3:2" "Type" = "3:2"
"ContextData" = "8:InstallToGAC=;IsolateToManifest=_E33B56BF66EDE9E5F123E5CB7C4EEAB7.4F1ACC03A482468C9BEBF6D83FA4F7FE" "ContextData" = "8:InstallToGAC=;IsolateToManifest=_79BCEE497E2B712D20C7E4A2F4800E60.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"Attributes" = "3:0" "Attributes" = "3:0"
"Setting" = "3:2" "Setting" = "3:2"
"Value" = "8:_E33B56BF66EDE9E5F123E5CB7C4EEAB7.4F1ACC03A482468C9BEBF6D83FA4F7FE" "Value" = "8:_79BCEE497E2B712D20C7E4A2F4800E60.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"DefaultValue" = "8:_E33B56BF66EDE9E5F123E5CB7C4EEAB7.4F1ACC03A482468C9BEBF6D83FA4F7FE" "DefaultValue" = "8:_79BCEE497E2B712D20C7E4A2F4800E60.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"ParentName" = "8:_6418E7496A474EDDAC9A91150BBE4A26.4F1ACC03A482468C9BEBF6D83FA4F7FE" "ParentName" = "8:_6418E7496A474EDDAC9A91150BBE4A26.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"UsePlugInResources" = "11:FALSE" "UsePlugInResources" = "11:FALSE"
} }
"_95C01A87787956AC69FC2E9C7FA507A7.4F1ACC03A482468C9BEBF6D83FA4F7FE" "_E7CF2B4A827BE173141CA1E1D0F82AFF.4F1ACC03A482468C9BEBF6D83FA4F7FE"
{ {
"Name" = "8:_95C01A87787956AC69FC2E9C7FA507A7.4F1ACC03A482468C9BEBF6D83FA4F7FE" "Name" = "8:_E7CF2B4A827BE173141CA1E1D0F82AFF.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"DisplayName" = "8:" "DisplayName" = "8:"
"Description" = "8:" "Description" = "8:"
"Type" = "3:2" "Type" = "3:2"
"ContextData" = "8:InstallToGAC=;IsolateToManifest=_79C6F8F43FF4CB3AF63B925D0EA1C564.4F1ACC03A482468C9BEBF6D83FA4F7FE" "ContextData" = "8:InstallToGAC=;IsolateToManifest=_108CF762A5E732DB8AA6185773BCA705.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"Attributes" = "3:0" "Attributes" = "3:0"
"Setting" = "3:2" "Setting" = "3:2"
"Value" = "8:_79C6F8F43FF4CB3AF63B925D0EA1C564.4F1ACC03A482468C9BEBF6D83FA4F7FE" "Value" = "8:_108CF762A5E732DB8AA6185773BCA705.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"DefaultValue" = "8:_79C6F8F43FF4CB3AF63B925D0EA1C564.4F1ACC03A482468C9BEBF6D83FA4F7FE" "DefaultValue" = "8:_108CF762A5E732DB8AA6185773BCA705.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"ParentName" = "8:_6418E7496A474EDDAC9A91150BBE4A26.4F1ACC03A482468C9BEBF6D83FA4F7FE" "ParentName" = "8:_6418E7496A474EDDAC9A91150BBE4A26.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"UsePlugInResources" = "11:FALSE" "UsePlugInResources" = "11:FALSE"
} }
"_E1A13CA07F77E5ABDB363BA4E14A8EED.4F1ACC03A482468C9BEBF6D83FA4F7FE" "_F0F8D6D23B097F7830C01E614D9034B9.4F1ACC03A482468C9BEBF6D83FA4F7FE"
{ {
"Name" = "8:_E1A13CA07F77E5ABDB363BA4E14A8EED.4F1ACC03A482468C9BEBF6D83FA4F7FE" "Name" = "8:_F0F8D6D23B097F7830C01E614D9034B9.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"DisplayName" = "8:" "DisplayName" = "8:"
"Description" = "8:" "Description" = "8:"
"Type" = "3:2" "Type" = "3:2"
"ContextData" = "8:InstallToGAC=;IsolateToManifest=_793F49C101FDC71EA468B0F50F5E7FF8.4F1ACC03A482468C9BEBF6D83FA4F7FE" "ContextData" = "8:InstallToGAC=;IsolateToManifest=_290870C7D1693472634A9D8D875DA83B.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"Attributes" = "3:0" "Attributes" = "3:0"
"Setting" = "3:2" "Setting" = "3:2"
"Value" = "8:_793F49C101FDC71EA468B0F50F5E7FF8.4F1ACC03A482468C9BEBF6D83FA4F7FE" "Value" = "8:_290870C7D1693472634A9D8D875DA83B.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"DefaultValue" = "8:_793F49C101FDC71EA468B0F50F5E7FF8.4F1ACC03A482468C9BEBF6D83FA4F7FE" "DefaultValue" = "8:_290870C7D1693472634A9D8D875DA83B.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"ParentName" = "8:_6418E7496A474EDDAC9A91150BBE4A26.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"UsePlugInResources" = "11:FALSE"
}
"_ED516AEF413A6424C60E58C4FE881B58.4F1ACC03A482468C9BEBF6D83FA4F7FE"
{
"Name" = "8:_ED516AEF413A6424C60E58C4FE881B58.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"DisplayName" = "8:"
"Description" = "8:"
"Type" = "3:2"
"ContextData" = "8:InstallToGAC=;IsolateToManifest=_4CF0917F390ACC0AF5A1750516A3993E.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"Attributes" = "3:0"
"Setting" = "3:2"
"Value" = "8:_4CF0917F390ACC0AF5A1750516A3993E.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"DefaultValue" = "8:_4CF0917F390ACC0AF5A1750516A3993E.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"ParentName" = "8:_6418E7496A474EDDAC9A91150BBE4A26.4F1ACC03A482468C9BEBF6D83FA4F7FE" "ParentName" = "8:_6418E7496A474EDDAC9A91150BBE4A26.4F1ACC03A482468C9BEBF6D83FA4F7FE"
"UsePlugInResources" = "11:FALSE" "UsePlugInResources" = "11:FALSE"
} }
@ -1030,7 +1030,7 @@
} }
"{8062640A-2EEE-46E9-AB67-688E9A886E9F}:_BF2CE61978054B2DB482792974E390F0" "{8062640A-2EEE-46E9-AB67-688E9A886E9F}:_BF2CE61978054B2DB482792974E390F0"
{ {
"SourcePath" = "8:..\\CASA-msm\\Debug\\CASA-msm.msm" "SourcePath" = "8:..\\CASA-msm\\Release\\CASA-msm.msm"
"TargetName" = "8:" "TargetName" = "8:"
"Tag" = "8:" "Tag" = "8:"
"Folder" = "8:_E8900D5F0BD44DC0BB0BEFDF7C43B30C" "Folder" = "8:_E8900D5F0BD44DC0BB0BEFDF7C43B30C"