Add Export/import feature
This commit is contained in:
parent
38264cc856
commit
2d3518d9bd
@ -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"
|
||||||
|
@ -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()
|
||||||
|
@ -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
150
CASA/gui/ExportSecrets.cs
Normal 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
119
CASA/gui/ImportSecrets.cs
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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"><b>Export miCASA Secrets</b></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"><b>Export miCASA Secrets</b></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>
|
||||||
|
44
CASA/micasad/cache/SecretStore.cs
vendored
44
CASA/micasad/cache/SecretStore.cs
vendored
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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 {
|
||||||
|
@ -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"
|
||||||
|
34
CASA/micasad/lib/common/ExportXMLSecrets.cs
Normal file
34
CASA/micasad/lib/common/ExportXMLSecrets.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
42
CASA/micasad/lib/common/ImportXMLSecrets.cs
Normal file
42
CASA/micasad/lib/common/ImportXMLSecrets.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
@ -32,143 +32,199 @@ using sscs.constants;
|
|||||||
|
|
||||||
namespace sscs.crypto
|
namespace sscs.crypto
|
||||||
{
|
{
|
||||||
public class CASACrypto
|
public class CASACrypto
|
||||||
{
|
{
|
||||||
|
|
||||||
private const int SALTSIZE = 64;
|
private const int SALTSIZE = 64;
|
||||||
private const int ITERATION_COUNT = 1000;
|
private const int ITERATION_COUNT = 1000;
|
||||||
private const int HASH_SIZE = 32;
|
private const int HASH_SIZE = 32;
|
||||||
|
|
||||||
internal static byte[] Generate16ByteKeyFromString(string sTheString, string sFilepath, bool bUseOldMethod)
|
internal static byte[] Generate16ByteKeyFromString(string sTheString, string sFilepath, bool bUseOldMethod)
|
||||||
{
|
{
|
||||||
byte[] baKey = new byte[16]; //return value
|
byte[] baKey = new byte[16]; //return value
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Rfc2898DeriveBytes pkcs5 = new Rfc2898DeriveBytes(sTheString, SALTSIZE, ITERATION_COUNT, bUseOldMethod);
|
Rfc2898DeriveBytes pkcs5 = new Rfc2898DeriveBytes(sTheString, SALTSIZE, ITERATION_COUNT, bUseOldMethod);
|
||||||
baKey = pkcs5.GetBytes(16);
|
baKey = pkcs5.GetBytes(16);
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
CSSSLogger.ExpLog(e.ToString());
|
CSSSLogger.ExpLog(e.ToString());
|
||||||
CSSSLogger.DbgLog("Key generation failed");
|
CSSSLogger.DbgLog("Key generation failed");
|
||||||
baKey = null;
|
baKey = null;
|
||||||
}
|
}
|
||||||
return baKey;
|
return baKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static bool StoreKeySetUsingMasterPasscode(byte[] key,
|
internal static bool StoreKeySetUsingMasterPasscode(byte[] key,
|
||||||
byte[] IV, byte[] baMasterPasscode, string fileName)
|
byte[] IV, byte[] baMasterPasscode, string fileName)
|
||||||
{
|
{
|
||||||
bool bRet = false;
|
bool bRet = false;
|
||||||
FileStream fsEncrypt = null;
|
FileStream fsEncrypt = null;
|
||||||
CryptoStream csEncrypt = null;
|
CryptoStream csEncrypt = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
//Get an encryptor.
|
//Get an encryptor.
|
||||||
RijndaelManaged myRijndael = new RijndaelManaged();
|
RijndaelManaged myRijndael = new RijndaelManaged();
|
||||||
ICryptoTransform encryptor;
|
ICryptoTransform encryptor;
|
||||||
encryptor = myRijndael.CreateEncryptor(baMasterPasscode, GenerateAndSaveIV(fileName, myRijndael));
|
encryptor = myRijndael.CreateEncryptor(baMasterPasscode, GenerateAndSaveIV(fileName, myRijndael));
|
||||||
|
|
||||||
//Encrypt the data to a file
|
//Encrypt the data to a file
|
||||||
fsEncrypt = new FileStream(fileName, FileMode.Create);
|
fsEncrypt = new FileStream(fileName, FileMode.Create);
|
||||||
|
|
||||||
// make hidden
|
// make hidden
|
||||||
File.SetAttributes(fileName, FileAttributes.Hidden);
|
File.SetAttributes(fileName, FileAttributes.Hidden);
|
||||||
|
|
||||||
SHA256 sha = new SHA256Managed();
|
SHA256 sha = new SHA256Managed();
|
||||||
byte[] hash = sha.ComputeHash(key);
|
byte[] hash = sha.ComputeHash(key);
|
||||||
|
|
||||||
fsEncrypt.Write(hash,0,hash.Length);
|
fsEncrypt.Write(hash,0,hash.Length);
|
||||||
fsEncrypt.Flush();
|
fsEncrypt.Flush();
|
||||||
|
|
||||||
csEncrypt = new CryptoStream(fsEncrypt, encryptor, CryptoStreamMode.Write);
|
csEncrypt = new CryptoStream(fsEncrypt, encryptor, CryptoStreamMode.Write);
|
||||||
|
|
||||||
//Write all data to the crypto stream and flush it.
|
//Write all data to the crypto stream and flush it.
|
||||||
csEncrypt.Write(key, 0, key.Length);
|
csEncrypt.Write(key, 0, key.Length);
|
||||||
csEncrypt.FlushFinalBlock();
|
csEncrypt.FlushFinalBlock();
|
||||||
bRet = true;
|
bRet = true;
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
CSSSLogger.ExpLog(e.ToString());
|
CSSSLogger.ExpLog(e.ToString());
|
||||||
CSSSLogger.DbgLog("Unable to store the generated key");
|
CSSSLogger.DbgLog("Unable to store the generated key");
|
||||||
bRet = false;
|
bRet = false;
|
||||||
}
|
}
|
||||||
if (csEncrypt != null)
|
if (csEncrypt != null)
|
||||||
csEncrypt.Close();
|
csEncrypt.Close();
|
||||||
if( fsEncrypt != null )
|
if( fsEncrypt != null )
|
||||||
fsEncrypt.Close();
|
fsEncrypt.Close();
|
||||||
return bRet;
|
return bRet;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static byte[] GetKeySetFromFile(byte[] baMasterPasscode,
|
internal static byte[] GetKeySetFromFile(byte[] baMasterPasscode,
|
||||||
string fileName )
|
string fileName )
|
||||||
{
|
{
|
||||||
byte[] baSavedKey = null;
|
byte[] baSavedKey = null;
|
||||||
FileStream fsDecrypt = null;
|
FileStream fsDecrypt = null;
|
||||||
CryptoStream csDecrypt = null;
|
CryptoStream csDecrypt = null;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
#if LINUX
|
#if LINUX
|
||||||
UnixFileInfo fsTest = new UnixFileInfo (fileName);
|
UnixFileInfo fsTest = new UnixFileInfo (fileName);
|
||||||
if((fsTest == null) || !(fsTest.Exists) || fsTest.IsSymbolicLink)
|
if((fsTest == null) || !(fsTest.Exists) || fsTest.IsSymbolicLink)
|
||||||
#else
|
#else
|
||||||
if(!File.Exists(fileName))
|
if(!File.Exists(fileName))
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get a decryptor that uses the same key and IV
|
/* Get a decryptor that uses the same key and IV
|
||||||
* as the encryptor.
|
* as the encryptor.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
RijndaelManaged myRijndael = new RijndaelManaged();
|
RijndaelManaged myRijndael = new RijndaelManaged();
|
||||||
ICryptoTransform decryptor = myRijndael.CreateDecryptor(baMasterPasscode, RetrieveIV(fileName, baMasterPasscode));
|
ICryptoTransform decryptor = myRijndael.CreateDecryptor(baMasterPasscode, RetrieveIV(fileName, baMasterPasscode));
|
||||||
//Now decrypt
|
//Now decrypt
|
||||||
fsDecrypt = new FileStream(fileName, FileMode.Open);
|
fsDecrypt = new FileStream(fileName, FileMode.Open);
|
||||||
|
|
||||||
byte[] storedHash = new byte[32];
|
byte[] storedHash = new byte[32];
|
||||||
fsDecrypt.Read(storedHash,0,storedHash.Length);
|
fsDecrypt.Read(storedHash,0,storedHash.Length);
|
||||||
|
|
||||||
csDecrypt = new CryptoStream(fsDecrypt, decryptor, CryptoStreamMode.Read);
|
csDecrypt = new CryptoStream(fsDecrypt, decryptor, CryptoStreamMode.Read);
|
||||||
baSavedKey = new byte[32];
|
baSavedKey = new byte[32];
|
||||||
|
|
||||||
//Read the data out of the crypto stream.
|
//Read the data out of the crypto stream.
|
||||||
csDecrypt.Read(baSavedKey, 0, baSavedKey.Length);
|
csDecrypt.Read(baSavedKey, 0, baSavedKey.Length);
|
||||||
|
|
||||||
SHA256 sha = new SHA256Managed();
|
SHA256 sha = new SHA256Managed();
|
||||||
byte[] newHash = sha.ComputeHash(baSavedKey);
|
byte[] newHash = sha.ComputeHash(baSavedKey);
|
||||||
for( int i = 0 ; i < 32; i++ )
|
for( int i = 0 ; i < 32; i++ )
|
||||||
{
|
{
|
||||||
if(storedHash[i] != newHash[i])
|
if(storedHash[i] != newHash[i])
|
||||||
{
|
{
|
||||||
CSSSLogger.DbgLog("Hash doesnot match");
|
CSSSLogger.DbgLog("Hash doesnot match");
|
||||||
csDecrypt.Close();
|
csDecrypt.Close();
|
||||||
fsDecrypt.Close();
|
fsDecrypt.Close();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
CSSSLogger.ExpLog(e.ToString());
|
CSSSLogger.ExpLog(e.ToString());
|
||||||
CSSSLogger.DbgLog("Unable to get the stored key");
|
CSSSLogger.DbgLog("Unable to get the stored key");
|
||||||
baSavedKey = null;
|
baSavedKey = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (csDecrypt != null)
|
if (csDecrypt != null)
|
||||||
csDecrypt.Close();
|
csDecrypt.Close();
|
||||||
|
|
||||||
if ( fsDecrypt != null )
|
if ( fsDecrypt != null )
|
||||||
fsDecrypt.Close();
|
fsDecrypt.Close();
|
||||||
|
|
||||||
|
|
||||||
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)
|
||||||
|
@ -237,89 +237,9 @@ namespace sscs.lss
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
xpath = "//" + XmlConsts.miCASANode;
|
|
||||||
XmlNode miCASANode = doc.SelectSingleNode(xpath);
|
|
||||||
if(miCASANode != null)
|
|
||||||
{
|
|
||||||
xpath = "descendant::" + XmlConsts.keyChainNode;
|
|
||||||
XmlNodeList keyChainNodeList = miCASANode.SelectNodes(xpath);
|
|
||||||
foreach(XmlNode node in keyChainNodeList)
|
|
||||||
{
|
|
||||||
XmlAttributeCollection attrColl = node.Attributes;
|
|
||||||
string keyChainId = (attrColl[XmlConsts.idAttr]).Value + "\0";
|
|
||||||
KeyChain keyChain = null;
|
|
||||||
|
|
||||||
if( userStore.CheckIfKeyChainExists(keyChainId) == false )
|
// add these to the store
|
||||||
{
|
AddXMLSecretsToStore(doc);
|
||||||
keyChain = new KeyChain(keyChainId);
|
|
||||||
userStore.AddKeyChain(keyChain);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
keyChain = userStore.GetKeyChain(keyChainId);
|
|
||||||
}
|
|
||||||
xpath = "descendant::" + XmlConsts.secretNode;
|
|
||||||
XmlNodeList secretNodeList = node.SelectNodes(xpath);
|
|
||||||
foreach(XmlNode secretNode in secretNodeList)
|
|
||||||
{
|
|
||||||
attrColl = secretNode.Attributes;
|
|
||||||
string secretId = (attrColl[XmlConsts.idAttr]).Value + "\0";
|
|
||||||
xpath = "descendant::" + XmlConsts.valueNode;
|
|
||||||
Secret secret = new Secret(secretId);
|
|
||||||
if( keyChain.CheckIfSecretExists(secretId) == false)
|
|
||||||
{
|
|
||||||
keyChain.AddSecret(secret);
|
|
||||||
XmlNode secretValNode = (secretNode.SelectSingleNode(xpath));
|
|
||||||
xpath = "descendant::" + XmlConsts.keyNode;
|
|
||||||
|
|
||||||
XmlNodeList keyNodeList = secretValNode.SelectNodes(xpath);
|
|
||||||
|
|
||||||
secret = keyChain.GetSecret(secretId);
|
|
||||||
foreach(XmlNode keyNode in keyNodeList)
|
|
||||||
{
|
|
||||||
attrColl = keyNode.Attributes;
|
|
||||||
string key;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
key = (attrColl[XmlConsts.idAttr]).Value;
|
|
||||||
}
|
|
||||||
catch (Exception)
|
|
||||||
{
|
|
||||||
// LinkedKey node, continue
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
xpath = "descendant::" + XmlConsts.keyValueNode;
|
|
||||||
XmlNode keyValNode = keyNode.SelectSingleNode(xpath);
|
|
||||||
string keyValue = keyValNode.InnerText;
|
|
||||||
secret.SetKeyValue(key,keyValue);
|
|
||||||
|
|
||||||
|
|
||||||
// add linked keys
|
|
||||||
xpath = "descendant::" + XmlConsts.linkedKeyNode;
|
|
||||||
XmlNodeList linkNodeList = keyNode.SelectNodes(xpath);
|
|
||||||
foreach(XmlNode linkNode in linkNodeList)
|
|
||||||
{
|
|
||||||
// get TargetSecretID
|
|
||||||
xpath = "descendant::" + XmlConsts.linkedTargetSecretNode;
|
|
||||||
XmlNode targetSecretNode = linkNode.SelectSingleNode(xpath);
|
|
||||||
string sSecretID = targetSecretNode.InnerText + "\0";
|
|
||||||
|
|
||||||
// get TargetSecretKey
|
|
||||||
xpath = "descendant::" + XmlConsts.linkedTargetKeyNode;
|
|
||||||
XmlNode targetKeyNode = linkNode.SelectSingleNode(xpath);
|
|
||||||
string sKeyID = targetKeyNode.InnerText;
|
|
||||||
|
|
||||||
LinkedKeyInfo lki = new LinkedKeyInfo(sSecretID, sKeyID, true);
|
|
||||||
KeyValue kv = secret.GetKeyValue(key);
|
|
||||||
kv.AddLink(lki);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}//if ends
|
|
||||||
}
|
|
||||||
|
|
||||||
}//end of traversing keyChainNodeList
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
@ -332,6 +252,94 @@ namespace sscs.lss
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal void AddXMLSecretsToStore(XmlDocument doc)
|
||||||
|
{
|
||||||
|
string xpath = "";
|
||||||
|
xpath = "//" + XmlConsts.miCASANode;
|
||||||
|
XmlNode miCASANode = doc.SelectSingleNode(xpath);
|
||||||
|
if(miCASANode != null)
|
||||||
|
{
|
||||||
|
xpath = "descendant::" + XmlConsts.keyChainNode;
|
||||||
|
XmlNodeList keyChainNodeList = miCASANode.SelectNodes(xpath);
|
||||||
|
foreach(XmlNode node in keyChainNodeList)
|
||||||
|
{
|
||||||
|
XmlAttributeCollection attrColl = node.Attributes;
|
||||||
|
string keyChainId = (attrColl[XmlConsts.idAttr]).Value + "\0";
|
||||||
|
KeyChain keyChain = null;
|
||||||
|
|
||||||
|
if( userStore.CheckIfKeyChainExists(keyChainId) == false )
|
||||||
|
{
|
||||||
|
keyChain = new KeyChain(keyChainId);
|
||||||
|
userStore.AddKeyChain(keyChain);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
keyChain = userStore.GetKeyChain(keyChainId);
|
||||||
|
}
|
||||||
|
xpath = "descendant::" + XmlConsts.secretNode;
|
||||||
|
XmlNodeList secretNodeList = node.SelectNodes(xpath);
|
||||||
|
foreach(XmlNode secretNode in secretNodeList)
|
||||||
|
{
|
||||||
|
attrColl = secretNode.Attributes;
|
||||||
|
string secretId = (attrColl[XmlConsts.idAttr]).Value + "\0";
|
||||||
|
xpath = "descendant::" + XmlConsts.valueNode;
|
||||||
|
Secret secret = new Secret(secretId);
|
||||||
|
if( keyChain.CheckIfSecretExists(secretId) == false)
|
||||||
|
{
|
||||||
|
keyChain.AddSecret(secret);
|
||||||
|
XmlNode secretValNode = (secretNode.SelectSingleNode(xpath));
|
||||||
|
xpath = "descendant::" + XmlConsts.keyNode;
|
||||||
|
|
||||||
|
XmlNodeList keyNodeList = secretValNode.SelectNodes(xpath);
|
||||||
|
|
||||||
|
secret = keyChain.GetSecret(secretId);
|
||||||
|
foreach(XmlNode keyNode in keyNodeList)
|
||||||
|
{
|
||||||
|
attrColl = keyNode.Attributes;
|
||||||
|
string key;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
key = (attrColl[XmlConsts.idAttr]).Value;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
// LinkedKey node, continue
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
xpath = "descendant::" + XmlConsts.keyValueNode;
|
||||||
|
XmlNode keyValNode = keyNode.SelectSingleNode(xpath);
|
||||||
|
string keyValue = keyValNode.InnerText;
|
||||||
|
secret.SetKeyValue(key,keyValue);
|
||||||
|
|
||||||
|
|
||||||
|
// add linked keys
|
||||||
|
xpath = "descendant::" + XmlConsts.linkedKeyNode;
|
||||||
|
XmlNodeList linkNodeList = keyNode.SelectNodes(xpath);
|
||||||
|
foreach(XmlNode linkNode in linkNodeList)
|
||||||
|
{
|
||||||
|
// get TargetSecretID
|
||||||
|
xpath = "descendant::" + XmlConsts.linkedTargetSecretNode;
|
||||||
|
XmlNode targetSecretNode = linkNode.SelectSingleNode(xpath);
|
||||||
|
string sSecretID = targetSecretNode.InnerText + "\0";
|
||||||
|
|
||||||
|
// get TargetSecretKey
|
||||||
|
xpath = "descendant::" + XmlConsts.linkedTargetKeyNode;
|
||||||
|
XmlNode targetKeyNode = linkNode.SelectSingleNode(xpath);
|
||||||
|
string sKeyID = targetKeyNode.InnerText;
|
||||||
|
|
||||||
|
LinkedKeyInfo lki = new LinkedKeyInfo(sSecretID, sKeyID, true);
|
||||||
|
KeyValue kv = secret.GetKeyValue(key);
|
||||||
|
kv.AddLink(lki);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}//if ends
|
||||||
|
}
|
||||||
|
|
||||||
|
}//end of traversing keyChainNodeList
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void PersistStoreDelayThreadFn()
|
private void PersistStoreDelayThreadFn()
|
||||||
{
|
{
|
||||||
Thread.Sleep(15000);
|
Thread.Sleep(15000);
|
||||||
|
@ -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
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -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"
|
||||||
|
Loading…
Reference in New Issue
Block a user