Bug 193933. Fix Desktop capture problem.
This commit is contained in:
parent
65b1bbbfc4
commit
8f19a3798b
5
CASA/micasad/cache/SecretStore.cs
vendored
5
CASA/micasad/cache/SecretStore.cs
vendored
@ -88,9 +88,14 @@ namespace sscs.cache
|
|||||||
|
|
||||||
// start a MPFileWatcher if necessary
|
// start a MPFileWatcher if necessary
|
||||||
if (mpWatcher == null)
|
if (mpWatcher == null)
|
||||||
|
{
|
||||||
|
// make sure HomeDirectory exists
|
||||||
|
String sHomeDir = GetUserHomeDirectory();
|
||||||
|
if (sHomeDir != null && sHomeDir.Length > 0)
|
||||||
{
|
{
|
||||||
mpWatcher = new MPFileWatcher(GetUserHomeDirectory(), ConstStrings.MICASA_PASSCODE_BY_MASTERPASSWD_FILE);
|
mpWatcher = new MPFileWatcher(GetUserHomeDirectory(), ConstStrings.MICASA_PASSCODE_BY_MASTERPASSWD_FILE);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,6 +71,7 @@ namespace sscs.init
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
System.Diagnostics.Trace.WriteLine("Running: " + sProcess + " " + sArgs);
|
||||||
Process myProcess = new Process();
|
Process myProcess = new Process();
|
||||||
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(sProcess);
|
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(sProcess);
|
||||||
|
|
||||||
|
@ -227,7 +227,7 @@ namespace sscs.lss
|
|||||||
doc.LoadXml(xmlToLoad);
|
doc.LoadXml(xmlToLoad);
|
||||||
|
|
||||||
#if false
|
#if false
|
||||||
XmlTextWriter writer = new XmlTextWriter("/home/poorna/.miCASA.xml",null);
|
XmlTextWriter writer = new XmlTextWriter("d:/persist.xml",null);
|
||||||
writer.Formatting = Formatting.Indented;
|
writer.Formatting = Formatting.Indented;
|
||||||
doc.Save(writer);
|
doc.Save(writer);
|
||||||
writer.Close();
|
writer.Close();
|
||||||
@ -354,123 +354,10 @@ namespace sscs.lss
|
|||||||
|
|
||||||
internal void PersistStore()
|
internal void PersistStore()
|
||||||
{
|
{
|
||||||
// userStore.DumpSecretstore();
|
//userStore.DumpSecretstore();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
MemoryStream ms1 = GetSecretsAsXMLStream();
|
||||||
MemoryStream ms1 = new MemoryStream();
|
|
||||||
XmlTextWriter writer = new XmlTextWriter(ms1,null);
|
|
||||||
writer.Formatting = Formatting.Indented;
|
|
||||||
|
|
||||||
writer.WriteStartDocument();
|
|
||||||
writer.WriteStartElement(XmlConsts.miCASANode);
|
|
||||||
writer.WriteAttributeString(XmlConsts.versionAttr,"1.5");
|
|
||||||
|
|
||||||
{
|
|
||||||
IDictionaryEnumerator iter = (IDictionaryEnumerator)userStore.GetKeyChainEnumerator();
|
|
||||||
char [] tmpId;
|
|
||||||
string sTmpId;
|
|
||||||
while( iter.MoveNext() )
|
|
||||||
{
|
|
||||||
KeyChain kc = (KeyChain)iter.Value;
|
|
||||||
writer.WriteStartElement(XmlConsts.keyChainNode);
|
|
||||||
string kcId = kc.GetKey();
|
|
||||||
tmpId = new char[kcId.Length-1];
|
|
||||||
for(int i = 0; i < kcId.Length-1; i++ )
|
|
||||||
tmpId[i] = kcId[i];
|
|
||||||
sTmpId = new string(tmpId);
|
|
||||||
|
|
||||||
writer.WriteAttributeString(XmlConsts.idAttr,sTmpId);
|
|
||||||
/* If we need to store time
|
|
||||||
writer.WriteStartElement(XmlConsts.timeNode);
|
|
||||||
writer.WriteAttributeString(XmlConsts.createdTimeNode,kc.CreatedTime.ToString());
|
|
||||||
writer.WriteAttributeString(XmlConsts.modifiedTimeNode,kc.ModifiedTime.ToString());
|
|
||||||
writer.WriteEndElement();
|
|
||||||
*/
|
|
||||||
|
|
||||||
IDictionaryEnumerator secIter = (IDictionaryEnumerator)(kc.GetAllSecrets());
|
|
||||||
while(secIter.MoveNext())
|
|
||||||
{
|
|
||||||
Secret secret = (Secret)secIter.Value;
|
|
||||||
writer.WriteStartElement(XmlConsts.secretNode);
|
|
||||||
string secretId = secret.GetKey();
|
|
||||||
tmpId = new char[secretId.Length-1];
|
|
||||||
for(int i = 0; i < secretId.Length-1; i++ )
|
|
||||||
tmpId[i] = secretId[i];
|
|
||||||
sTmpId = new string(tmpId);
|
|
||||||
|
|
||||||
writer.WriteAttributeString(XmlConsts.idAttr,sTmpId);
|
|
||||||
/* If we need to store time
|
|
||||||
writer.WriteStartElement(XmlConsts.timeNode);
|
|
||||||
writer.WriteAttributeString(XmlConsts.createdTimeNode,secret.CreatedTime.ToString());
|
|
||||||
writer.WriteAttributeString(XmlConsts.modifiedTimeNode,secret.ModifiedTime.ToString());
|
|
||||||
writer.WriteEndElement();
|
|
||||||
*/
|
|
||||||
|
|
||||||
writer.WriteStartElement(XmlConsts.valueNode);
|
|
||||||
// byte[] byteArr = secret.GetValue();
|
|
||||||
|
|
||||||
IDictionaryEnumerator etor = (IDictionaryEnumerator)secret.GetKeyValueEnumerator();
|
|
||||||
while(etor.MoveNext())
|
|
||||||
{
|
|
||||||
string sKey = (string)etor.Key;
|
|
||||||
string value = secret.GetKeyValue(sKey).GetValue();
|
|
||||||
writer.WriteStartElement(XmlConsts.keyNode);
|
|
||||||
writer.WriteAttributeString(XmlConsts.idAttr, sKey);
|
|
||||||
writer.WriteStartElement(XmlConsts.keyValueNode);
|
|
||||||
writer.WriteString(value);
|
|
||||||
writer.WriteEndElement();
|
|
||||||
/* If we need to store time
|
|
||||||
writer.WriteStartElement(XmlConsts.timeNode);
|
|
||||||
writer.WriteAttributeString(XmlConsts.createdTimeNode,(secret.GetKeyValueCreatedTime(sKey)).ToString());
|
|
||||||
writer.WriteAttributeString(XmlConsts.modifiedTimeNode,(secret.GetKeyValueModifiedTime(sKey)).ToString());
|
|
||||||
writer.WriteEndElement();
|
|
||||||
*/
|
|
||||||
// write all LinkKeys
|
|
||||||
Hashtable htLinkedKeys = secret.GetLinkedKeys(sKey);
|
|
||||||
if (htLinkedKeys != null)
|
|
||||||
{
|
|
||||||
IDictionaryEnumerator etorLinked = (IDictionaryEnumerator)htLinkedKeys.GetEnumerator();
|
|
||||||
while(etorLinked.MoveNext())
|
|
||||||
{
|
|
||||||
LinkedKeyInfo lki = (LinkedKeyInfo)etorLinked.Value;
|
|
||||||
writer.WriteStartElement(XmlConsts.linkedKeyNode);
|
|
||||||
|
|
||||||
writer.WriteStartElement(XmlConsts.linkedTargetSecretNode);
|
|
||||||
writer.WriteString(lki.GetLinkedSecretID().Substring(0, lki.GetLinkedSecretID().Length-1));
|
|
||||||
writer.WriteEndElement();
|
|
||||||
|
|
||||||
writer.WriteStartElement(XmlConsts.linkedTargetKeyNode);
|
|
||||||
writer.WriteString(lki.GetLinkedKeyID());
|
|
||||||
writer.WriteEndElement();
|
|
||||||
|
|
||||||
writer.WriteEndElement();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
writer.WriteEndElement();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
char[] chArr = new char[byteArr.Length];
|
|
||||||
for(int z = 0; z < byteArr.Length; z++)
|
|
||||||
chArr[z] = (char)byteArr[z];
|
|
||||||
|
|
||||||
string stringToStore = new string(chArr);
|
|
||||||
writer.WriteString(stringToStore);
|
|
||||||
*/
|
|
||||||
|
|
||||||
writer.WriteEndElement(); //end of value node
|
|
||||||
writer.WriteEndElement();
|
|
||||||
}
|
|
||||||
writer.WriteEndElement(); //keychain
|
|
||||||
}
|
|
||||||
}
|
|
||||||
writer.WriteEndElement(); //miCASA node
|
|
||||||
writer.WriteEndDocument();
|
|
||||||
writer.Flush();
|
|
||||||
writer.Close();
|
|
||||||
|
|
||||||
//byte[] key = CASACrypto.GetKeySetFromFile(CASACrypto.GetMasterPasscode(userStore.GetDesktopPasswd(),userStore.GetPasscodeByDesktopFilePath()),userStore.GetKeyFilePath());
|
//byte[] key = CASACrypto.GetKeySetFromFile(CASACrypto.GetMasterPasscode(userStore.GetDesktopPasswd(),userStore.GetPasscodeByDesktopFilePath()),userStore.GetKeyFilePath());
|
||||||
byte[] key = CASACrypto.GetKeySetFromFile(m_baGeneratedKey, userStore.GetKeyFilePath());
|
byte[] key = CASACrypto.GetKeySetFromFile(m_baGeneratedKey, userStore.GetKeyFilePath());
|
||||||
|
|
||||||
@ -516,5 +403,128 @@ namespace sscs.lss
|
|||||||
CSSSLogger.ExpLog(e.ToString());
|
CSSSLogger.ExpLog(e.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal MemoryStream GetSecretsAsXMLStream()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
MemoryStream ms1 = new MemoryStream();
|
||||||
|
XmlTextWriter writer = new XmlTextWriter(ms1,null);
|
||||||
|
writer.Formatting = Formatting.Indented;
|
||||||
|
|
||||||
|
writer.WriteStartDocument();
|
||||||
|
writer.WriteStartElement(XmlConsts.miCASANode);
|
||||||
|
writer.WriteAttributeString(XmlConsts.versionAttr,"1.5");
|
||||||
|
|
||||||
|
IDictionaryEnumerator iter = (IDictionaryEnumerator)userStore.GetKeyChainEnumerator();
|
||||||
|
char [] tmpId;
|
||||||
|
string sTmpId;
|
||||||
|
while( iter.MoveNext() )
|
||||||
|
{
|
||||||
|
KeyChain kc = (KeyChain)iter.Value;
|
||||||
|
writer.WriteStartElement(XmlConsts.keyChainNode);
|
||||||
|
string kcId = kc.GetKey();
|
||||||
|
tmpId = new char[kcId.Length-1];
|
||||||
|
for(int i = 0; i < kcId.Length-1; i++ )
|
||||||
|
tmpId[i] = kcId[i];
|
||||||
|
sTmpId = new string(tmpId);
|
||||||
|
|
||||||
|
writer.WriteAttributeString(XmlConsts.idAttr,sTmpId);
|
||||||
|
/* If we need to store time
|
||||||
|
writer.WriteStartElement(XmlConsts.timeNode);
|
||||||
|
writer.WriteAttributeString(XmlConsts.createdTimeNode,kc.CreatedTime.ToString());
|
||||||
|
writer.WriteAttributeString(XmlConsts.modifiedTimeNode,kc.ModifiedTime.ToString());
|
||||||
|
writer.WriteEndElement();
|
||||||
|
*/
|
||||||
|
|
||||||
|
IDictionaryEnumerator secIter = (IDictionaryEnumerator)(kc.GetAllSecrets());
|
||||||
|
while(secIter.MoveNext())
|
||||||
|
{
|
||||||
|
Secret secret = (Secret)secIter.Value;
|
||||||
|
writer.WriteStartElement(XmlConsts.secretNode);
|
||||||
|
string secretId = secret.GetKey();
|
||||||
|
tmpId = new char[secretId.Length-1];
|
||||||
|
for(int i = 0; i < secretId.Length-1; i++ )
|
||||||
|
tmpId[i] = secretId[i];
|
||||||
|
sTmpId = new string(tmpId);
|
||||||
|
|
||||||
|
writer.WriteAttributeString(XmlConsts.idAttr,sTmpId);
|
||||||
|
/* If we need to store time
|
||||||
|
writer.WriteStartElement(XmlConsts.timeNode);
|
||||||
|
writer.WriteAttributeString(XmlConsts.createdTimeNode,secret.CreatedTime.ToString());
|
||||||
|
writer.WriteAttributeString(XmlConsts.modifiedTimeNode,secret.ModifiedTime.ToString());
|
||||||
|
writer.WriteEndElement();
|
||||||
|
*/
|
||||||
|
|
||||||
|
writer.WriteStartElement(XmlConsts.valueNode);
|
||||||
|
// byte[] byteArr = secret.GetValue();
|
||||||
|
|
||||||
|
IDictionaryEnumerator etor = (IDictionaryEnumerator)secret.GetKeyValueEnumerator();
|
||||||
|
while(etor.MoveNext())
|
||||||
|
{
|
||||||
|
string sKey = (string)etor.Key;
|
||||||
|
string value = secret.GetKeyValue(sKey).GetValue();
|
||||||
|
writer.WriteStartElement(XmlConsts.keyNode);
|
||||||
|
writer.WriteAttributeString(XmlConsts.idAttr, sKey);
|
||||||
|
writer.WriteStartElement(XmlConsts.keyValueNode);
|
||||||
|
writer.WriteString(value);
|
||||||
|
writer.WriteEndElement();
|
||||||
|
/* If we need to store time
|
||||||
|
writer.WriteStartElement(XmlConsts.timeNode);
|
||||||
|
writer.WriteAttributeString(XmlConsts.createdTimeNode,(secret.GetKeyValueCreatedTime(sKey)).ToString());
|
||||||
|
writer.WriteAttributeString(XmlConsts.modifiedTimeNode,(secret.GetKeyValueModifiedTime(sKey)).ToString());
|
||||||
|
writer.WriteEndElement();
|
||||||
|
*/
|
||||||
|
// write all LinkKeys
|
||||||
|
Hashtable htLinkedKeys = secret.GetLinkedKeys(sKey);
|
||||||
|
if (htLinkedKeys != null)
|
||||||
|
{
|
||||||
|
IDictionaryEnumerator etorLinked = (IDictionaryEnumerator)htLinkedKeys.GetEnumerator();
|
||||||
|
while(etorLinked.MoveNext())
|
||||||
|
{
|
||||||
|
LinkedKeyInfo lki = (LinkedKeyInfo)etorLinked.Value;
|
||||||
|
writer.WriteStartElement(XmlConsts.linkedKeyNode);
|
||||||
|
|
||||||
|
writer.WriteStartElement(XmlConsts.linkedTargetSecretNode);
|
||||||
|
writer.WriteString(lki.GetLinkedSecretID().Substring(0, lki.GetLinkedSecretID().Length-1));
|
||||||
|
writer.WriteEndElement();
|
||||||
|
|
||||||
|
writer.WriteStartElement(XmlConsts.linkedTargetKeyNode);
|
||||||
|
writer.WriteString(lki.GetLinkedKeyID());
|
||||||
|
writer.WriteEndElement();
|
||||||
|
|
||||||
|
writer.WriteEndElement();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
writer.WriteEndElement();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
char[] chArr = new char[byteArr.Length];
|
||||||
|
for(int z = 0; z < byteArr.Length; z++)
|
||||||
|
chArr[z] = (char)byteArr[z];
|
||||||
|
|
||||||
|
string stringToStore = new string(chArr);
|
||||||
|
writer.WriteString(stringToStore);
|
||||||
|
*/
|
||||||
|
|
||||||
|
writer.WriteEndElement(); //end of value node
|
||||||
|
writer.WriteEndElement();
|
||||||
|
}
|
||||||
|
writer.WriteEndElement(); //keychain
|
||||||
|
}
|
||||||
|
|
||||||
|
writer.WriteEndElement(); //miCASA node
|
||||||
|
writer.WriteEndDocument();
|
||||||
|
writer.Flush();
|
||||||
|
writer.Close();
|
||||||
|
return ms1;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user