diff --git a/CASA/micasad/common/CSSSUtils.cs b/CASA/micasad/common/CSSSUtils.cs
index 15db2707..8ac0e8d8 100644
--- a/CASA/micasad/common/CSSSUtils.cs
+++ b/CASA/micasad/common/CSSSUtils.cs
@@ -35,38 +35,38 @@ using sscs.constants;
namespace sscs.common
{
class CSSSUtils
- {
-
-#if W32
- private static bool IsRegKeySet(string sPath, string sValue)
- {
- Microsoft.Win32.RegistryKey key;
-
- try
- {
- key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(sPath);
- int iValue = (int)key.GetValue(sValue);
- key.Close();
- if (iValue > 0)
- {
- return true;
- }
- }
- catch (Exception e)
- {
-
- }
- return false;
- }
-#endif
-
- public static bool StoreDesktopPasswordInCache()
- {
+ {
+
+#if W32
+ private static bool IsRegKeySet(string sPath, string sValue)
+ {
+ Microsoft.Win32.RegistryKey key;
+
+ try
+ {
+ key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(sPath);
+ int iValue = (int)key.GetValue(sValue);
+ key.Close();
+ if (iValue > 0)
+ {
+ return true;
+ }
+ }
+ catch (Exception e)
+ {
+
+ }
+ return false;
+ }
+#endif
+
+ public static bool StoreDesktopPasswordInCache()
+ {
#if LINUX
return true;
-#else
- return IsRegKeySet("SOFTWARE\\Novell\\CASA", "CacheDesktopPassword");
-#endif
+#else
+ return IsRegKeySet("SOFTWARE\\Novell\\CASA", "CacheDesktopPassword");
+#endif
}
public static bool IsFileOwnedByRoot(string filePath)
diff --git a/CASA/micasad/verbs/AddKeyChain.cs b/CASA/micasad/verbs/AddKeyChain.cs
index de616433..14743f6d 100644
--- a/CASA/micasad/verbs/AddKeyChain.cs
+++ b/CASA/micasad/verbs/AddKeyChain.cs
@@ -20,132 +20,132 @@
*
***********************************************************************/
-using System;
-using System.Collections;
-using System.Text;
-using System.Threading;
-using sscs.verbs;
-using sscs.common;
-using sscs.cache;
-using sscs.constants;
-
-namespace sscs.verbs
-{
-
- /*
- * This class is implementation of AddKeyChain call.
- * There will be one instance existing for every call made by the client.
- */
-
- internal class AddKeyChain : SSVerb
- {
-
- private ushort msgId = 0;
- private uint inMsgLen = 0;
- private uint keyChainFlags = 0;
- private uint keyChainIdLen = 0;
- private string keyChainId;
- private uint outMsgLen = 0;
- private byte[] inBuf;
- private byte[] outBuf;
- private int retCode = 0;
-
- /*
- * This method sets the class member with the byte array received.
- */
-
- public void SetMessageContent(byte[] ipcBytes)
- {
- CSSSLogger.ExecutionTrace(this);
- inBuf = ipcBytes;
- }
-
- /*
- * This method does the actual implementation of AddKeyChain
- */
-
- public byte[] ProcessRequest(UserIdentifier userId)
- {
-
- /* If an exception occurs in message format decoding,
- * it is handled by AppHandler
- */
- CSSSLogger.ExecutionTrace(this);
-
- // Message Format decipher - Start
- msgId = BitConverter.ToUInt16(inBuf,0);
- inMsgLen = BitConverter.ToUInt32(inBuf,2);
- if( inMsgLen != inBuf.Length )
- throw new FormatException(" MsgLen sent does not match the length of the message received.");
-
- keyChainFlags = BitConverter.ToUInt32(inBuf,6);
- keyChainIdLen = BitConverter.ToUInt32(inBuf,10);
- byte[] tempArr = new byte[keyChainIdLen];
- Array.Copy(inBuf,14,tempArr,0,keyChainIdLen);
- keyChainId = Encoding.UTF8.GetString(tempArr);
- // Message Format decipher - End
-
- try
- {
- SecretStore ssStore = null;
- KeyChain keyChain = null;
- keyChain = new KeyChain(keyChainId);
-
- ssStore = SessionManager.GetUserSecretStore(userId);
- if( ssStore.CheckIfKeyChainExists(keyChainId) == false )
- {
- ssStore.AddKeyChain(keyChain);
- }
- else
- {
- CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Keychain already present for keychain id " +keyChainId );
- retCode = IPCRetCodes.SSCS_E_KEYCHAIN_ALREADY_EXISTS;
- }
- }
- catch(UserNotInSessionException)
- {
- CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable to get user's secretstore" );
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
-
- try
- {
- msgId = 5;
- outMsgLen = 10;
- outBuf = new byte[10];
- byte[] t = new byte[10];
-
- t = BitConverter.GetBytes((ushort)msgId);
- Array.Copy(t,0,outBuf,0,2);
-
- t = BitConverter.GetBytes((uint)outMsgLen);
- Array.Copy(t,0,outBuf,2,4);
-
- t = BitConverter.GetBytes(retCode);
- Array.Copy(t,0,outBuf,6,4);
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- throw new FormatException("Unable to form the response " + e.ToString());
- }
- return outBuf;
-
- }
-
- /*
- * Gives the name of operation performed. Will be used in case
- * of error.
- */
- public string GetVerbName()
- {
- CSSSLogger.ExecutionTrace(this);
- return (this.ToString());
- }
- }
-}
+using System;
+using System.Collections;
+using System.Text;
+using System.Threading;
+using sscs.verbs;
+using sscs.common;
+using sscs.cache;
+using sscs.constants;
+
+namespace sscs.verbs
+{
+
+ /*
+ * This class is implementation of AddKeyChain call.
+ * There will be one instance existing for every call made by the client.
+ */
+
+ internal class AddKeyChain : SSVerb
+ {
+
+ private ushort msgId = 0;
+ private uint inMsgLen = 0;
+ private uint keyChainFlags = 0;
+ private uint keyChainIdLen = 0;
+ private string keyChainId;
+ private uint outMsgLen = 0;
+ private byte[] inBuf;
+ private byte[] outBuf;
+ private int retCode = 0;
+
+ /*
+ * This method sets the class member with the byte array received.
+ */
+
+ public void SetMessageContent(byte[] ipcBytes)
+ {
+ CSSSLogger.ExecutionTrace(this);
+ inBuf = ipcBytes;
+ }
+
+ /*
+ * This method does the actual implementation of AddKeyChain
+ */
+
+ public byte[] ProcessRequest(UserIdentifier userId)
+ {
+
+ /* If an exception occurs in message format decoding,
+ * it is handled by AppHandler
+ */
+ CSSSLogger.ExecutionTrace(this);
+
+ // Message Format decipher - Start
+ msgId = BitConverter.ToUInt16(inBuf,0);
+ inMsgLen = BitConverter.ToUInt32(inBuf,2);
+ if( inMsgLen != inBuf.Length )
+ throw new FormatException(" MsgLen sent does not match the length of the message received.");
+
+ keyChainFlags = BitConverter.ToUInt32(inBuf,6);
+ keyChainIdLen = BitConverter.ToUInt32(inBuf,10);
+ byte[] tempArr = new byte[keyChainIdLen];
+ Array.Copy(inBuf,14,tempArr,0,keyChainIdLen);
+ keyChainId = Encoding.UTF8.GetString(tempArr);
+ // Message Format decipher - End
+
+ try
+ {
+ SecretStore ssStore = null;
+ KeyChain keyChain = null;
+ keyChain = new KeyChain(keyChainId);
+
+ ssStore = SessionManager.GetUserSecretStore(userId);
+ if( ssStore.CheckIfKeyChainExists(keyChainId) == false )
+ {
+ ssStore.AddKeyChain(keyChain);
+ }
+ else
+ {
+ CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Keychain already present for keychain id " +keyChainId );
+ retCode = IPCRetCodes.SSCS_E_KEYCHAIN_ALREADY_EXISTS;
+ }
+ }
+ catch(UserNotInSessionException)
+ {
+ CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable to get user's secretstore" );
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+
+ try
+ {
+ msgId = 5;
+ outMsgLen = 10;
+ outBuf = new byte[10];
+ byte[] t = new byte[10];
+
+ t = BitConverter.GetBytes((ushort)msgId);
+ Array.Copy(t,0,outBuf,0,2);
+
+ t = BitConverter.GetBytes((uint)outMsgLen);
+ Array.Copy(t,0,outBuf,2,4);
+
+ t = BitConverter.GetBytes(retCode);
+ Array.Copy(t,0,outBuf,6,4);
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ throw new FormatException("Unable to form the response " + e.ToString());
+ }
+ return outBuf;
+
+ }
+
+ /*
+ * Gives the name of operation performed. Will be used in case
+ * of error.
+ */
+ public string GetVerbName()
+ {
+ CSSSLogger.ExecutionTrace(this);
+ return (this.ToString());
+ }
+ }
+}
diff --git a/CASA/micasad/verbs/CloseSecretStore.cs b/CASA/micasad/verbs/CloseSecretStore.cs
index 71f104ac..9b48840d 100644
--- a/CASA/micasad/verbs/CloseSecretStore.cs
+++ b/CASA/micasad/verbs/CloseSecretStore.cs
@@ -20,120 +20,120 @@
*
***********************************************************************/
-using System;
-using System.Collections;
-using System.Text;
-using System.Threading;
-using sscs.verbs;
-using sscs.common;
-using sscs.cache;
-using sscs.constants;
-
-namespace sscs.verbs
-{
-
- /*
- * This class is implementation of CloseSecretStore call.
- * There will be one instance existing for every call made by the client.
- */
-
- internal class CloseSecretStore : SSVerb
- {
- private ushort msgId = 0;
- private uint inMsgLen = 0;
- private uint outMsgLen = 0;
- private byte[] inBuf;
-
- private byte[] outBuf;
- private int retCode = 0;
-
- /*
- * This method sets the class member with the byte array received.
- */
-
- public void SetMessageContent(byte[] ipcBytes)
- {
- CSSSLogger.ExecutionTrace(this);
- inBuf = ipcBytes;
- }
-
- /*
- * This method does the actual implementation of CloseSecretStore
- *
- */
-
- public byte[] ProcessRequest(UserIdentifier userId)
- {
- /* If an exception occurs in message format decoding,
- * it is handled by AppHandler
- */
-
- CSSSLogger.ExecutionTrace(this);
- // Message Format decipher - Start
-
- msgId = BitConverter.ToUInt16(inBuf,0);
- inMsgLen = BitConverter.ToUInt32(inBuf,2);
- if( inMsgLen != inBuf.Length )
- throw new FormatException(" MsgLen sent does not match the length of the message received.");
-
- uint ssFlags = BitConverter.ToUInt32(inBuf,6);
- // Message Format decipher - End
-
- try
- {
- if ((ssFlags & ConstFlags.SSFLAGS_DESTROY_SESSION_F) == ConstFlags.SSFLAGS_DESTROY_SESSION_F)
- {
-#if W32
- SessionManager.RemoveUserSession(userId, true);
-#else
- SessionManager.CheckAndDestroySession(userId, true);
-#endif
- }
- else
- SessionManager.RemoveUserSession(userId, false);
- }
- catch(Exception)
- {
- CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Exception encountered in removing user session.");
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
-
-
- // Construct a Reply.
-
- try
- {
- msgId = 2;
- outMsgLen = 10;
- outBuf = new byte[10];
- byte[] t = new byte[10];
-
- t = BitConverter.GetBytes((ushort)msgId);
- Array.Copy(t,0,outBuf,0,2);
-
- t = BitConverter.GetBytes((uint)outMsgLen);
- Array.Copy(t,0,outBuf,2,4);
-
- t = BitConverter.GetBytes(retCode);
- Array.Copy(t,0,outBuf,6,4);
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- throw new FormatException("Unable to form the response " + e.ToString());
- }
- return outBuf;
- }
-
-
- /*
- * Gives the name of operation performed. Will be used in case
- * of error.
- */
- public string GetVerbName()
- {
- CSSSLogger.ExecutionTrace(this);
- return this.ToString();
- }
- }
-}
+using System;
+using System.Collections;
+using System.Text;
+using System.Threading;
+using sscs.verbs;
+using sscs.common;
+using sscs.cache;
+using sscs.constants;
+
+namespace sscs.verbs
+{
+
+ /*
+ * This class is implementation of CloseSecretStore call.
+ * There will be one instance existing for every call made by the client.
+ */
+
+ internal class CloseSecretStore : SSVerb
+ {
+ private ushort msgId = 0;
+ private uint inMsgLen = 0;
+ private uint outMsgLen = 0;
+ private byte[] inBuf;
+
+ private byte[] outBuf;
+ private int retCode = 0;
+
+ /*
+ * This method sets the class member with the byte array received.
+ */
+
+ public void SetMessageContent(byte[] ipcBytes)
+ {
+ CSSSLogger.ExecutionTrace(this);
+ inBuf = ipcBytes;
+ }
+
+ /*
+ * This method does the actual implementation of CloseSecretStore
+ *
+ */
+
+ public byte[] ProcessRequest(UserIdentifier userId)
+ {
+ /* If an exception occurs in message format decoding,
+ * it is handled by AppHandler
+ */
+
+ CSSSLogger.ExecutionTrace(this);
+ // Message Format decipher - Start
+
+ msgId = BitConverter.ToUInt16(inBuf,0);
+ inMsgLen = BitConverter.ToUInt32(inBuf,2);
+ if( inMsgLen != inBuf.Length )
+ throw new FormatException(" MsgLen sent does not match the length of the message received.");
+
+ uint ssFlags = BitConverter.ToUInt32(inBuf,6);
+ // Message Format decipher - End
+
+ try
+ {
+ if ((ssFlags & ConstFlags.SSFLAGS_DESTROY_SESSION_F) == ConstFlags.SSFLAGS_DESTROY_SESSION_F)
+ {
+#if W32
+ SessionManager.RemoveUserSession(userId, true);
+#else
+ SessionManager.CheckAndDestroySession(userId, true);
+#endif
+ }
+ else
+ SessionManager.RemoveUserSession(userId, false);
+ }
+ catch(Exception)
+ {
+ CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Exception encountered in removing user session.");
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+
+
+ // Construct a Reply.
+
+ try
+ {
+ msgId = 2;
+ outMsgLen = 10;
+ outBuf = new byte[10];
+ byte[] t = new byte[10];
+
+ t = BitConverter.GetBytes((ushort)msgId);
+ Array.Copy(t,0,outBuf,0,2);
+
+ t = BitConverter.GetBytes((uint)outMsgLen);
+ Array.Copy(t,0,outBuf,2,4);
+
+ t = BitConverter.GetBytes(retCode);
+ Array.Copy(t,0,outBuf,6,4);
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ throw new FormatException("Unable to form the response " + e.ToString());
+ }
+ return outBuf;
+ }
+
+
+ /*
+ * Gives the name of operation performed. Will be used in case
+ * of error.
+ */
+ public string GetVerbName()
+ {
+ CSSSLogger.ExecutionTrace(this);
+ return this.ToString();
+ }
+ }
+}
diff --git a/CASA/micasad/verbs/EnumerateKeyChainIds.cs b/CASA/micasad/verbs/EnumerateKeyChainIds.cs
index a6889fff..efee31af 100644
--- a/CASA/micasad/verbs/EnumerateKeyChainIds.cs
+++ b/CASA/micasad/verbs/EnumerateKeyChainIds.cs
@@ -20,134 +20,134 @@
*
***********************************************************************/
-using System;
-using System.Collections;
-using System.Text;
-using System.Threading;
-using sscs.verbs;
-using sscs.cache;
-using sscs.common;
-using sscs.constants;
-namespace sscs.verbs
-{
-
- /*
- * This class is implementation of EnumerateKeyChainIds call.
- * There will be one instance existing for every call made by the client.
- */
-
- internal class EnumerateKeyChainIds : SSVerb
- {
- private ushort msgId = 0;
- private uint inMsgLen = 0;
- private uint outMsgLen = 0;
- private int retCode = 0;
-
- private byte[] inBuf;
- private byte[] outBuf;
-
- /*
- * This method sets the class member with the byte array received.
- */
-
- public void SetMessageContent(byte[] ipcBytes)
- {
- CSSSLogger.ExecutionTrace(this);
- inBuf = ipcBytes;
- }
-
- /*
- * This method does the actual implementation of EnumerateKeyChainIds
- *
- */
-
- public byte[] ProcessRequest(UserIdentifier userId)
- {
- CSSSLogger.ExecutionTrace(this);
- int keyChainIdsLen = 0;
- StringBuilder keyChainIds = new StringBuilder();
- /* If an exception occurs in message format decoding,
- * it is handled by AppHandler
- */
-
- // Message Format decipher - Start
-
- msgId = BitConverter.ToUInt16(inBuf,0);
- inMsgLen = BitConverter.ToUInt32(inBuf,2);
- if( inMsgLen != inBuf.Length )
- throw new FormatException(" MsgLen sent does not match the length of the message received.");
-
- // Message Format decipher - End
- try
- {
- int index = 0;
- SecretStore ssStore = SessionManager.GetUserSecretStore(userId);
- int numKeyChains = ssStore.GetNumKeyChains();
- IDictionaryEnumerator etor = (IDictionaryEnumerator)ssStore.GetKeyChainEnumerator();
- while(etor.MoveNext())
- {
- index++;
- keyChainIds.Append((string)etor.Key,0,(((string)(etor.Key)).Length)-1);
- keyChainIdsLen += ((string)(etor.Key)).Length-1;
- if( index != numKeyChains )
- {
- keyChainIds.Append("*");
- keyChainIdsLen += 1;
- }
- }
- }
- catch(UserNotInSessionException)
- {
- CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable to get user's secretstore" );
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
-
- // Construct a Reply.
-
- try
- {
- msgId = 4;
- outMsgLen = 14 + (uint)keyChainIds.Length;
- outBuf = new byte[outMsgLen];
- byte[] t = new byte[10];
-
- t = BitConverter.GetBytes((ushort)msgId);
- Array.Copy(t,0,outBuf,0,2);
-
- t = BitConverter.GetBytes((uint)outMsgLen);
- Array.Copy(t,0,outBuf,2,4);
-
- t = BitConverter.GetBytes(keyChainIdsLen);
- Array.Copy(t,0,outBuf,6,4);
-
- Encoding.UTF8.GetBytes(keyChainIds.ToString(),0,keyChainIds.Length,outBuf,10);
-
- t = BitConverter.GetBytes(retCode);
- Array.Copy(t,0,outBuf,(10+keyChainIds.Length),4);
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- throw new FormatException("Unable to form the response " + e.ToString());
- }
-
- return outBuf;
-
- }
-
-
- /*
- * Gives the name of operation performed. Will be used in case
- * of error.
- */
- public string GetVerbName()
- {
- return this.ToString();
- }
- }
-}
+using System;
+using System.Collections;
+using System.Text;
+using System.Threading;
+using sscs.verbs;
+using sscs.cache;
+using sscs.common;
+using sscs.constants;
+namespace sscs.verbs
+{
+
+ /*
+ * This class is implementation of EnumerateKeyChainIds call.
+ * There will be one instance existing for every call made by the client.
+ */
+
+ internal class EnumerateKeyChainIds : SSVerb
+ {
+ private ushort msgId = 0;
+ private uint inMsgLen = 0;
+ private uint outMsgLen = 0;
+ private int retCode = 0;
+
+ private byte[] inBuf;
+ private byte[] outBuf;
+
+ /*
+ * This method sets the class member with the byte array received.
+ */
+
+ public void SetMessageContent(byte[] ipcBytes)
+ {
+ CSSSLogger.ExecutionTrace(this);
+ inBuf = ipcBytes;
+ }
+
+ /*
+ * This method does the actual implementation of EnumerateKeyChainIds
+ *
+ */
+
+ public byte[] ProcessRequest(UserIdentifier userId)
+ {
+ CSSSLogger.ExecutionTrace(this);
+ int keyChainIdsLen = 0;
+ StringBuilder keyChainIds = new StringBuilder();
+ /* If an exception occurs in message format decoding,
+ * it is handled by AppHandler
+ */
+
+ // Message Format decipher - Start
+
+ msgId = BitConverter.ToUInt16(inBuf,0);
+ inMsgLen = BitConverter.ToUInt32(inBuf,2);
+ if( inMsgLen != inBuf.Length )
+ throw new FormatException(" MsgLen sent does not match the length of the message received.");
+
+ // Message Format decipher - End
+ try
+ {
+ int index = 0;
+ SecretStore ssStore = SessionManager.GetUserSecretStore(userId);
+ int numKeyChains = ssStore.GetNumKeyChains();
+ IDictionaryEnumerator etor = (IDictionaryEnumerator)ssStore.GetKeyChainEnumerator();
+ while(etor.MoveNext())
+ {
+ index++;
+ keyChainIds.Append((string)etor.Key,0,(((string)(etor.Key)).Length)-1);
+ keyChainIdsLen += ((string)(etor.Key)).Length-1;
+ if( index != numKeyChains )
+ {
+ keyChainIds.Append("*");
+ keyChainIdsLen += 1;
+ }
+ }
+ }
+ catch(UserNotInSessionException)
+ {
+ CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable to get user's secretstore" );
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+
+ // Construct a Reply.
+
+ try
+ {
+ msgId = 4;
+ outMsgLen = 14 + (uint)keyChainIds.Length;
+ outBuf = new byte[outMsgLen];
+ byte[] t = new byte[10];
+
+ t = BitConverter.GetBytes((ushort)msgId);
+ Array.Copy(t,0,outBuf,0,2);
+
+ t = BitConverter.GetBytes((uint)outMsgLen);
+ Array.Copy(t,0,outBuf,2,4);
+
+ t = BitConverter.GetBytes(keyChainIdsLen);
+ Array.Copy(t,0,outBuf,6,4);
+
+ Encoding.UTF8.GetBytes(keyChainIds.ToString(),0,keyChainIds.Length,outBuf,10);
+
+ t = BitConverter.GetBytes(retCode);
+ Array.Copy(t,0,outBuf,(10+keyChainIds.Length),4);
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ throw new FormatException("Unable to form the response " + e.ToString());
+ }
+
+ return outBuf;
+
+ }
+
+
+ /*
+ * Gives the name of operation performed. Will be used in case
+ * of error.
+ */
+ public string GetVerbName()
+ {
+ return this.ToString();
+ }
+ }
+}
diff --git a/CASA/micasad/verbs/EnumerateSecretIds.cs b/CASA/micasad/verbs/EnumerateSecretIds.cs
index 523172fc..ff2aa2a8 100644
--- a/CASA/micasad/verbs/EnumerateSecretIds.cs
+++ b/CASA/micasad/verbs/EnumerateSecretIds.cs
@@ -20,157 +20,157 @@
*
***********************************************************************/
-using System;
-using System.Collections;
-using System.Text;
-using System.Threading;
-using sscs.verbs;
-using sscs.cache;
-using sscs.common;
-using sscs.constants;
-namespace sscs.verbs
-{
-
- /*
- * This class is implementation of EnumerateSecretIds call.
- * There will be one instance existing for every call made by the client.
- */
-
- internal class EnumerateSecretIds : SSVerb
- {
- private ushort msgId = 0;
- private uint inMsgLen = 0;
- private uint outMsgLen = 0;
- private uint keyChainIdLen = 0;
- private string keyChainId;
-
- private int retCode = 0;
-
- private byte[] inBuf;
- private byte[] outBuf;
-
- /*
- * This method sets the class member with the byte array received.
- */
-
- public void SetMessageContent(byte[] ipcBytes)
- {
- CSSSLogger.ExecutionTrace(this);
- inBuf = ipcBytes;
- }
-
- /*
- * This method does the actual implementation of EnumerateSecretIds
- *
- */
-
- public byte[] ProcessRequest(UserIdentifier userId)
- {
- /* If an exception occurs in message format decoding,
- * it is handled by AppHandler
- */
-
- int secretIdsLen = 0;
- StringBuilder secretIds = new StringBuilder();
- // Message Format decipher - Start
-
- msgId = BitConverter.ToUInt16(inBuf,0);
- inMsgLen = BitConverter.ToUInt32(inBuf,2);
- if( inMsgLen != inBuf.Length )
- throw new FormatException(" MsgLen sent does not match the length of the message received.");
-
- keyChainIdLen = BitConverter.ToUInt32(inBuf,6);
-
- byte[] keyChainIdArr = new byte[keyChainIdLen];
- Array.Copy(inBuf,10,keyChainIdArr,0,keyChainIdLen);
- keyChainId = Encoding.UTF8.GetString(keyChainIdArr);
-
- // Message Format decipher - End
- try
- {
- SecretStore ssStore = SessionManager.GetUserSecretStore(userId);
- if (!ssStore.IsStoreLocked())
- {
- if( ssStore.CheckIfKeyChainExists(keyChainId) )
- {
- KeyChain keyChain = ssStore.GetKeyChain(keyChainId);
- int numSecrets = keyChain.GetNumSecrets();
- int index = 0;
- IDictionaryEnumerator etor = (IDictionaryEnumerator)keyChain.GetAllSecrets();
- while(etor.MoveNext())
- {
- index++;
- secretIds.Append((string)etor.Key,0,(((string)(etor.Key)).Length)-1);
- secretIdsLen += ((string)(etor.Key)).Length-1;
- if( index != numSecrets )
- {
- secretIds.Append("*");
- secretIdsLen += 1;
- }
- }
- }
- else
- {
- retCode = IPCRetCodes.SSCS_E_KEYCHAIN_DOES_NOT_EXIST;
- }
- }
- else
- {
- retCode = IPCRetCodes.SSCS_SECRET_STORE_IS_LOCKED;
- }
- }
- catch(UserNotInSessionException)
- {
- CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable to get user's secretstore" );
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
- catch(Exception)
- {
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
-
- //Construct a reply.
- try
- {
- msgId = 7;
-
- outMsgLen = 14 + (uint)secretIds.Length;
- outBuf = new byte[outMsgLen];
- byte[] t = new byte[10];
-
- t = BitConverter.GetBytes((ushort)msgId);
- Array.Copy(t,0,outBuf,0,2);
-
- t = BitConverter.GetBytes((uint)outMsgLen);
- Array.Copy(t,0,outBuf,2,4);
-
- t = BitConverter.GetBytes(secretIdsLen);
- Array.Copy(t,0,outBuf,6,4);
-
- Encoding.UTF8.GetBytes(secretIds.ToString(),0,secretIds.Length,outBuf,10);
-
- t = BitConverter.GetBytes(retCode);
- Array.Copy(t,0,outBuf,(10+secretIds.Length),4);
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- throw new FormatException("Unable to form the response " + e.ToString());
- }
-
- return outBuf;
-
- }
-
-
- /*
- * Gives the name of operation performed. Will be used in case
- * of error.
- */
- public string GetVerbName()
- {
- CSSSLogger.ExecutionTrace(this);
- return this.ToString();
- }
- }
-}
+using System;
+using System.Collections;
+using System.Text;
+using System.Threading;
+using sscs.verbs;
+using sscs.cache;
+using sscs.common;
+using sscs.constants;
+namespace sscs.verbs
+{
+
+ /*
+ * This class is implementation of EnumerateSecretIds call.
+ * There will be one instance existing for every call made by the client.
+ */
+
+ internal class EnumerateSecretIds : SSVerb
+ {
+ private ushort msgId = 0;
+ private uint inMsgLen = 0;
+ private uint outMsgLen = 0;
+ private uint keyChainIdLen = 0;
+ private string keyChainId;
+
+ private int retCode = 0;
+
+ private byte[] inBuf;
+ private byte[] outBuf;
+
+ /*
+ * This method sets the class member with the byte array received.
+ */
+
+ public void SetMessageContent(byte[] ipcBytes)
+ {
+ CSSSLogger.ExecutionTrace(this);
+ inBuf = ipcBytes;
+ }
+
+ /*
+ * This method does the actual implementation of EnumerateSecretIds
+ *
+ */
+
+ public byte[] ProcessRequest(UserIdentifier userId)
+ {
+ /* If an exception occurs in message format decoding,
+ * it is handled by AppHandler
+ */
+
+ int secretIdsLen = 0;
+ StringBuilder secretIds = new StringBuilder();
+ // Message Format decipher - Start
+
+ msgId = BitConverter.ToUInt16(inBuf,0);
+ inMsgLen = BitConverter.ToUInt32(inBuf,2);
+ if( inMsgLen != inBuf.Length )
+ throw new FormatException(" MsgLen sent does not match the length of the message received.");
+
+ keyChainIdLen = BitConverter.ToUInt32(inBuf,6);
+
+ byte[] keyChainIdArr = new byte[keyChainIdLen];
+ Array.Copy(inBuf,10,keyChainIdArr,0,keyChainIdLen);
+ keyChainId = Encoding.UTF8.GetString(keyChainIdArr);
+
+ // Message Format decipher - End
+ try
+ {
+ SecretStore ssStore = SessionManager.GetUserSecretStore(userId);
+ if (!ssStore.IsStoreLocked())
+ {
+ if( ssStore.CheckIfKeyChainExists(keyChainId) )
+ {
+ KeyChain keyChain = ssStore.GetKeyChain(keyChainId);
+ int numSecrets = keyChain.GetNumSecrets();
+ int index = 0;
+ IDictionaryEnumerator etor = (IDictionaryEnumerator)keyChain.GetAllSecrets();
+ while(etor.MoveNext())
+ {
+ index++;
+ secretIds.Append((string)etor.Key,0,(((string)(etor.Key)).Length)-1);
+ secretIdsLen += ((string)(etor.Key)).Length-1;
+ if( index != numSecrets )
+ {
+ secretIds.Append("*");
+ secretIdsLen += 1;
+ }
+ }
+ }
+ else
+ {
+ retCode = IPCRetCodes.SSCS_E_KEYCHAIN_DOES_NOT_EXIST;
+ }
+ }
+ else
+ {
+ retCode = IPCRetCodes.SSCS_SECRET_STORE_IS_LOCKED;
+ }
+ }
+ catch(UserNotInSessionException)
+ {
+ CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable to get user's secretstore" );
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+ catch(Exception)
+ {
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+
+ //Construct a reply.
+ try
+ {
+ msgId = 7;
+
+ outMsgLen = 14 + (uint)secretIds.Length;
+ outBuf = new byte[outMsgLen];
+ byte[] t = new byte[10];
+
+ t = BitConverter.GetBytes((ushort)msgId);
+ Array.Copy(t,0,outBuf,0,2);
+
+ t = BitConverter.GetBytes((uint)outMsgLen);
+ Array.Copy(t,0,outBuf,2,4);
+
+ t = BitConverter.GetBytes(secretIdsLen);
+ Array.Copy(t,0,outBuf,6,4);
+
+ Encoding.UTF8.GetBytes(secretIds.ToString(),0,secretIds.Length,outBuf,10);
+
+ t = BitConverter.GetBytes(retCode);
+ Array.Copy(t,0,outBuf,(10+secretIds.Length),4);
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ throw new FormatException("Unable to form the response " + e.ToString());
+ }
+
+ return outBuf;
+
+ }
+
+
+ /*
+ * Gives the name of operation performed. Will be used in case
+ * of error.
+ */
+ public string GetVerbName()
+ {
+ CSSSLogger.ExecutionTrace(this);
+ return this.ToString();
+ }
+ }
+}
diff --git a/CASA/micasad/verbs/GetSecretStoreInfo.cs b/CASA/micasad/verbs/GetSecretStoreInfo.cs
index a92a8bcd..df4c17a1 100644
--- a/CASA/micasad/verbs/GetSecretStoreInfo.cs
+++ b/CASA/micasad/verbs/GetSecretStoreInfo.cs
@@ -20,123 +20,123 @@
*
***********************************************************************/
-using System;
-using System.Collections;
-using System.Text;
-using System.Threading;
-using sscs.verbs;
-using sscs.common;
-using sscs.cache;
-using sscs.constants;
-
-namespace sscs.verbs
-{
-
- /*
- * This class is implementation of GetSecretStoreInfo call.
- * There will be one instance existing for every call made by the client.
- */
-
- internal class GetSecretStoreInfo : SSVerb
- {
- private ushort msgId = 0;
- private uint inMsgLen = 0;
- private uint outMsgLen = 0;
- private uint numKeyChains = 0;
- private byte[] inBuf;
- private byte[] outBuf;
- private int retCode = 0;
-
- /*
- * This method sets the class member with the byte array received.
- */
-
- public void SetMessageContent(byte[] ipcBytes)
- {
- CSSSLogger.ExecutionTrace(this);
- inBuf = ipcBytes;
- }
-
- /*
- * This method does the actual implementation of GetSecretStoreInfo
- *
- */
-
- public byte[] ProcessRequest(UserIdentifier userId)
- {
-
- CSSSLogger.ExecutionTrace(this);
-
- /* If an exception occurs in message format decoding,
- * it is handled by AppHandler
- */
-
- // Message Format decipher - Start
-
- msgId = BitConverter.ToUInt16(inBuf,0);
- inMsgLen = BitConverter.ToUInt32(inBuf,2);
-
- if( inMsgLen != inBuf.Length )
- throw new FormatException(" MsgLen sent does not match the length of the message received.");
-
- // Message Format decipher - End
-
- try
- {
- SecretStore ssStore = SessionManager.GetUserSecretStore(userId);
- numKeyChains = (uint) ssStore.GetNumKeyChains();
- }
- catch(UserNotInSessionException)
- {
- CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable to get user's secretstore" );
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
-
-
- // Construct Response
-
- try
- {
- msgId = 11;
- outMsgLen = 14;
- outBuf = new byte[outMsgLen];
- byte[] t = new byte[10];
-
- t = BitConverter.GetBytes((ushort)msgId);
- Array.Copy(t,0,outBuf,0,2);
-
- t = BitConverter.GetBytes((uint)outMsgLen);
- Array.Copy(t,0,outBuf,2,4);
-
- t = BitConverter.GetBytes(numKeyChains);
- Array.Copy(t,0,outBuf,6,4);
-
- t = BitConverter.GetBytes(retCode);
- Array.Copy(t,0,outBuf,10,4);
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- throw new FormatException("Unable to form the response " + e.ToString());
- }
-
- return outBuf;
-
- }
-
- /*
- * Gives the name of operation performed. Will be used in case
- * of error.
- */
- public string GetVerbName()
- {
- CSSSLogger.ExecutionTrace(this);
- return this.ToString();
- }
- }
-}
+using System;
+using System.Collections;
+using System.Text;
+using System.Threading;
+using sscs.verbs;
+using sscs.common;
+using sscs.cache;
+using sscs.constants;
+
+namespace sscs.verbs
+{
+
+ /*
+ * This class is implementation of GetSecretStoreInfo call.
+ * There will be one instance existing for every call made by the client.
+ */
+
+ internal class GetSecretStoreInfo : SSVerb
+ {
+ private ushort msgId = 0;
+ private uint inMsgLen = 0;
+ private uint outMsgLen = 0;
+ private uint numKeyChains = 0;
+ private byte[] inBuf;
+ private byte[] outBuf;
+ private int retCode = 0;
+
+ /*
+ * This method sets the class member with the byte array received.
+ */
+
+ public void SetMessageContent(byte[] ipcBytes)
+ {
+ CSSSLogger.ExecutionTrace(this);
+ inBuf = ipcBytes;
+ }
+
+ /*
+ * This method does the actual implementation of GetSecretStoreInfo
+ *
+ */
+
+ public byte[] ProcessRequest(UserIdentifier userId)
+ {
+
+ CSSSLogger.ExecutionTrace(this);
+
+ /* If an exception occurs in message format decoding,
+ * it is handled by AppHandler
+ */
+
+ // Message Format decipher - Start
+
+ msgId = BitConverter.ToUInt16(inBuf,0);
+ inMsgLen = BitConverter.ToUInt32(inBuf,2);
+
+ if( inMsgLen != inBuf.Length )
+ throw new FormatException(" MsgLen sent does not match the length of the message received.");
+
+ // Message Format decipher - End
+
+ try
+ {
+ SecretStore ssStore = SessionManager.GetUserSecretStore(userId);
+ numKeyChains = (uint) ssStore.GetNumKeyChains();
+ }
+ catch(UserNotInSessionException)
+ {
+ CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable to get user's secretstore" );
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+
+
+ // Construct Response
+
+ try
+ {
+ msgId = 11;
+ outMsgLen = 14;
+ outBuf = new byte[outMsgLen];
+ byte[] t = new byte[10];
+
+ t = BitConverter.GetBytes((ushort)msgId);
+ Array.Copy(t,0,outBuf,0,2);
+
+ t = BitConverter.GetBytes((uint)outMsgLen);
+ Array.Copy(t,0,outBuf,2,4);
+
+ t = BitConverter.GetBytes(numKeyChains);
+ Array.Copy(t,0,outBuf,6,4);
+
+ t = BitConverter.GetBytes(retCode);
+ Array.Copy(t,0,outBuf,10,4);
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ throw new FormatException("Unable to form the response " + e.ToString());
+ }
+
+ return outBuf;
+
+ }
+
+ /*
+ * Gives the name of operation performed. Will be used in case
+ * of error.
+ */
+ public string GetVerbName()
+ {
+ CSSSLogger.ExecutionTrace(this);
+ return this.ToString();
+ }
+ }
+}
diff --git a/CASA/micasad/verbs/ISSVerb.cs b/CASA/micasad/verbs/ISSVerb.cs
index 2f19bcca..0e6072f2 100644
--- a/CASA/micasad/verbs/ISSVerb.cs
+++ b/CASA/micasad/verbs/ISSVerb.cs
@@ -20,37 +20,37 @@
*
***********************************************************************/
-using System;
-using System.Collections;
-using System.Text;
-using System.Threading;
-using sscs.verbs;
-using sscs.common;
-
-
- namespace sscs.verbs
- {
-
- /*
- * Defines the interfaces to be implemenetd by all Secret Store Verbs.
- */
- interface SSVerb
- {
- /* Takes in the raw bytes and sets them for a Verb,
- * so that the verb will execute in the bytes given.
- * TBD: In case we are able to send the byte[] through constructor,
- * we can avoid this interface.
- */
-
- void SetMessageContent(byte[] rawbytes);
-
- /* Takes in the SecretStore Reeference and returns the correct SSVerb
- */
- byte[] ProcessRequest(UserIdentifier userId);
-
- //Gives the name of operation performed.Can be used in case of error.
- string GetVerbName();
- }
-
- }
-
+using System;
+using System.Collections;
+using System.Text;
+using System.Threading;
+using sscs.verbs;
+using sscs.common;
+
+
+ namespace sscs.verbs
+ {
+
+ /*
+ * Defines the interfaces to be implemenetd by all Secret Store Verbs.
+ */
+ interface SSVerb
+ {
+ /* Takes in the raw bytes and sets them for a Verb,
+ * so that the verb will execute in the bytes given.
+ * TBD: In case we are able to send the byte[] through constructor,
+ * we can avoid this interface.
+ */
+
+ void SetMessageContent(byte[] rawbytes);
+
+ /* Takes in the SecretStore Reeference and returns the correct SSVerb
+ */
+ byte[] ProcessRequest(UserIdentifier userId);
+
+ //Gives the name of operation performed.Can be used in case of error.
+ string GetVerbName();
+ }
+
+ }
+
diff --git a/CASA/micasad/verbs/MergeCache.cs b/CASA/micasad/verbs/MergeCache.cs
index d60f7c82..2016fe37 100644
--- a/CASA/micasad/verbs/MergeCache.cs
+++ b/CASA/micasad/verbs/MergeCache.cs
@@ -1,165 +1,165 @@
-using System;
-using System.Collections;
-
-using sscs.verbs;
-using sscs.cache;
-using sscs.common;
-using sscs.constants;
-using sscs.lss;
-
-namespace sscs.verbs
-{
- ///
- /// Summary description for MergeCache.
- ///
- internal class MergeCache : SSVerb
- {
- private ushort msgId = 0;
- private uint inMsgLen = 0;
- private uint outMsgLen = 0;
-
- private int retCode = 0;
-
- private byte[] inBuf;
- private byte[] outBuf;
-
- public void SetMessageContent(byte[] ipcBytes)
- {
- CSSSLogger.ExecutionTrace(this);
- inBuf = ipcBytes;
- }
-
- /*
- * This method does the actual implementation of MergeSecret
- *
- */
-
- public byte[] ProcessRequest(UserIdentifier userId)
- {
-
- CSSSLogger.ExecutionTrace(this);
- UserIdentifier tempUserId = userId;
-
- /* If an exception occurs in message format decoding,
- * it is handled by AppHandler
- */
-
- // Message Format decipher - Start
- msgId = BitConverter.ToUInt16(inBuf, 0);
- inMsgLen = BitConverter.ToUInt32(inBuf, 2);
-
- if (inMsgLen != inBuf.Length)
- throw new FormatException(" MsgLen sent does not match the length of the message received.");
-
-
- // get the src LUID
- int luidLow = BitConverter.ToInt32(inBuf, 14);
- int luidHigh = BitConverter.ToInt32(inBuf, 18);
-
- // get the target LUID
- int targetLuidLow = BitConverter.ToInt32(inBuf, 30);
- int targetLuidHigh = BitConverter.ToInt32(inBuf, 34);
-
- // get destroy flag
- int iDestroySrcCache = BitConverter.ToInt32(inBuf, 38);
-
- CSSSLogger.DbgLog(" SRC LUID found: " + luidHigh.ToString() + ":"+ luidLow.ToString());
- CSSSLogger.DbgLog("Target LUID found: " + targetLuidHigh.ToString() +":" + targetLuidLow.ToString());
-
-
-#if W32
- // only allow the merge if the calling process is "System"
- WinUserIdentifier callingUser = (WinUserIdentifier)userId;
- if ((callingUser.GetUIDLow() == 999) && (callingUser.GetUIDHigh() == 0))
- {
- CSSSLogger.DbgLog("MergeSecrets: Caller is system process");
-
- // get the store for the src
- try
- {
- //WinUserIdentifier srcUser = new WinUserIdentifier(luidLow, luidHigh);
- SecretStore srcStore = SessionManager.GetUserSecretStore(userId);
- KeyChain kcSrc = null;
- KeyChain kcDest = null;
-
-
- // rename keychainID from SRC LUID to Target LUID.
- if (srcStore.CheckIfKeyChainExists(luidHigh.ToString() + luidLow.ToString()))
- {
- kcSrc = srcStore.GetKeyChain(luidHigh.ToString() + luidLow.ToString());
- kcDest = new KeyChain(targetLuidHigh.ToString() + targetLuidLow.ToString());
-
- if (!srcStore.CheckIfKeyChainExists(targetLuidHigh.ToString() + targetLuidLow.ToString()))
- {
- srcStore.AddKeyChain(kcDest);
- }
-
- // merge secrets from src to dest keychain
- IDictionaryEnumerator secIter = (IDictionaryEnumerator)(kcSrc.GetAllSecrets());
- while (secIter.MoveNext())
- {
- Secret secret = (Secret)secIter.Value;
- kcDest.AddSecret(secret);
- }
-
- if (iDestroySrcCache > 0)
- {
- srcStore.RemoveKeyChain(luidHigh.ToString() + luidLow.ToString());
- }
- }
- else
- {
- retCode = IPCRetCodes.SSCS_E_INVALID_INPUT;
- }
- }
- catch (Exception e)
- {
- CSSSLogger.DbgLog(e.ToString());
- retCode = IPCRetCodes.SSCS_E_INVALID_INPUT;
- }
- }
- else
- {
- CSSSLogger.DbgLog("Caller is NOT system process, Merge not allowed!");
- retCode = IPCRetCodes.SSCS_E_INVALID_INPUT;
- }
-#else
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
-#endif
-
- try
- {
- msgId = 19;
- outMsgLen = 10;
- outBuf = new byte[10];
- byte[] t = new byte[10];
-
- t = BitConverter.GetBytes((ushort)msgId);
- Array.Copy(t, 0, outBuf, 0, 2);
-
- t = BitConverter.GetBytes((uint)outMsgLen);
- Array.Copy(t, 0, outBuf, 2, 4);
-
- t = BitConverter.GetBytes(retCode);
- Array.Copy(t, 0, outBuf, 6, 4);
- }
- catch (Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- throw new FormatException("Unable to form the response " + e.ToString());
- }
-
- return outBuf;
- }
-
- /*
- * Gives the name of operation performed. Will be used in case
- * of error.
- */
- public string GetVerbName()
- {
- CSSSLogger.ExecutionTrace(this);
- return this.ToString();
- }
- }
-}
+using System;
+using System.Collections;
+
+using sscs.verbs;
+using sscs.cache;
+using sscs.common;
+using sscs.constants;
+using sscs.lss;
+
+namespace sscs.verbs
+{
+ ///
+ /// Summary description for MergeCache.
+ ///
+ internal class MergeCache : SSVerb
+ {
+ private ushort msgId = 0;
+ private uint inMsgLen = 0;
+ private uint outMsgLen = 0;
+
+ private int retCode = 0;
+
+ private byte[] inBuf;
+ private byte[] outBuf;
+
+ public void SetMessageContent(byte[] ipcBytes)
+ {
+ CSSSLogger.ExecutionTrace(this);
+ inBuf = ipcBytes;
+ }
+
+ /*
+ * This method does the actual implementation of MergeSecret
+ *
+ */
+
+ public byte[] ProcessRequest(UserIdentifier userId)
+ {
+
+ CSSSLogger.ExecutionTrace(this);
+ UserIdentifier tempUserId = userId;
+
+ /* If an exception occurs in message format decoding,
+ * it is handled by AppHandler
+ */
+
+ // Message Format decipher - Start
+ msgId = BitConverter.ToUInt16(inBuf, 0);
+ inMsgLen = BitConverter.ToUInt32(inBuf, 2);
+
+ if (inMsgLen != inBuf.Length)
+ throw new FormatException(" MsgLen sent does not match the length of the message received.");
+
+
+ // get the src LUID
+ int luidLow = BitConverter.ToInt32(inBuf, 14);
+ int luidHigh = BitConverter.ToInt32(inBuf, 18);
+
+ // get the target LUID
+ int targetLuidLow = BitConverter.ToInt32(inBuf, 30);
+ int targetLuidHigh = BitConverter.ToInt32(inBuf, 34);
+
+ // get destroy flag
+ int iDestroySrcCache = BitConverter.ToInt32(inBuf, 38);
+
+ CSSSLogger.DbgLog(" SRC LUID found: " + luidHigh.ToString() + ":"+ luidLow.ToString());
+ CSSSLogger.DbgLog("Target LUID found: " + targetLuidHigh.ToString() +":" + targetLuidLow.ToString());
+
+
+#if W32
+ // only allow the merge if the calling process is "System"
+ WinUserIdentifier callingUser = (WinUserIdentifier)userId;
+ if ((callingUser.GetUIDLow() == 999) && (callingUser.GetUIDHigh() == 0))
+ {
+ CSSSLogger.DbgLog("MergeSecrets: Caller is system process");
+
+ // get the store for the src
+ try
+ {
+ //WinUserIdentifier srcUser = new WinUserIdentifier(luidLow, luidHigh);
+ SecretStore srcStore = SessionManager.GetUserSecretStore(userId);
+ KeyChain kcSrc = null;
+ KeyChain kcDest = null;
+
+
+ // rename keychainID from SRC LUID to Target LUID.
+ if (srcStore.CheckIfKeyChainExists(luidHigh.ToString() + luidLow.ToString()))
+ {
+ kcSrc = srcStore.GetKeyChain(luidHigh.ToString() + luidLow.ToString());
+ kcDest = new KeyChain(targetLuidHigh.ToString() + targetLuidLow.ToString());
+
+ if (!srcStore.CheckIfKeyChainExists(targetLuidHigh.ToString() + targetLuidLow.ToString()))
+ {
+ srcStore.AddKeyChain(kcDest);
+ }
+
+ // merge secrets from src to dest keychain
+ IDictionaryEnumerator secIter = (IDictionaryEnumerator)(kcSrc.GetAllSecrets());
+ while (secIter.MoveNext())
+ {
+ Secret secret = (Secret)secIter.Value;
+ kcDest.AddSecret(secret);
+ }
+
+ if (iDestroySrcCache > 0)
+ {
+ srcStore.RemoveKeyChain(luidHigh.ToString() + luidLow.ToString());
+ }
+ }
+ else
+ {
+ retCode = IPCRetCodes.SSCS_E_INVALID_INPUT;
+ }
+ }
+ catch (Exception e)
+ {
+ CSSSLogger.DbgLog(e.ToString());
+ retCode = IPCRetCodes.SSCS_E_INVALID_INPUT;
+ }
+ }
+ else
+ {
+ CSSSLogger.DbgLog("Caller is NOT system process, Merge not allowed!");
+ retCode = IPCRetCodes.SSCS_E_INVALID_INPUT;
+ }
+#else
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+#endif
+
+ try
+ {
+ msgId = 19;
+ outMsgLen = 10;
+ outBuf = new byte[10];
+ byte[] t = new byte[10];
+
+ t = BitConverter.GetBytes((ushort)msgId);
+ Array.Copy(t, 0, outBuf, 0, 2);
+
+ t = BitConverter.GetBytes((uint)outMsgLen);
+ Array.Copy(t, 0, outBuf, 2, 4);
+
+ t = BitConverter.GetBytes(retCode);
+ Array.Copy(t, 0, outBuf, 6, 4);
+ }
+ catch (Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ throw new FormatException("Unable to form the response " + e.ToString());
+ }
+
+ return outBuf;
+ }
+
+ /*
+ * Gives the name of operation performed. Will be used in case
+ * of error.
+ */
+ public string GetVerbName()
+ {
+ CSSSLogger.ExecutionTrace(this);
+ return this.ToString();
+ }
+ }
+}
diff --git a/CASA/micasad/verbs/OpenSecretStore.cs b/CASA/micasad/verbs/OpenSecretStore.cs
index 01c81565..a9ca2b23 100644
--- a/CASA/micasad/verbs/OpenSecretStore.cs
+++ b/CASA/micasad/verbs/OpenSecretStore.cs
@@ -20,134 +20,134 @@
*
***********************************************************************/
-using System;
-using System.Collections;
-using System.Text;
-using System.Threading;
-using sscs.verbs;
-using sscs.cache;
-using sscs.common;
-using sscs.constants;
-
-namespace sscs.verbs
-{
-
- /*
- * This class is implementation of OpenSecretStore call.
- * There will be one instance existing for every call made by the client.
- */
-
- internal class OpenSecretStore : SSVerb
- {
- ushort msgId = 0;
- uint inMsgLen = 0;
- uint outMsgLen = 0;
- uint ssVersion = 0;
- uint ssNameLen = 0;
- private string ssName; //Name of SecretStore to open
- private byte[] inBuf;
-
- private byte[] outBuf;
- int retCode = 0;
-
- private static int MAX_SS_NAME_LEN = 256;
-
- /*
- * This method sets the class member with the byte array received.
- */
-
- public void SetMessageContent(byte[] ipcBytes)
- {
- CSSSLogger.ExecutionTrace(this);
- inBuf = ipcBytes;
- }
-
- /*
- * This method does the actual implementation of OpenSecretStore
- *
- */
-
- public byte[] ProcessRequest(UserIdentifier userId)
- {
- /* If an exception occurs in message format decoding,
- * it is handled by AppHandler
- */
-
- CSSSLogger.ExecutionTrace(this);
- msgId = BitConverter.ToUInt16(inBuf,0);
- inMsgLen = BitConverter.ToUInt32(inBuf,2);
-
- if( inMsgLen != inBuf.Length )
- throw new FormatException(" MsgLen sent does not match the length of the message received.");
-
- ssVersion = BitConverter.ToUInt32(inBuf,6);
- ssNameLen = BitConverter.ToUInt32(inBuf,10);
-
- if (ssNameLen > MAX_SS_NAME_LEN)
- throw new FormatException(" SecretStore Name length exceeds length allowed");
-
- byte[] tempArr = new byte[ssNameLen];
- Array.Copy(inBuf,14,tempArr,0,ssNameLen);
- ssName = Encoding.UTF8.GetString(tempArr);
-
- try
- {
- SecretStore ss = SessionManager.CreateUserSession(userId);
-
- if( null == ss )
- {
- CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " SecretStore instance is null");
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
- else
- {
- CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " + - Created a new Session entry");
- }
-
- }
-
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
-
- try
- {
- msgId = 1;
- outMsgLen = 14;
- outBuf = new byte[14];
- byte[] t = new byte[10];
-
- t = BitConverter.GetBytes((ushort)msgId);
- Array.Copy(t,0,outBuf,0,2);
-
- t = BitConverter.GetBytes((uint)outMsgLen);
- Array.Copy(t,0,outBuf,2,4);
-
- t = BitConverter.GetBytes((uint)ssVersion);
- Array.Copy(t,0,outBuf,6,4);
-
- t = BitConverter.GetBytes(retCode);
- Array.Copy(t,0,outBuf,10,4);
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- throw new FormatException("Unable to form the response " + e.ToString());
- }
- return outBuf;
- }
-
-
- /*
- * Gives the name of operation performed. Will be used in case
- * of error.
- */
- public string GetVerbName()
- {
- CSSSLogger.ExecutionTrace(this);
- return this.ToString();
- }
- }
-}
+using System;
+using System.Collections;
+using System.Text;
+using System.Threading;
+using sscs.verbs;
+using sscs.cache;
+using sscs.common;
+using sscs.constants;
+
+namespace sscs.verbs
+{
+
+ /*
+ * This class is implementation of OpenSecretStore call.
+ * There will be one instance existing for every call made by the client.
+ */
+
+ internal class OpenSecretStore : SSVerb
+ {
+ ushort msgId = 0;
+ uint inMsgLen = 0;
+ uint outMsgLen = 0;
+ uint ssVersion = 0;
+ uint ssNameLen = 0;
+ private string ssName; //Name of SecretStore to open
+ private byte[] inBuf;
+
+ private byte[] outBuf;
+ int retCode = 0;
+
+ private static int MAX_SS_NAME_LEN = 256;
+
+ /*
+ * This method sets the class member with the byte array received.
+ */
+
+ public void SetMessageContent(byte[] ipcBytes)
+ {
+ CSSSLogger.ExecutionTrace(this);
+ inBuf = ipcBytes;
+ }
+
+ /*
+ * This method does the actual implementation of OpenSecretStore
+ *
+ */
+
+ public byte[] ProcessRequest(UserIdentifier userId)
+ {
+ /* If an exception occurs in message format decoding,
+ * it is handled by AppHandler
+ */
+
+ CSSSLogger.ExecutionTrace(this);
+ msgId = BitConverter.ToUInt16(inBuf,0);
+ inMsgLen = BitConverter.ToUInt32(inBuf,2);
+
+ if( inMsgLen != inBuf.Length )
+ throw new FormatException(" MsgLen sent does not match the length of the message received.");
+
+ ssVersion = BitConverter.ToUInt32(inBuf,6);
+ ssNameLen = BitConverter.ToUInt32(inBuf,10);
+
+ if (ssNameLen > MAX_SS_NAME_LEN)
+ throw new FormatException(" SecretStore Name length exceeds length allowed");
+
+ byte[] tempArr = new byte[ssNameLen];
+ Array.Copy(inBuf,14,tempArr,0,ssNameLen);
+ ssName = Encoding.UTF8.GetString(tempArr);
+
+ try
+ {
+ SecretStore ss = SessionManager.CreateUserSession(userId);
+
+ if( null == ss )
+ {
+ CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " SecretStore instance is null");
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+ else
+ {
+ CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " + - Created a new Session entry");
+ }
+
+ }
+
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+
+ try
+ {
+ msgId = 1;
+ outMsgLen = 14;
+ outBuf = new byte[14];
+ byte[] t = new byte[10];
+
+ t = BitConverter.GetBytes((ushort)msgId);
+ Array.Copy(t,0,outBuf,0,2);
+
+ t = BitConverter.GetBytes((uint)outMsgLen);
+ Array.Copy(t,0,outBuf,2,4);
+
+ t = BitConverter.GetBytes((uint)ssVersion);
+ Array.Copy(t,0,outBuf,6,4);
+
+ t = BitConverter.GetBytes(retCode);
+ Array.Copy(t,0,outBuf,10,4);
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ throw new FormatException("Unable to form the response " + e.ToString());
+ }
+ return outBuf;
+ }
+
+
+ /*
+ * Gives the name of operation performed. Will be used in case
+ * of error.
+ */
+ public string GetVerbName()
+ {
+ CSSSLogger.ExecutionTrace(this);
+ return this.ToString();
+ }
+ }
+}
diff --git a/CASA/micasad/verbs/ReadBinaryKey.cs b/CASA/micasad/verbs/ReadBinaryKey.cs
index 85ff17da..df5122ab 100644
--- a/CASA/micasad/verbs/ReadBinaryKey.cs
+++ b/CASA/micasad/verbs/ReadBinaryKey.cs
@@ -20,42 +20,42 @@
*
***********************************************************************/
-using System;
-using System.Collections;
-using System.Text;
-using System.Threading;
-using sscs.verbs;
-using sscs.cache;
-using sscs.common;
-using sscs.constants;
-namespace sscs.verbs
-{
-
- /*
- * This class is implementation of ReadKey call.
- * There will be one instance existing for every call made by the client.
- */
-
- internal class ReadBinaryKey : SSVerb
- {
- private ushort msgId = 0;
- private uint inMsgLen = 0;
- private uint outMsgLen = 0;
- private uint keyChainIdLen = 0;
- private uint secretIdLen = 0;
- private int retCode = 0;
- private string keyChainId;
- private string secretId;
- private uint keyLen;
- private string key;
- private uint valLen;
- private byte[] val;
-
- //private byte[] secretVal;
-
- private byte[] inBuf;
- private byte[] outBuf;
-
+using System;
+using System.Collections;
+using System.Text;
+using System.Threading;
+using sscs.verbs;
+using sscs.cache;
+using sscs.common;
+using sscs.constants;
+namespace sscs.verbs
+{
+
+ /*
+ * This class is implementation of ReadKey call.
+ * There will be one instance existing for every call made by the client.
+ */
+
+ internal class ReadBinaryKey : SSVerb
+ {
+ private ushort msgId = 0;
+ private uint inMsgLen = 0;
+ private uint outMsgLen = 0;
+ private uint keyChainIdLen = 0;
+ private uint secretIdLen = 0;
+ private int retCode = 0;
+ private string keyChainId;
+ private string secretId;
+ private uint keyLen;
+ private string key;
+ private uint valLen;
+ private byte[] val;
+
+ //private byte[] secretVal;
+
+ private byte[] inBuf;
+ private byte[] outBuf;
+
// extension operations
private uint extId = 0;
#if W32
@@ -63,59 +63,59 @@ namespace sscs.verbs
private int luidHigh = 0;
#endif
- /*
- * This method sets the class member with the byte array received.
- */
-
- public void SetMessageContent(byte[] ipcBytes)
- {
- CSSSLogger.ExecutionTrace(this);
- inBuf = ipcBytes;
- }
-
- /*
- * This method does the actual implementation of ReadKey
- *
- */
-
- public byte[] ProcessRequest(UserIdentifier userId)
- {
-
- Secret secret = null;
-
- CSSSLogger.ExecutionTrace(this);
+ /*
+ * This method sets the class member with the byte array received.
+ */
+
+ public void SetMessageContent(byte[] ipcBytes)
+ {
+ CSSSLogger.ExecutionTrace(this);
+ inBuf = ipcBytes;
+ }
+
+ /*
+ * This method does the actual implementation of ReadKey
+ *
+ */
+
+ public byte[] ProcessRequest(UserIdentifier userId)
+ {
+
+ Secret secret = null;
+
+ CSSSLogger.ExecutionTrace(this);
UserIdentifier tempUserId = userId;
-
- /* If an exception occurs in message format decoding,
- * it is handled by AppHandler
- */
-
- // Message Format decipher - Start
- msgId = BitConverter.ToUInt16(inBuf,0);
- inMsgLen = BitConverter.ToUInt32(inBuf,2);
-
- if( inMsgLen != inBuf.Length )
- throw new FormatException(" MsgLen sent does not match the length of the message received.");
-
- keyChainIdLen = BitConverter.ToUInt32(inBuf,6);
-
- byte[] keyChainIdArr = new byte[keyChainIdLen];
- Array.Copy(inBuf,10,keyChainIdArr,0,keyChainIdLen);
- keyChainId = Encoding.UTF8.GetString(keyChainIdArr);
-
- secretIdLen = BitConverter.ToUInt32(inBuf,
- (10 + (int)keyChainIdLen));
-
- byte[] secretIdArr = new byte[secretIdLen];
- Array.Copy(inBuf,(10+keyChainIdLen+4),secretIdArr,0,secretIdLen);
- secretId = Encoding.UTF8.GetString(secretIdArr);
- // Message Format decipher - End
-
- keyLen = BitConverter.ToUInt32(inBuf,(14+(int)keyChainIdLen+(int)secretIdLen));
-
- byte[] keyArr = new byte[keyLen];
- Array.Copy(inBuf,(18+(int)keyChainIdLen+(int)secretIdLen),keyArr,0,keyLen);
- key = Encoding.UTF8.GetString(keyArr);
+
+ /* If an exception occurs in message format decoding,
+ * it is handled by AppHandler
+ */
+
+ // Message Format decipher - Start
+ msgId = BitConverter.ToUInt16(inBuf,0);
+ inMsgLen = BitConverter.ToUInt32(inBuf,2);
+
+ if( inMsgLen != inBuf.Length )
+ throw new FormatException(" MsgLen sent does not match the length of the message received.");
+
+ keyChainIdLen = BitConverter.ToUInt32(inBuf,6);
+
+ byte[] keyChainIdArr = new byte[keyChainIdLen];
+ Array.Copy(inBuf,10,keyChainIdArr,0,keyChainIdLen);
+ keyChainId = Encoding.UTF8.GetString(keyChainIdArr);
+
+ secretIdLen = BitConverter.ToUInt32(inBuf,
+ (10 + (int)keyChainIdLen));
+
+ byte[] secretIdArr = new byte[secretIdLen];
+ Array.Copy(inBuf,(10+keyChainIdLen+4),secretIdArr,0,secretIdLen);
+ secretId = Encoding.UTF8.GetString(secretIdArr);
+ // Message Format decipher - End
+
+ keyLen = BitConverter.ToUInt32(inBuf,(14+(int)keyChainIdLen+(int)secretIdLen));
+
+ byte[] keyArr = new byte[keyLen];
+ Array.Copy(inBuf,(18+(int)keyChainIdLen+(int)secretIdLen),keyArr,0,keyLen);
+ key = Encoding.UTF8.GetString(keyArr);
try
{
// get extension ID
@@ -128,125 +128,125 @@ namespace sscs.verbs
}
SecretStore ssStore;
-
+
if (extId == 1)
{
-#if W32
- CSSSLogger.DbgLog("LUID ExtID found");
- WinUserIdentifier test = (WinUserIdentifier)userId;
- // NOTE: ONLY ALLOW THE SWITCH IF THE CALLER IS "SYSTEM"
- if ((test.GetUIDLow() == 999) && (test.GetUIDHigh() == 0))
- {
-
- // WINDOWS LUID
- // System Services, like DLU create fake UIDs, store credentials and then want to read that data.
- luidLow = BitConverter.ToInt32(inBuf, 18 + ((int)keyChainIdLen) + ((int)secretIdLen) + 8);
- luidHigh = BitConverter.ToInt32(inBuf, 18 + ((int)keyChainIdLen) + ((int)secretIdLen) + 12);
-
- // this code is for ZEN. Here we switch to a keychain who's ID is the LUID of the user logging in.
- // ZEN processes run as system and pass the LUID in the extension parameter.
- keyChainId = luidHigh.ToString() + luidLow.ToString();
- CSSSLogger.DbgLog("ReadBinaryKey: Switching LUID to [" + luidHigh.ToString() + "][" + luidLow.ToString() + "]");
+#if W32
+ CSSSLogger.DbgLog("LUID ExtID found");
+ WinUserIdentifier test = (WinUserIdentifier)userId;
+ // NOTE: ONLY ALLOW THE SWITCH IF THE CALLER IS "SYSTEM"
+ if ((test.GetUIDLow() == 999) && (test.GetUIDHigh() == 0))
+ {
+
+ // WINDOWS LUID
+ // System Services, like DLU create fake UIDs, store credentials and then want to read that data.
+ luidLow = BitConverter.ToInt32(inBuf, 18 + ((int)keyChainIdLen) + ((int)secretIdLen) + 8);
+ luidHigh = BitConverter.ToInt32(inBuf, 18 + ((int)keyChainIdLen) + ((int)secretIdLen) + 12);
+
+ // this code is for ZEN. Here we switch to a keychain who's ID is the LUID of the user logging in.
+ // ZEN processes run as system and pass the LUID in the extension parameter.
+ keyChainId = luidHigh.ToString() + luidLow.ToString();
+ CSSSLogger.DbgLog("ReadBinaryKey: Switching LUID to [" + luidHigh.ToString() + "][" + luidLow.ToString() + "]");
}
#endif
}
- try
- {
- KeyChain keyChain = null;
- // Secret secret = null;
- ssStore = SessionManager.GetUserSecretStore(tempUserId);
- if (!ssStore.IsStoreLocked())
- {
- if( ssStore.CheckIfKeyChainExists(keyChainId) )
- {
- keyChain = ssStore.GetKeyChain(keyChainId);
- if( keyChain.CheckIfSecretExists(secretId) == false)
- {
- retCode = IPCRetCodes.SSCS_E_SECRETID_DOES_NOT_EXIST;
- }
- else
- {
- secret = keyChain.GetSecret(secretId);
- KeyValue kv = secret.GetKeyValue(key);
- if (kv != null)
- {
- val = kv.GetValueAsBytes();
- }
- else
- {
- retCode = IPCRetCodes.SSCS_E_SECRETID_DOES_NOT_EXIST;
- }
- }
- }
- else
- {
- retCode = IPCRetCodes.SSCS_E_KEYCHAIN_DOES_NOT_EXIST;
- }
- }
- else
- retCode = IPCRetCodes.SSCS_SECRET_STORE_IS_LOCKED;
-
- }
- catch(UserNotInSessionException)
- {
- CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable user's secretstore" );
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
-
- try
- {
- msgId = 16;
- if( 0 == retCode )
- {
- valLen = (uint)val.Length;
- outMsgLen = 14 + valLen;
- }
- else
- {
- outMsgLen = 14; //2+4+4+4
- }
-
- outBuf = new byte[outMsgLen];
- byte[] t = new byte[10];
-
- t = BitConverter.GetBytes((ushort)msgId);
- Array.Copy(t,0,outBuf,0,2);
-
- t = BitConverter.GetBytes((uint)outMsgLen);
- Array.Copy(t,0,outBuf,2,4);
-
- t = BitConverter.GetBytes(valLen);
- Array.Copy(t,0,outBuf,6,4);
-
- if( 0 == retCode )
- Array.Copy(val,0,outBuf,10,valLen);
-
- t = BitConverter.GetBytes(retCode);
- Array.Copy(t,0,outBuf,10+valLen,4);
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- throw new FormatException("Unable to form the response " + e.ToString());
- }
- return outBuf;
-
- }
-
- /*
- * Gives the name of operation performed. Will be used in case
- * of error.
- */
- public string GetVerbName()
- {
- CSSSLogger.ExecutionTrace(this);
- return this.ToString();
- }
- }
-}
+ try
+ {
+ KeyChain keyChain = null;
+ // Secret secret = null;
+ ssStore = SessionManager.GetUserSecretStore(tempUserId);
+ if (!ssStore.IsStoreLocked())
+ {
+ if( ssStore.CheckIfKeyChainExists(keyChainId) )
+ {
+ keyChain = ssStore.GetKeyChain(keyChainId);
+ if( keyChain.CheckIfSecretExists(secretId) == false)
+ {
+ retCode = IPCRetCodes.SSCS_E_SECRETID_DOES_NOT_EXIST;
+ }
+ else
+ {
+ secret = keyChain.GetSecret(secretId);
+ KeyValue kv = secret.GetKeyValue(key);
+ if (kv != null)
+ {
+ val = kv.GetValueAsBytes();
+ }
+ else
+ {
+ retCode = IPCRetCodes.SSCS_E_SECRETID_DOES_NOT_EXIST;
+ }
+ }
+ }
+ else
+ {
+ retCode = IPCRetCodes.SSCS_E_KEYCHAIN_DOES_NOT_EXIST;
+ }
+ }
+ else
+ retCode = IPCRetCodes.SSCS_SECRET_STORE_IS_LOCKED;
+
+ }
+ catch(UserNotInSessionException)
+ {
+ CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable user's secretstore" );
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+
+ try
+ {
+ msgId = 16;
+ if( 0 == retCode )
+ {
+ valLen = (uint)val.Length;
+ outMsgLen = 14 + valLen;
+ }
+ else
+ {
+ outMsgLen = 14; //2+4+4+4
+ }
+
+ outBuf = new byte[outMsgLen];
+ byte[] t = new byte[10];
+
+ t = BitConverter.GetBytes((ushort)msgId);
+ Array.Copy(t,0,outBuf,0,2);
+
+ t = BitConverter.GetBytes((uint)outMsgLen);
+ Array.Copy(t,0,outBuf,2,4);
+
+ t = BitConverter.GetBytes(valLen);
+ Array.Copy(t,0,outBuf,6,4);
+
+ if( 0 == retCode )
+ Array.Copy(val,0,outBuf,10,valLen);
+
+ t = BitConverter.GetBytes(retCode);
+ Array.Copy(t,0,outBuf,10+valLen,4);
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ throw new FormatException("Unable to form the response " + e.ToString());
+ }
+ return outBuf;
+
+ }
+
+ /*
+ * Gives the name of operation performed. Will be used in case
+ * of error.
+ */
+ public string GetVerbName()
+ {
+ CSSSLogger.ExecutionTrace(this);
+ return this.ToString();
+ }
+ }
+}
diff --git a/CASA/micasad/verbs/ReadKey.cs b/CASA/micasad/verbs/ReadKey.cs
index e61bb91a..6234dca0 100644
--- a/CASA/micasad/verbs/ReadKey.cs
+++ b/CASA/micasad/verbs/ReadKey.cs
@@ -20,102 +20,102 @@
*
***********************************************************************/
-using System;
-using System.Collections;
-using System.Text;
-using System.Threading;
-using sscs.verbs;
-using sscs.cache;
-using sscs.common;
-using sscs.constants;
-namespace sscs.verbs
-{
-
- /*
- * This class is implementation of ReadKey call.
- * There will be one instance existing for every call made by the client.
- */
-
- internal class ReadKey : SSVerb
- {
- private ushort msgId = 0;
- private uint inMsgLen = 0;
- private uint outMsgLen = 0;
- private uint keyChainIdLen = 0;
- private uint secretIdLen = 0;
- private int retCode = 0;
- private string keyChainId;
- private string secretId;
- private uint keyLen;
- private string key;
- private uint valLen;
- private byte[] val;
-
- //private byte[] secretVal;
-
- private byte[] inBuf;
- private byte[] outBuf;
-
+using System;
+using System.Collections;
+using System.Text;
+using System.Threading;
+using sscs.verbs;
+using sscs.cache;
+using sscs.common;
+using sscs.constants;
+namespace sscs.verbs
+{
+
+ /*
+ * This class is implementation of ReadKey call.
+ * There will be one instance existing for every call made by the client.
+ */
+
+ internal class ReadKey : SSVerb
+ {
+ private ushort msgId = 0;
+ private uint inMsgLen = 0;
+ private uint outMsgLen = 0;
+ private uint keyChainIdLen = 0;
+ private uint secretIdLen = 0;
+ private int retCode = 0;
+ private string keyChainId;
+ private string secretId;
+ private uint keyLen;
+ private string key;
+ private uint valLen;
+ private byte[] val;
+
+ //private byte[] secretVal;
+
+ private byte[] inBuf;
+ private byte[] outBuf;
+
// extension operations
private uint extId = 0;
#if W32
private int luidLow = 0;
private int luidHigh = 0;
-#endif
-
- /*
- * This method sets the class member with the byte array received.
- */
-
- public void SetMessageContent(byte[] ipcBytes)
- {
- CSSSLogger.ExecutionTrace(this);
- inBuf = ipcBytes;
- }
-
- /*
- * This method does the actual implementation of ReadKey
- *
- */
-
- public byte[] ProcessRequest(UserIdentifier userId)
- {
-
- Secret secret = null;
-
- CSSSLogger.ExecutionTrace(this);
- UserIdentifier tempUserId = userId;
-
- /* If an exception occurs in message format decoding,
- * it is handled by AppHandler
- */
-
- // Message Format decipher - Start
- msgId = BitConverter.ToUInt16(inBuf,0);
- inMsgLen = BitConverter.ToUInt32(inBuf,2);
-
- if( inMsgLen != inBuf.Length )
- throw new FormatException(" MsgLen sent does not match the length of the message received.");
-
- keyChainIdLen = BitConverter.ToUInt32(inBuf,6);
-
- byte[] keyChainIdArr = new byte[keyChainIdLen];
- Array.Copy(inBuf,10,keyChainIdArr,0,keyChainIdLen);
- keyChainId = Encoding.UTF8.GetString(keyChainIdArr);
-
- secretIdLen = BitConverter.ToUInt32(inBuf,
- (10 + (int)keyChainIdLen));
-
- byte[] secretIdArr = new byte[secretIdLen];
- Array.Copy(inBuf,(10+keyChainIdLen+4),secretIdArr,0,secretIdLen);
- secretId = Encoding.UTF8.GetString(secretIdArr);
- // Message Format decipher - End
-
- keyLen = BitConverter.ToUInt32(inBuf,(14+(int)keyChainIdLen+(int)secretIdLen));
-
- byte[] keyArr = new byte[keyLen];
- Array.Copy(inBuf,(18+(int)keyChainIdLen+(int)secretIdLen),keyArr,0,keyLen);
- key = Encoding.UTF8.GetString(keyArr);
+#endif
+
+ /*
+ * This method sets the class member with the byte array received.
+ */
+
+ public void SetMessageContent(byte[] ipcBytes)
+ {
+ CSSSLogger.ExecutionTrace(this);
+ inBuf = ipcBytes;
+ }
+
+ /*
+ * This method does the actual implementation of ReadKey
+ *
+ */
+
+ public byte[] ProcessRequest(UserIdentifier userId)
+ {
+
+ Secret secret = null;
+
+ CSSSLogger.ExecutionTrace(this);
+ UserIdentifier tempUserId = userId;
+
+ /* If an exception occurs in message format decoding,
+ * it is handled by AppHandler
+ */
+
+ // Message Format decipher - Start
+ msgId = BitConverter.ToUInt16(inBuf,0);
+ inMsgLen = BitConverter.ToUInt32(inBuf,2);
+
+ if( inMsgLen != inBuf.Length )
+ throw new FormatException(" MsgLen sent does not match the length of the message received.");
+
+ keyChainIdLen = BitConverter.ToUInt32(inBuf,6);
+
+ byte[] keyChainIdArr = new byte[keyChainIdLen];
+ Array.Copy(inBuf,10,keyChainIdArr,0,keyChainIdLen);
+ keyChainId = Encoding.UTF8.GetString(keyChainIdArr);
+
+ secretIdLen = BitConverter.ToUInt32(inBuf,
+ (10 + (int)keyChainIdLen));
+
+ byte[] secretIdArr = new byte[secretIdLen];
+ Array.Copy(inBuf,(10+keyChainIdLen+4),secretIdArr,0,secretIdLen);
+ secretId = Encoding.UTF8.GetString(secretIdArr);
+ // Message Format decipher - End
+
+ keyLen = BitConverter.ToUInt32(inBuf,(14+(int)keyChainIdLen+(int)secretIdLen));
+
+ byte[] keyArr = new byte[keyLen];
+ Array.Copy(inBuf,(18+(int)keyChainIdLen+(int)secretIdLen),keyArr,0,keyLen);
+ key = Encoding.UTF8.GetString(keyArr);
try
{
// get extension ID
@@ -130,124 +130,124 @@ namespace sscs.verbs
SecretStore ssStore;
if (extId == 1)
- {
-#if W32
- CSSSLogger.DbgLog("LUID ExtID found");
- WinUserIdentifier test = (WinUserIdentifier)userId;
- // NOTE: ONLY ALLOW THE SWITCH IF THE CALLER IS "SYSTEM"
- if ((test.GetUIDLow() == 999) && (test.GetUIDHigh() == 0))
- {
-
- // WINDOWS LUID
- // System Services, like DLU create fake UIDs, store credentials and then want to read that data.
- luidLow = BitConverter.ToInt32(inBuf, 18 + ((int)keyChainIdLen) + ((int)secretIdLen) + 8);
- luidHigh = BitConverter.ToInt32(inBuf, 18 + ((int)keyChainIdLen) + ((int)secretIdLen) + 12);
-
- // this code is for ZEN. Here we switch to a keychain who's ID is the LUID of the user logging in.
- // ZEN processes run as system and pass the LUID in the extension parameter.
- keyChainId = luidHigh.ToString() + luidLow.ToString();
- CSSSLogger.DbgLog("ReadKey: Switching LUID to [" + luidHigh.ToString() + "][" + luidLow.ToString() + "]");
- }
+ {
+#if W32
+ CSSSLogger.DbgLog("LUID ExtID found");
+ WinUserIdentifier test = (WinUserIdentifier)userId;
+ // NOTE: ONLY ALLOW THE SWITCH IF THE CALLER IS "SYSTEM"
+ if ((test.GetUIDLow() == 999) && (test.GetUIDHigh() == 0))
+ {
+
+ // WINDOWS LUID
+ // System Services, like DLU create fake UIDs, store credentials and then want to read that data.
+ luidLow = BitConverter.ToInt32(inBuf, 18 + ((int)keyChainIdLen) + ((int)secretIdLen) + 8);
+ luidHigh = BitConverter.ToInt32(inBuf, 18 + ((int)keyChainIdLen) + ((int)secretIdLen) + 12);
+
+ // this code is for ZEN. Here we switch to a keychain who's ID is the LUID of the user logging in.
+ // ZEN processes run as system and pass the LUID in the extension parameter.
+ keyChainId = luidHigh.ToString() + luidLow.ToString();
+ CSSSLogger.DbgLog("ReadKey: Switching LUID to [" + luidHigh.ToString() + "][" + luidLow.ToString() + "]");
+ }
#endif
- }
-
-
- try
- {
-
- KeyChain keyChain = null;
- ssStore = SessionManager.GetUserSecretStore(tempUserId);
-
- if (!ssStore.IsStoreLocked())
- {
- if( ssStore.CheckIfKeyChainExists(keyChainId) )
- {
- keyChain = ssStore.GetKeyChain(keyChainId);
- if( keyChain.CheckIfSecretExists(secretId) == false)
- {
- retCode = IPCRetCodes.SSCS_E_SECRETID_DOES_NOT_EXIST;
- }
- else
- {
- secret = keyChain.GetSecret(secretId);
- KeyValue kv = secret.GetKeyValue(key);
- if ((kv != null) && (kv.GetValue().Length > 0))
- {
- string valStr = secret.GetKeyValue(key).GetValue();
- val = Encoding.UTF8.GetBytes(valStr);
- }
- else
- retCode = IPCRetCodes.SSCS_E_SECRETID_DOES_NOT_EXIST;
- }
- }
- else
- {
- retCode = IPCRetCodes.SSCS_E_KEYCHAIN_DOES_NOT_EXIST;
- }
- }
- else
- retCode = IPCRetCodes.SSCS_SECRET_STORE_IS_LOCKED;
-
- }
- catch(UserNotInSessionException)
- {
- CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable user's secretstore" );
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
-
- try
- {
- msgId = 16;
- if( 0 == retCode )
- {
- valLen = (uint)val.Length;
- outMsgLen = 14 + valLen;
- }
- else
- {
- outMsgLen = 14; //2+4+4+4
- }
-
- outBuf = new byte[outMsgLen];
- byte[] t = new byte[10];
-
- t = BitConverter.GetBytes((ushort)msgId);
- Array.Copy(t,0,outBuf,0,2);
-
- t = BitConverter.GetBytes((uint)outMsgLen);
- Array.Copy(t,0,outBuf,2,4);
-
- t = BitConverter.GetBytes(valLen);
- Array.Copy(t,0,outBuf,6,4);
-
- if( 0 == retCode )
- Array.Copy(val,0,outBuf,10,valLen);
-
- t = BitConverter.GetBytes(retCode);
- Array.Copy(t,0,outBuf,10+valLen,4);
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- throw new FormatException("Unable to form the response " + e.ToString());
- }
- return outBuf;
-
- }
-
- /*
- * Gives the name of operation performed. Will be used in case
- * of error.
- */
- public string GetVerbName()
- {
- CSSSLogger.ExecutionTrace(this);
- return this.ToString();
- }
- }
-}
+ }
+
+
+ try
+ {
+
+ KeyChain keyChain = null;
+ ssStore = SessionManager.GetUserSecretStore(tempUserId);
+
+ if (!ssStore.IsStoreLocked())
+ {
+ if( ssStore.CheckIfKeyChainExists(keyChainId) )
+ {
+ keyChain = ssStore.GetKeyChain(keyChainId);
+ if( keyChain.CheckIfSecretExists(secretId) == false)
+ {
+ retCode = IPCRetCodes.SSCS_E_SECRETID_DOES_NOT_EXIST;
+ }
+ else
+ {
+ secret = keyChain.GetSecret(secretId);
+ KeyValue kv = secret.GetKeyValue(key);
+ if ((kv != null) && (kv.GetValue().Length > 0))
+ {
+ string valStr = secret.GetKeyValue(key).GetValue();
+ val = Encoding.UTF8.GetBytes(valStr);
+ }
+ else
+ retCode = IPCRetCodes.SSCS_E_SECRETID_DOES_NOT_EXIST;
+ }
+ }
+ else
+ {
+ retCode = IPCRetCodes.SSCS_E_KEYCHAIN_DOES_NOT_EXIST;
+ }
+ }
+ else
+ retCode = IPCRetCodes.SSCS_SECRET_STORE_IS_LOCKED;
+
+ }
+ catch(UserNotInSessionException)
+ {
+ CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable user's secretstore" );
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+
+ try
+ {
+ msgId = 16;
+ if( 0 == retCode )
+ {
+ valLen = (uint)val.Length;
+ outMsgLen = 14 + valLen;
+ }
+ else
+ {
+ outMsgLen = 14; //2+4+4+4
+ }
+
+ outBuf = new byte[outMsgLen];
+ byte[] t = new byte[10];
+
+ t = BitConverter.GetBytes((ushort)msgId);
+ Array.Copy(t,0,outBuf,0,2);
+
+ t = BitConverter.GetBytes((uint)outMsgLen);
+ Array.Copy(t,0,outBuf,2,4);
+
+ t = BitConverter.GetBytes(valLen);
+ Array.Copy(t,0,outBuf,6,4);
+
+ if( 0 == retCode )
+ Array.Copy(val,0,outBuf,10,valLen);
+
+ t = BitConverter.GetBytes(retCode);
+ Array.Copy(t,0,outBuf,10+valLen,4);
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ throw new FormatException("Unable to form the response " + e.ToString());
+ }
+ return outBuf;
+
+ }
+
+ /*
+ * Gives the name of operation performed. Will be used in case
+ * of error.
+ */
+ public string GetVerbName()
+ {
+ CSSSLogger.ExecutionTrace(this);
+ return this.ToString();
+ }
+ }
+}
diff --git a/CASA/micasad/verbs/ReadSecret.cs b/CASA/micasad/verbs/ReadSecret.cs
index 077d54dc..98d6868c 100644
--- a/CASA/micasad/verbs/ReadSecret.cs
+++ b/CASA/micasad/verbs/ReadSecret.cs
@@ -20,37 +20,37 @@
*
***********************************************************************/
-using System;
-using System.Collections;
-using System.Text;
-using System.Threading;
-using sscs.verbs;
-using sscs.cache;
-using sscs.common;
-using sscs.constants;
-namespace sscs.verbs
-{
-
- /*
- * This class is implementation of ReadSecret call.
- * There will be one instance existing for every call made by the client.
- */
-
- internal class ReadSecret : SSVerb
- {
- private ushort msgId = 0;
- private uint inMsgLen = 0;
- private uint outMsgLen = 0;
- private uint keyChainIdLen = 0;
- private uint secretIdLen = 0;
- private uint secretValLen = 0;
- private int retCode = 0;
- private string keyChainId;
- private string secretId;
- //private byte[] secretVal;
-
- private byte[] inBuf;
- private byte[] outBuf;
+using System;
+using System.Collections;
+using System.Text;
+using System.Threading;
+using sscs.verbs;
+using sscs.cache;
+using sscs.common;
+using sscs.constants;
+namespace sscs.verbs
+{
+
+ /*
+ * This class is implementation of ReadSecret call.
+ * There will be one instance existing for every call made by the client.
+ */
+
+ internal class ReadSecret : SSVerb
+ {
+ private ushort msgId = 0;
+ private uint inMsgLen = 0;
+ private uint outMsgLen = 0;
+ private uint keyChainIdLen = 0;
+ private uint secretIdLen = 0;
+ private uint secretValLen = 0;
+ private int retCode = 0;
+ private string keyChainId;
+ private string secretId;
+ //private byte[] secretVal;
+
+ private byte[] inBuf;
+ private byte[] outBuf;
// extension operations
private uint extId = 0;
@@ -58,56 +58,56 @@ namespace sscs.verbs
private int luidLow = 0;
private int luidHigh = 0;
#endif
-
- /*
- * This method sets the class member with the byte array received.
- */
-
- public void SetMessageContent(byte[] ipcBytes)
- {
- CSSSLogger.ExecutionTrace(this);
- inBuf = ipcBytes;
- }
-
- /*
- * This method does the actual implementation of ReadSecret
- *
- */
-
- public byte[] ProcessRequest(UserIdentifier userId)
- {
-
- Secret secret = null;
-
- CSSSLogger.ExecutionTrace(this);
+
+ /*
+ * This method sets the class member with the byte array received.
+ */
+
+ public void SetMessageContent(byte[] ipcBytes)
+ {
+ CSSSLogger.ExecutionTrace(this);
+ inBuf = ipcBytes;
+ }
+
+ /*
+ * This method does the actual implementation of ReadSecret
+ *
+ */
+
+ public byte[] ProcessRequest(UserIdentifier userId)
+ {
+
+ Secret secret = null;
+
+ CSSSLogger.ExecutionTrace(this);
UserIdentifier tempUserId = userId;
-
- /* If an exception occurs in message format decoding,
- * it is handled by AppHandler
- */
-
- // Message Format decipher - Start
- msgId = BitConverter.ToUInt16(inBuf,0);
- inMsgLen = BitConverter.ToUInt32(inBuf,2);
-
- if( inMsgLen != inBuf.Length )
- throw new FormatException(" MsgLen sent does not match the length of the message received.");
-
- keyChainIdLen = BitConverter.ToUInt32(inBuf,6);
-
- byte[] keyChainIdArr = new byte[keyChainIdLen];
- Array.Copy(inBuf,10,keyChainIdArr,0,keyChainIdLen);
- keyChainId = Encoding.UTF8.GetString(keyChainIdArr);
-
- secretIdLen = BitConverter.ToUInt32(inBuf,
- (10 + (int)keyChainIdLen));
-
- byte[] secretIdArr = new byte[secretIdLen];
- Array.Copy(inBuf,(10+keyChainIdLen+4),secretIdArr,0,secretIdLen);
- secretId = Encoding.UTF8.GetString(secretIdArr);
-
- // Message Format decipher - End
-
+
+ /* If an exception occurs in message format decoding,
+ * it is handled by AppHandler
+ */
+
+ // Message Format decipher - Start
+ msgId = BitConverter.ToUInt16(inBuf,0);
+ inMsgLen = BitConverter.ToUInt32(inBuf,2);
+
+ if( inMsgLen != inBuf.Length )
+ throw new FormatException(" MsgLen sent does not match the length of the message received.");
+
+ keyChainIdLen = BitConverter.ToUInt32(inBuf,6);
+
+ byte[] keyChainIdArr = new byte[keyChainIdLen];
+ Array.Copy(inBuf,10,keyChainIdArr,0,keyChainIdLen);
+ keyChainId = Encoding.UTF8.GetString(keyChainIdArr);
+
+ secretIdLen = BitConverter.ToUInt32(inBuf,
+ (10 + (int)keyChainIdLen));
+
+ byte[] secretIdArr = new byte[secretIdLen];
+ Array.Copy(inBuf,(10+keyChainIdLen+4),secretIdArr,0,secretIdLen);
+ secretId = Encoding.UTF8.GetString(secretIdArr);
+
+ // Message Format decipher - End
+
try
{
// get extension ID
@@ -119,12 +119,12 @@ namespace sscs.verbs
//CSSSLogger.ExpLog(e.ToString());
}
- SecretStore ssStore;
+ SecretStore ssStore;
CSSSLogger.DbgLog("Reading Secret ID: " + secretId);
if (extId == 1)
{
-#if W32
+#if W32
CSSSLogger.DbgLog("LUID ExtID found");
WinUserIdentifier test = (WinUserIdentifier)userId;
// NOTE: ONLY ALLOW THE SWITCH IF THE CALLER IS "SYSTEM"
@@ -134,108 +134,108 @@ namespace sscs.verbs
// WINDOWS LUID
// System Services, like DLU create fake UIDs, store credentials and then want to read that data.
luidLow = BitConverter.ToInt32(inBuf, 18 + ((int)keyChainIdLen)+((int)secretIdLen) + 8);
- luidHigh = BitConverter.ToInt32(inBuf, 18 + ((int)keyChainIdLen)+((int)secretIdLen) + 12);
-
- // this code is for ZEN. Here we switch to a keychain who's ID is the LUID of the user logging in.
- // ZEN processes run as system and pass the LUID in the extension parameter.
- keyChainId = luidHigh.ToString() + luidLow.ToString();
+ luidHigh = BitConverter.ToInt32(inBuf, 18 + ((int)keyChainIdLen)+((int)secretIdLen) + 12);
+
+ // this code is for ZEN. Here we switch to a keychain who's ID is the LUID of the user logging in.
+ // ZEN processes run as system and pass the LUID in the extension parameter.
+ keyChainId = luidHigh.ToString() + luidLow.ToString();
CSSSLogger.DbgLog("ReadSecret: Switching LUID to [" + luidHigh.ToString() + "][" + luidLow.ToString() + "]");
}
#endif
}
- try
- {
- KeyChain keyChain = null;
- // Secret secret = null;
- ssStore = SessionManager.GetUserSecretStore(tempUserId);
-
- if (!ssStore.IsStoreLocked())
- {
- if( ssStore.CheckIfKeyChainExists(keyChainId) )
- {
- keyChain = ssStore.GetKeyChain(keyChainId);
- if( keyChain.CheckIfSecretExists(secretId) == false)
- {
- retCode = IPCRetCodes.SSCS_E_SECRETID_DOES_NOT_EXIST;
- }
- else
- {
- secret = keyChain.GetSecret(secretId);
- }
- }
- else
- {
- retCode = IPCRetCodes.SSCS_E_KEYCHAIN_DOES_NOT_EXIST;
- }
- }
- else
- retCode = IPCRetCodes.SSCS_SECRET_STORE_IS_LOCKED;
-
- }
- catch(UserNotInSessionException)
- {
- CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable user's secretstore" );
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
-
- try
- {
- msgId = 8;
- uint secretValLen = 0;
- byte[] baSecretValue = new byte[0];
-
- if( 0 == retCode )
- {
- baSecretValue = secret.GetValue(secretId);
- secretValLen = (uint)baSecretValue.Length;
- outMsgLen = 14 + secretValLen;
- }
- else
- {
- outMsgLen = 14; //2+4+4+4
- }
-
- outBuf = new byte[outMsgLen];
- byte[] t = new byte[10];
-
- t = BitConverter.GetBytes((ushort)msgId);
- Array.Copy(t,0,outBuf,0,2);
-
- t = BitConverter.GetBytes((uint)outMsgLen);
- Array.Copy(t,0,outBuf,2,4);
-
- t = BitConverter.GetBytes(secretValLen);
- Array.Copy(t,0,outBuf,6,4);
-
- if( 0 == retCode )
- Array.Copy(baSecretValue,0,outBuf,10,secretValLen);
-
- t = BitConverter.GetBytes(retCode);
- Array.Copy(t,0,outBuf,10+secretValLen,4);
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- throw new FormatException("Unable to form the response " + e.ToString());
- }
-
- return outBuf;
-
- }
-
- /*
- * Gives the name of operation performed. Will be used in case
- * of error.
- */
- public string GetVerbName()
- {
- CSSSLogger.ExecutionTrace(this);
- return this.ToString();
- }
- }
-}
+ try
+ {
+ KeyChain keyChain = null;
+ // Secret secret = null;
+ ssStore = SessionManager.GetUserSecretStore(tempUserId);
+
+ if (!ssStore.IsStoreLocked())
+ {
+ if( ssStore.CheckIfKeyChainExists(keyChainId) )
+ {
+ keyChain = ssStore.GetKeyChain(keyChainId);
+ if( keyChain.CheckIfSecretExists(secretId) == false)
+ {
+ retCode = IPCRetCodes.SSCS_E_SECRETID_DOES_NOT_EXIST;
+ }
+ else
+ {
+ secret = keyChain.GetSecret(secretId);
+ }
+ }
+ else
+ {
+ retCode = IPCRetCodes.SSCS_E_KEYCHAIN_DOES_NOT_EXIST;
+ }
+ }
+ else
+ retCode = IPCRetCodes.SSCS_SECRET_STORE_IS_LOCKED;
+
+ }
+ catch(UserNotInSessionException)
+ {
+ CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable user's secretstore" );
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+
+ try
+ {
+ msgId = 8;
+ uint secretValLen = 0;
+ byte[] baSecretValue = new byte[0];
+
+ if( 0 == retCode )
+ {
+ baSecretValue = secret.GetValue(secretId);
+ secretValLen = (uint)baSecretValue.Length;
+ outMsgLen = 14 + secretValLen;
+ }
+ else
+ {
+ outMsgLen = 14; //2+4+4+4
+ }
+
+ outBuf = new byte[outMsgLen];
+ byte[] t = new byte[10];
+
+ t = BitConverter.GetBytes((ushort)msgId);
+ Array.Copy(t,0,outBuf,0,2);
+
+ t = BitConverter.GetBytes((uint)outMsgLen);
+ Array.Copy(t,0,outBuf,2,4);
+
+ t = BitConverter.GetBytes(secretValLen);
+ Array.Copy(t,0,outBuf,6,4);
+
+ if( 0 == retCode )
+ Array.Copy(baSecretValue,0,outBuf,10,secretValLen);
+
+ t = BitConverter.GetBytes(retCode);
+ Array.Copy(t,0,outBuf,10+secretValLen,4);
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ throw new FormatException("Unable to form the response " + e.ToString());
+ }
+
+ return outBuf;
+
+ }
+
+ /*
+ * Gives the name of operation performed. Will be used in case
+ * of error.
+ */
+ public string GetVerbName()
+ {
+ CSSSLogger.ExecutionTrace(this);
+ return this.ToString();
+ }
+ }
+}
diff --git a/CASA/micasad/verbs/RemoveKey.cs b/CASA/micasad/verbs/RemoveKey.cs
index 09bd91e5..a32591d0 100644
--- a/CASA/micasad/verbs/RemoveKey.cs
+++ b/CASA/micasad/verbs/RemoveKey.cs
@@ -20,100 +20,100 @@
*
***********************************************************************/
-using System;
-using System.Collections;
-using System.Text;
-using System.Threading;
-using sscs.verbs;
-using sscs.cache;
-using sscs.common;
-using sscs.constants;
-namespace sscs.verbs
-{
-
- /*
- * This class is implementation of ReadKey call.
- * There will be one instance existing for every call made by the client.
- */
-
- internal class RemoveKey : SSVerb
- {
- private ushort msgId = 0;
- private uint inMsgLen = 0;
- private uint outMsgLen = 0;
- private uint keyChainIdLen = 0;
- private uint secretIdLen = 0;
- private int retCode = 0;
- private string keyChainId;
- private string secretId;
- private uint keyLen;
- private string key;
-
- private byte[] inBuf;
- private byte[] outBuf;
-
+using System;
+using System.Collections;
+using System.Text;
+using System.Threading;
+using sscs.verbs;
+using sscs.cache;
+using sscs.common;
+using sscs.constants;
+namespace sscs.verbs
+{
+
+ /*
+ * This class is implementation of ReadKey call.
+ * There will be one instance existing for every call made by the client.
+ */
+
+ internal class RemoveKey : SSVerb
+ {
+ private ushort msgId = 0;
+ private uint inMsgLen = 0;
+ private uint outMsgLen = 0;
+ private uint keyChainIdLen = 0;
+ private uint secretIdLen = 0;
+ private int retCode = 0;
+ private string keyChainId;
+ private string secretId;
+ private uint keyLen;
+ private string key;
+
+ private byte[] inBuf;
+ private byte[] outBuf;
+
// extension operations
private uint extId = 0;
#if W32
private int luidLow = 0;
private int luidHigh = 0;
-#endif
-
- /*
- * This method sets the class member with the byte array received.
- */
-
- public void SetMessageContent(byte[] ipcBytes)
- {
- CSSSLogger.ExecutionTrace(this);
- inBuf = ipcBytes;
- }
-
- /*
- * This method does the actual implementation of ReadKey
- *
- */
-
- public byte[] ProcessRequest(UserIdentifier userId)
- {
-
- Secret secret = null;
-
- CSSSLogger.ExecutionTrace(this);
-
- /* If an exception occurs in message format decoding,
- * it is handled by AppHandler
- */
-
- UserIdentifier tempUserId = userId;
-
- // Message Format decipher - Start
- msgId = BitConverter.ToUInt16(inBuf,0);
- inMsgLen = BitConverter.ToUInt32(inBuf,2);
-
- if( inMsgLen != inBuf.Length )
- throw new FormatException(" MsgLen sent does not match the length of the message received.");
-
- keyChainIdLen = BitConverter.ToUInt32(inBuf,6);
-
- byte[] keyChainIdArr = new byte[keyChainIdLen];
- Array.Copy(inBuf,10,keyChainIdArr,0,keyChainIdLen);
- keyChainId = Encoding.UTF8.GetString(keyChainIdArr);
-
- secretIdLen = BitConverter.ToUInt32(inBuf,
- (10 + (int)keyChainIdLen));
-
- byte[] secretIdArr = new byte[secretIdLen];
- Array.Copy(inBuf,(10+keyChainIdLen+4),secretIdArr,0,secretIdLen);
- secretId = Encoding.UTF8.GetString(secretIdArr);
- // Message Format decipher - End
-
- keyLen = BitConverter.ToUInt32(inBuf,(14+(int)keyChainIdLen+(int)secretIdLen));
-
- byte[] keyArr = new byte[keyLen];
- Array.Copy(inBuf,(18+(int)keyChainIdLen+(int)secretIdLen),keyArr,0,keyLen);
- key = Encoding.UTF8.GetString(keyArr);
-
+#endif
+
+ /*
+ * This method sets the class member with the byte array received.
+ */
+
+ public void SetMessageContent(byte[] ipcBytes)
+ {
+ CSSSLogger.ExecutionTrace(this);
+ inBuf = ipcBytes;
+ }
+
+ /*
+ * This method does the actual implementation of ReadKey
+ *
+ */
+
+ public byte[] ProcessRequest(UserIdentifier userId)
+ {
+
+ Secret secret = null;
+
+ CSSSLogger.ExecutionTrace(this);
+
+ /* If an exception occurs in message format decoding,
+ * it is handled by AppHandler
+ */
+
+ UserIdentifier tempUserId = userId;
+
+ // Message Format decipher - Start
+ msgId = BitConverter.ToUInt16(inBuf,0);
+ inMsgLen = BitConverter.ToUInt32(inBuf,2);
+
+ if( inMsgLen != inBuf.Length )
+ throw new FormatException(" MsgLen sent does not match the length of the message received.");
+
+ keyChainIdLen = BitConverter.ToUInt32(inBuf,6);
+
+ byte[] keyChainIdArr = new byte[keyChainIdLen];
+ Array.Copy(inBuf,10,keyChainIdArr,0,keyChainIdLen);
+ keyChainId = Encoding.UTF8.GetString(keyChainIdArr);
+
+ secretIdLen = BitConverter.ToUInt32(inBuf,
+ (10 + (int)keyChainIdLen));
+
+ byte[] secretIdArr = new byte[secretIdLen];
+ Array.Copy(inBuf,(10+keyChainIdLen+4),secretIdArr,0,secretIdLen);
+ secretId = Encoding.UTF8.GetString(secretIdArr);
+ // Message Format decipher - End
+
+ keyLen = BitConverter.ToUInt32(inBuf,(14+(int)keyChainIdLen+(int)secretIdLen));
+
+ byte[] keyArr = new byte[keyLen];
+ Array.Copy(inBuf,(18+(int)keyChainIdLen+(int)secretIdLen),keyArr,0,keyLen);
+ key = Encoding.UTF8.GetString(keyArr);
+
try
{
// get extension ID
@@ -126,116 +126,116 @@ namespace sscs.verbs
}
if (extId == 1)
- {
-#if W32
- CSSSLogger.DbgLog("LUID ExtID found");
- WinUserIdentifier test = (WinUserIdentifier)userId;
- // NOTE: ONLY ALLOW THE SWITCH IF THE CALLER IS "SYSTEM"
- if ((test.GetUIDLow() == 999) && (test.GetUIDHigh() == 0))
- {
-
- // WINDOWS LUID
- // System Services, like DLU create fake UIDs, store credentials and then want to read that data.
- luidLow = BitConverter.ToInt32(inBuf, 18 + ((int)keyChainIdLen) + ((int)secretIdLen) + 8);
- luidHigh = BitConverter.ToInt32(inBuf, 18 + ((int)keyChainIdLen) + ((int)secretIdLen) + 12);
-
- // this code is for ZEN. Here we switch to a keychain who's ID is the LUID of the user logging in.
- // ZEN processes run as system and pass the LUID in the extension parameter.
- keyChainId = luidHigh.ToString() + luidLow.ToString();
- CSSSLogger.DbgLog("ReadSecret: Switching LUID to [" + luidHigh.ToString() + "][" + luidLow.ToString() + "]");
- }
+ {
+#if W32
+ CSSSLogger.DbgLog("LUID ExtID found");
+ WinUserIdentifier test = (WinUserIdentifier)userId;
+ // NOTE: ONLY ALLOW THE SWITCH IF THE CALLER IS "SYSTEM"
+ if ((test.GetUIDLow() == 999) && (test.GetUIDHigh() == 0))
+ {
+
+ // WINDOWS LUID
+ // System Services, like DLU create fake UIDs, store credentials and then want to read that data.
+ luidLow = BitConverter.ToInt32(inBuf, 18 + ((int)keyChainIdLen) + ((int)secretIdLen) + 8);
+ luidHigh = BitConverter.ToInt32(inBuf, 18 + ((int)keyChainIdLen) + ((int)secretIdLen) + 12);
+
+ // this code is for ZEN. Here we switch to a keychain who's ID is the LUID of the user logging in.
+ // ZEN processes run as system and pass the LUID in the extension parameter.
+ keyChainId = luidHigh.ToString() + luidLow.ToString();
+ CSSSLogger.DbgLog("ReadSecret: Switching LUID to [" + luidHigh.ToString() + "][" + luidLow.ToString() + "]");
+ }
#endif
}
-
-
- try
- {
- KeyChain keyChain = null;
- // Secret secret = null;
- SecretStore ssStore = SessionManager.GetUserSecretStore(tempUserId);
- if (!ssStore.IsStoreLocked())
- {
- if( ssStore.CheckIfKeyChainExists(keyChainId) )
- {
- keyChain = ssStore.GetKeyChain(keyChainId);
- if( keyChain.CheckIfSecretExists(secretId) == false)
- {
- retCode = IPCRetCodes.SSCS_E_SECRETID_DOES_NOT_EXIST;
- }
- else
- {
- secret = keyChain.GetSecret(secretId);
- if (secret != null)
- {
- try
- {
- secret.RemoveKeyValue(keyChain, key);
- }
- catch (Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- }
- }
- else
- {
- retCode = IPCRetCodes.SSCS_E_SECRETID_DOES_NOT_EXIST;
- }
- }
- }
- else
- {
- retCode = IPCRetCodes.SSCS_E_KEYCHAIN_DOES_NOT_EXIST;
- }
- }
- else
- retCode = IPCRetCodes.SSCS_SECRET_STORE_IS_LOCKED;
-
- }
- catch(UserNotInSessionException)
- {
- CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable user's secretstore" );
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
-
- // Construct a Reply
- try
- {
- msgId = 17;
- outMsgLen = 10;
- outBuf = new byte[outMsgLen];
- byte[] t = new byte[10];
-
- t = BitConverter.GetBytes((ushort)msgId);
- Array.Copy(t, 0, outBuf, 0, 2);
-
- t = BitConverter.GetBytes((uint)outMsgLen);
- Array.Copy(t, 0, outBuf, 2, 4);
-
- t = BitConverter.GetBytes(retCode);
- Array.Copy(t, 0, outBuf, 6, 4);
- }
- catch (Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- throw new FormatException("Unable to form the response " + e.ToString());
- }
- return outBuf;
-
- }
-
- /*
- * Gives the name of operation performed. Will be used in case
- * of error.
- */
- public string GetVerbName()
- {
- CSSSLogger.ExecutionTrace(this);
- return this.ToString();
- }
- }
-}
+
+
+ try
+ {
+ KeyChain keyChain = null;
+ // Secret secret = null;
+ SecretStore ssStore = SessionManager.GetUserSecretStore(tempUserId);
+ if (!ssStore.IsStoreLocked())
+ {
+ if( ssStore.CheckIfKeyChainExists(keyChainId) )
+ {
+ keyChain = ssStore.GetKeyChain(keyChainId);
+ if( keyChain.CheckIfSecretExists(secretId) == false)
+ {
+ retCode = IPCRetCodes.SSCS_E_SECRETID_DOES_NOT_EXIST;
+ }
+ else
+ {
+ secret = keyChain.GetSecret(secretId);
+ if (secret != null)
+ {
+ try
+ {
+ secret.RemoveKeyValue(keyChain, key);
+ }
+ catch (Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ }
+ }
+ else
+ {
+ retCode = IPCRetCodes.SSCS_E_SECRETID_DOES_NOT_EXIST;
+ }
+ }
+ }
+ else
+ {
+ retCode = IPCRetCodes.SSCS_E_KEYCHAIN_DOES_NOT_EXIST;
+ }
+ }
+ else
+ retCode = IPCRetCodes.SSCS_SECRET_STORE_IS_LOCKED;
+
+ }
+ catch(UserNotInSessionException)
+ {
+ CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable user's secretstore" );
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+
+ // Construct a Reply
+ try
+ {
+ msgId = 17;
+ outMsgLen = 10;
+ outBuf = new byte[outMsgLen];
+ byte[] t = new byte[10];
+
+ t = BitConverter.GetBytes((ushort)msgId);
+ Array.Copy(t, 0, outBuf, 0, 2);
+
+ t = BitConverter.GetBytes((uint)outMsgLen);
+ Array.Copy(t, 0, outBuf, 2, 4);
+
+ t = BitConverter.GetBytes(retCode);
+ Array.Copy(t, 0, outBuf, 6, 4);
+ }
+ catch (Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ throw new FormatException("Unable to form the response " + e.ToString());
+ }
+ return outBuf;
+
+ }
+
+ /*
+ * Gives the name of operation performed. Will be used in case
+ * of error.
+ */
+ public string GetVerbName()
+ {
+ CSSSLogger.ExecutionTrace(this);
+ return this.ToString();
+ }
+ }
+}
diff --git a/CASA/micasad/verbs/RemoveKeyChain.cs b/CASA/micasad/verbs/RemoveKeyChain.cs
index c3a6ec4f..6d58d425 100644
--- a/CASA/micasad/verbs/RemoveKeyChain.cs
+++ b/CASA/micasad/verbs/RemoveKeyChain.cs
@@ -20,131 +20,131 @@
*
***********************************************************************/
-using System;
-using System.Collections;
-using System.Text;
-using System.Threading;
-using sscs.verbs;
-using sscs.common;
-using sscs.constants;
-using sscs.cache;
-namespace sscs.verbs
-{
-
- /*
- * This class is implementation of RemoveKeyChain call.
- * There will be one instance existing for every call made by the client.
- */
-
- internal class RemoveKeyChain : SSVerb
- {
- private ushort msgId = 0;
- private uint inMsgLen = 0;
- private uint outMsgLen = 0;
- private uint keyChainIdLen = 0;
- private string keyChainId;
- private int retCode = 0;
- private byte[] inBuf;
-
- private byte[] outBuf;
-
- /*
- * This method sets the class member with the byte array received.
- */
-
- public void SetMessageContent(byte[] ipcBytes)
- {
- CSSSLogger.ExecutionTrace(this);
- inBuf = ipcBytes;
- }
-
- /*
- * This method does the actual implementation of RemoveKeyChain
- *
- */
-
- public byte[] ProcessRequest(UserIdentifier userId)
- {
- CSSSLogger.ExecutionTrace(this);
-
- /* If an exception occurs in message format decoding,
- * it is handled by AppHandler
- */
-
- // Message Format decipher - Start
- msgId = BitConverter.ToUInt16(inBuf,0);
- inMsgLen = BitConverter.ToUInt32(inBuf,2);
- if( inMsgLen != inBuf.Length )
- throw new FormatException(" MsgLen sent does not match the length of the message received.");
-
-
- keyChainIdLen = BitConverter.ToUInt32(inBuf,6);
-
- byte[] keyChainIdArr = new byte[keyChainIdLen];
- Array.Copy(inBuf,10,keyChainIdArr,0,keyChainIdLen);
- keyChainId = Encoding.UTF8.GetString(keyChainIdArr);
- // Message Format decipher - End
-
- try
- {
- SecretStore ssStore = null;
- ssStore = SessionManager.GetUserSecretStore(userId);
-
- if( ssStore.CheckIfKeyChainExists(keyChainId) )
- {
- ssStore.RemoveKeyChain(keyChainId);
- }
- else
- {
- retCode = IPCRetCodes.SSCS_E_KEYCHAIN_DOES_NOT_EXIST;
- }
- }
- catch(UserNotInSessionException)
- {
- CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable to get user's secretstore" );
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
-
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
-
- try
- {
- msgId = 6;
- outMsgLen = 10;
- outBuf = new byte[10];
- byte[] t = new byte[10];
-
- t = BitConverter.GetBytes((ushort)msgId);
- Array.Copy(t,0,outBuf,0,2);
-
- t = BitConverter.GetBytes((uint)outMsgLen);
- Array.Copy(t,0,outBuf,2,4);
-
- t = BitConverter.GetBytes(retCode);
- Array.Copy(t,0,outBuf,6,4);
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- throw new FormatException("Unable to form the response " + e.ToString());
- }
-
- return outBuf;
-
- }
-
- /*
- * Gives the name of operation performed. Will be used in case
- * of error.
- */
- public string GetVerbName()
- {
- CSSSLogger.ExecutionTrace(this);
- return this.ToString();
- }
- }
-}
+using System;
+using System.Collections;
+using System.Text;
+using System.Threading;
+using sscs.verbs;
+using sscs.common;
+using sscs.constants;
+using sscs.cache;
+namespace sscs.verbs
+{
+
+ /*
+ * This class is implementation of RemoveKeyChain call.
+ * There will be one instance existing for every call made by the client.
+ */
+
+ internal class RemoveKeyChain : SSVerb
+ {
+ private ushort msgId = 0;
+ private uint inMsgLen = 0;
+ private uint outMsgLen = 0;
+ private uint keyChainIdLen = 0;
+ private string keyChainId;
+ private int retCode = 0;
+ private byte[] inBuf;
+
+ private byte[] outBuf;
+
+ /*
+ * This method sets the class member with the byte array received.
+ */
+
+ public void SetMessageContent(byte[] ipcBytes)
+ {
+ CSSSLogger.ExecutionTrace(this);
+ inBuf = ipcBytes;
+ }
+
+ /*
+ * This method does the actual implementation of RemoveKeyChain
+ *
+ */
+
+ public byte[] ProcessRequest(UserIdentifier userId)
+ {
+ CSSSLogger.ExecutionTrace(this);
+
+ /* If an exception occurs in message format decoding,
+ * it is handled by AppHandler
+ */
+
+ // Message Format decipher - Start
+ msgId = BitConverter.ToUInt16(inBuf,0);
+ inMsgLen = BitConverter.ToUInt32(inBuf,2);
+ if( inMsgLen != inBuf.Length )
+ throw new FormatException(" MsgLen sent does not match the length of the message received.");
+
+
+ keyChainIdLen = BitConverter.ToUInt32(inBuf,6);
+
+ byte[] keyChainIdArr = new byte[keyChainIdLen];
+ Array.Copy(inBuf,10,keyChainIdArr,0,keyChainIdLen);
+ keyChainId = Encoding.UTF8.GetString(keyChainIdArr);
+ // Message Format decipher - End
+
+ try
+ {
+ SecretStore ssStore = null;
+ ssStore = SessionManager.GetUserSecretStore(userId);
+
+ if( ssStore.CheckIfKeyChainExists(keyChainId) )
+ {
+ ssStore.RemoveKeyChain(keyChainId);
+ }
+ else
+ {
+ retCode = IPCRetCodes.SSCS_E_KEYCHAIN_DOES_NOT_EXIST;
+ }
+ }
+ catch(UserNotInSessionException)
+ {
+ CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable to get user's secretstore" );
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+
+ try
+ {
+ msgId = 6;
+ outMsgLen = 10;
+ outBuf = new byte[10];
+ byte[] t = new byte[10];
+
+ t = BitConverter.GetBytes((ushort)msgId);
+ Array.Copy(t,0,outBuf,0,2);
+
+ t = BitConverter.GetBytes((uint)outMsgLen);
+ Array.Copy(t,0,outBuf,2,4);
+
+ t = BitConverter.GetBytes(retCode);
+ Array.Copy(t,0,outBuf,6,4);
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ throw new FormatException("Unable to form the response " + e.ToString());
+ }
+
+ return outBuf;
+
+ }
+
+ /*
+ * Gives the name of operation performed. Will be used in case
+ * of error.
+ */
+ public string GetVerbName()
+ {
+ CSSSLogger.ExecutionTrace(this);
+ return this.ToString();
+ }
+ }
+}
diff --git a/CASA/micasad/verbs/RemoveSecret.cs b/CASA/micasad/verbs/RemoveSecret.cs
index 5dbd55c7..29882729 100644
--- a/CASA/micasad/verbs/RemoveSecret.cs
+++ b/CASA/micasad/verbs/RemoveSecret.cs
@@ -20,94 +20,94 @@
*
***********************************************************************/
-using System;
-using System.Collections;
-using System.Text;
-using System.Threading;
-using sscs.verbs;
-using sscs.common;
-using sscs.cache;
-using sscs.constants;
-
-namespace sscs.verbs
-{
-
- /*
- * This class is implementation of RemoveSecret call.
- * There will be one instance existing for every call made by the client.
- */
-
- internal class RemoveSecret : SSVerb
- {
- private ushort msgId = 0;
- private uint inMsgLen = 0;
- private uint outMsgLen = 0;
- private uint keyChainIdLen = 0;
- private uint secretIdLen = 0;
- private int retCode = 0;
- private string keyChainId;
- private string secretId;
-
- private byte[] inBuf;
- private byte[] outBuf;
-
+using System;
+using System.Collections;
+using System.Text;
+using System.Threading;
+using sscs.verbs;
+using sscs.common;
+using sscs.cache;
+using sscs.constants;
+
+namespace sscs.verbs
+{
+
+ /*
+ * This class is implementation of RemoveSecret call.
+ * There will be one instance existing for every call made by the client.
+ */
+
+ internal class RemoveSecret : SSVerb
+ {
+ private ushort msgId = 0;
+ private uint inMsgLen = 0;
+ private uint outMsgLen = 0;
+ private uint keyChainIdLen = 0;
+ private uint secretIdLen = 0;
+ private int retCode = 0;
+ private string keyChainId;
+ private string secretId;
+
+ private byte[] inBuf;
+ private byte[] outBuf;
+
// extension operations
private uint extId = 0;
#if W32
private int luidLow = 0;
private int luidHigh = 0;
-#endif
-
- /*
- * This method sets the class member with the byte array received.
- */
-
- public void SetMessageContent(byte[] ipcBytes)
- {
- CSSSLogger.ExecutionTrace(this);
- inBuf = ipcBytes;
- }
-
- /*
- * This method does the actual implementation of RemoveSecret
- *
- */
-
- public byte[] ProcessRequest(UserIdentifier userId)
- {
-
- CSSSLogger.ExecutionTrace(this);
-
- UserIdentifier tempUserId = userId;
-
- /* If an exception occurs in message format decoding,
- * it is handled by AppHandler
- */
-
- // Message Format decipher - Start
- msgId = BitConverter.ToUInt16(inBuf,0);
- inMsgLen = BitConverter.ToUInt32(inBuf,2);
- if( inMsgLen != inBuf.Length )
- throw new FormatException(" MsgLen sent does not match the length of the message received.");
-
-
- keyChainIdLen = BitConverter.ToUInt32(inBuf,6);
-
- byte[] keyChainIdArr = new byte[keyChainIdLen];
- Array.Copy(inBuf,10,keyChainIdArr,0,keyChainIdLen);
- keyChainId = Encoding.UTF8.GetString(keyChainIdArr);
-
- secretIdLen = BitConverter.ToUInt32(inBuf,
- (10 + (int)keyChainIdLen));
-
- byte[] secretIdArr = new byte[secretIdLen];
- Array.Copy(inBuf,(10+keyChainIdLen+4),secretIdArr,0,secretIdLen);
- secretId = Encoding.UTF8.GetString(secretIdArr);
-
- CSSSLogger.DbgLog("Deleting secret id: " + secretId);
-
+#endif
+
+ /*
+ * This method sets the class member with the byte array received.
+ */
+
+ public void SetMessageContent(byte[] ipcBytes)
+ {
+ CSSSLogger.ExecutionTrace(this);
+ inBuf = ipcBytes;
+ }
+
+ /*
+ * This method does the actual implementation of RemoveSecret
+ *
+ */
+
+ public byte[] ProcessRequest(UserIdentifier userId)
+ {
+
+ CSSSLogger.ExecutionTrace(this);
+
+ UserIdentifier tempUserId = userId;
+
+ /* If an exception occurs in message format decoding,
+ * it is handled by AppHandler
+ */
+
+ // Message Format decipher - Start
+ msgId = BitConverter.ToUInt16(inBuf,0);
+ inMsgLen = BitConverter.ToUInt32(inBuf,2);
+ if( inMsgLen != inBuf.Length )
+ throw new FormatException(" MsgLen sent does not match the length of the message received.");
+
+
+ keyChainIdLen = BitConverter.ToUInt32(inBuf,6);
+
+ byte[] keyChainIdArr = new byte[keyChainIdLen];
+ Array.Copy(inBuf,10,keyChainIdArr,0,keyChainIdLen);
+ keyChainId = Encoding.UTF8.GetString(keyChainIdArr);
+
+ secretIdLen = BitConverter.ToUInt32(inBuf,
+ (10 + (int)keyChainIdLen));
+
+ byte[] secretIdArr = new byte[secretIdLen];
+ Array.Copy(inBuf,(10+keyChainIdLen+4),secretIdArr,0,secretIdLen);
+ secretId = Encoding.UTF8.GetString(secretIdArr);
+
+ CSSSLogger.DbgLog("Deleting secret id: " + secretId);
+
try
- {
+ {
CSSSLogger.DbgLog("Looking for extention");
// get extension ID
int extLocation = 18 + ((int)keyChainIdLen) + ((int)secretIdLen);
@@ -116,107 +116,107 @@ namespace sscs.verbs
catch (Exception)
{
//CSSSLogger.ExpLog(e.ToString());
- }
-
+ }
+
if (extId == 1)
- {
-#if W32
- CSSSLogger.DbgLog("LUID ExtID found");
- WinUserIdentifier test = (WinUserIdentifier)userId;
- // NOTE: ONLY ALLOW THE SWITCH IF THE CALLER IS "SYSTEM"
- if ((test.GetUIDLow() == 999) && (test.GetUIDHigh() == 0))
- {
-
- // WINDOWS LUID
- // System Services, like DLU create fake UIDs, store credentials and then want to read that data.
- luidLow = BitConverter.ToInt32(inBuf, 18 + ((int)keyChainIdLen) + ((int)secretIdLen) + 8);
- luidHigh = BitConverter.ToInt32(inBuf, 18 + ((int)keyChainIdLen) + ((int)secretIdLen) + 12);
-
- // this code is for ZEN. Here we switch to a keychain who's ID is the LUID of the user logging in.
- // ZEN processes run as system and pass the LUID in the extension parameter.
- keyChainId = luidHigh.ToString() + luidLow.ToString();
- CSSSLogger.DbgLog("ReadSecret: Switching LUID to [" + luidHigh.ToString() + "][" + luidLow.ToString() + "]");
- }
+ {
+#if W32
+ CSSSLogger.DbgLog("LUID ExtID found");
+ WinUserIdentifier test = (WinUserIdentifier)userId;
+ // NOTE: ONLY ALLOW THE SWITCH IF THE CALLER IS "SYSTEM"
+ if ((test.GetUIDLow() == 999) && (test.GetUIDHigh() == 0))
+ {
+
+ // WINDOWS LUID
+ // System Services, like DLU create fake UIDs, store credentials and then want to read that data.
+ luidLow = BitConverter.ToInt32(inBuf, 18 + ((int)keyChainIdLen) + ((int)secretIdLen) + 8);
+ luidHigh = BitConverter.ToInt32(inBuf, 18 + ((int)keyChainIdLen) + ((int)secretIdLen) + 12);
+
+ // this code is for ZEN. Here we switch to a keychain who's ID is the LUID of the user logging in.
+ // ZEN processes run as system and pass the LUID in the extension parameter.
+ keyChainId = luidHigh.ToString() + luidLow.ToString();
+ CSSSLogger.DbgLog("ReadSecret: Switching LUID to [" + luidHigh.ToString() + "][" + luidLow.ToString() + "]");
+ }
#endif
- }
- // Message Format decipher - End
-
- try
- {
- SecretStore ssStore = SessionManager.GetUserSecretStore(tempUserId);
- if (!ssStore.IsStoreLocked())
- {
-
- if (ssStore.CheckIfKeyChainExists(keyChainId))
- {
- KeyChain keyChain = ssStore.GetKeyChain(keyChainId);
- if (keyChain.CheckIfSecretExists(secretId) == false)
- {
- retCode = IPCRetCodes.SSCS_E_SECRETID_DOES_NOT_EXIST;
- }
- else
- {
- // TODO: get the secret and remove linked keys
- keyChain.RemoveSecret(secretId);
- ssStore.UpdatePersistentStore();
- }
- }
- else
- {
- retCode = IPCRetCodes.SSCS_E_KEYCHAIN_DOES_NOT_EXIST;
- }
- }
- else
- retCode = IPCRetCodes.SSCS_SECRET_STORE_IS_LOCKED;
- }
- catch(UserNotInSessionException)
- {
- CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable to get user's secretstore" );
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
- catch(Exception)
- {
- CSSSLogger.DbgLog( "In " + CSSSLogger.GetExecutionPath(this) + " - Secret ID not present" + secretId);
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
-
- // Construct a Reply
-
- try
- {
- msgId = 10;
- outMsgLen = 10;
- outBuf = new byte[outMsgLen];
- byte[] t = new byte[10];
-
- t = BitConverter.GetBytes((ushort)msgId);
- Array.Copy(t,0,outBuf,0,2);
-
- t = BitConverter.GetBytes((uint)outMsgLen);
- Array.Copy(t,0,outBuf,2,4);
-
- t = BitConverter.GetBytes(retCode);
- Array.Copy(t,0,outBuf,6,4);
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- throw new FormatException("Unable to form the response " + e.ToString());
- }
-
- return outBuf;
-
- }
-
-
- /*
- * Gives the name of operation performed. Will be used in case
- * of error.
- */
- public string GetVerbName()
- {
- CSSSLogger.ExecutionTrace(this);
- return this.ToString();
- }
- }
-}
+ }
+ // Message Format decipher - End
+
+ try
+ {
+ SecretStore ssStore = SessionManager.GetUserSecretStore(tempUserId);
+ if (!ssStore.IsStoreLocked())
+ {
+
+ if (ssStore.CheckIfKeyChainExists(keyChainId))
+ {
+ KeyChain keyChain = ssStore.GetKeyChain(keyChainId);
+ if (keyChain.CheckIfSecretExists(secretId) == false)
+ {
+ retCode = IPCRetCodes.SSCS_E_SECRETID_DOES_NOT_EXIST;
+ }
+ else
+ {
+ // TODO: get the secret and remove linked keys
+ keyChain.RemoveSecret(secretId);
+ ssStore.UpdatePersistentStore();
+ }
+ }
+ else
+ {
+ retCode = IPCRetCodes.SSCS_E_KEYCHAIN_DOES_NOT_EXIST;
+ }
+ }
+ else
+ retCode = IPCRetCodes.SSCS_SECRET_STORE_IS_LOCKED;
+ }
+ catch(UserNotInSessionException)
+ {
+ CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable to get user's secretstore" );
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+ catch(Exception)
+ {
+ CSSSLogger.DbgLog( "In " + CSSSLogger.GetExecutionPath(this) + " - Secret ID not present" + secretId);
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+
+ // Construct a Reply
+
+ try
+ {
+ msgId = 10;
+ outMsgLen = 10;
+ outBuf = new byte[outMsgLen];
+ byte[] t = new byte[10];
+
+ t = BitConverter.GetBytes((ushort)msgId);
+ Array.Copy(t,0,outBuf,0,2);
+
+ t = BitConverter.GetBytes((uint)outMsgLen);
+ Array.Copy(t,0,outBuf,2,4);
+
+ t = BitConverter.GetBytes(retCode);
+ Array.Copy(t,0,outBuf,6,4);
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ throw new FormatException("Unable to form the response " + e.ToString());
+ }
+
+ return outBuf;
+
+ }
+
+
+ /*
+ * Gives the name of operation performed. Will be used in case
+ * of error.
+ */
+ public string GetVerbName()
+ {
+ CSSSLogger.ExecutionTrace(this);
+ return this.ToString();
+ }
+ }
+}
diff --git a/CASA/micasad/verbs/RemoveSecretStore.cs b/CASA/micasad/verbs/RemoveSecretStore.cs
index a3169467..c2ff4421 100644
--- a/CASA/micasad/verbs/RemoveSecretStore.cs
+++ b/CASA/micasad/verbs/RemoveSecretStore.cs
@@ -21,112 +21,112 @@
***********************************************************************/
-using System;
-using System.Collections;
-using System.Text;
-using System.Threading;
-using sscs.verbs;
-using sscs.common;
-using sscs.cache;
-using sscs.constants;
-
-namespace sscs.verbs
-{
-
- /*
- * This class is implementation of RemoveSecretStore call.
- * There will be one instance existing for every call made by the client.
- */
-
- internal class RemoveSecretStore : SSVerb
- {
- private ushort msgId = 0;
- private uint inMsgLen = 0;
- private uint outMsgLen = 0;
- private byte[] inBuf;
-
- private byte[] outBuf;
- private int retCode = 0;
-
- /*
- * This method sets the class member with the byte array received.
- */
-
- public void SetMessageContent(byte[] ipcBytes)
- {
- inBuf = ipcBytes;
- }
-
- /*
- * This method does the actual implementation of RemoveSecretStore
- *
- */
-
- public byte[] ProcessRequest(UserIdentifier userId)
- {
- CSSSLogger.ExecutionTrace(this);
-
- /* If an exception occurs in message format decoding,
- * it is handled by AppHandler
- */
-
- msgId = BitConverter.ToUInt16(inBuf,0);
- inMsgLen = BitConverter.ToUInt32(inBuf,2) ;
-
- if( inMsgLen != inBuf.Length )
- throw new FormatException(" MsgLen sent does not match the length of the message received.");
-
- try
- {
- SessionManager.RemoveUserSession(userId, true);
- }
- catch(UserNotInSessionException)
- {
- CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable to get user's secretstore" );
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
-
-
-
- try
- {
- msgId = 3;
- outMsgLen = 10;
- outBuf = new byte[10];
- byte[] t = new byte[10];
-
- t = BitConverter.GetBytes((ushort)msgId);
- Array.Copy(t,0,outBuf,0,2);
-
- t = BitConverter.GetBytes((uint)outMsgLen);
- Array.Copy(t,0,outBuf,2,4);
-
- t = BitConverter.GetBytes(retCode);
- Array.Copy(t,0,outBuf,6,4);
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- throw new FormatException("Unable to form the response " + e.ToString());
-
- }
- return outBuf;
- }
-
-
- /*
- * Gives the name of operation performed. Will be used in case
- * of error.
- */
- public string GetVerbName()
- {
- CSSSLogger.ExecutionTrace(this);
- return this.ToString();
- }
- }
-}
+using System;
+using System.Collections;
+using System.Text;
+using System.Threading;
+using sscs.verbs;
+using sscs.common;
+using sscs.cache;
+using sscs.constants;
+
+namespace sscs.verbs
+{
+
+ /*
+ * This class is implementation of RemoveSecretStore call.
+ * There will be one instance existing for every call made by the client.
+ */
+
+ internal class RemoveSecretStore : SSVerb
+ {
+ private ushort msgId = 0;
+ private uint inMsgLen = 0;
+ private uint outMsgLen = 0;
+ private byte[] inBuf;
+
+ private byte[] outBuf;
+ private int retCode = 0;
+
+ /*
+ * This method sets the class member with the byte array received.
+ */
+
+ public void SetMessageContent(byte[] ipcBytes)
+ {
+ inBuf = ipcBytes;
+ }
+
+ /*
+ * This method does the actual implementation of RemoveSecretStore
+ *
+ */
+
+ public byte[] ProcessRequest(UserIdentifier userId)
+ {
+ CSSSLogger.ExecutionTrace(this);
+
+ /* If an exception occurs in message format decoding,
+ * it is handled by AppHandler
+ */
+
+ msgId = BitConverter.ToUInt16(inBuf,0);
+ inMsgLen = BitConverter.ToUInt32(inBuf,2) ;
+
+ if( inMsgLen != inBuf.Length )
+ throw new FormatException(" MsgLen sent does not match the length of the message received.");
+
+ try
+ {
+ SessionManager.RemoveUserSession(userId, true);
+ }
+ catch(UserNotInSessionException)
+ {
+ CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable to get user's secretstore" );
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+
+
+
+ try
+ {
+ msgId = 3;
+ outMsgLen = 10;
+ outBuf = new byte[10];
+ byte[] t = new byte[10];
+
+ t = BitConverter.GetBytes((ushort)msgId);
+ Array.Copy(t,0,outBuf,0,2);
+
+ t = BitConverter.GetBytes((uint)outMsgLen);
+ Array.Copy(t,0,outBuf,2,4);
+
+ t = BitConverter.GetBytes(retCode);
+ Array.Copy(t,0,outBuf,6,4);
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ throw new FormatException("Unable to form the response " + e.ToString());
+
+ }
+ return outBuf;
+ }
+
+
+ /*
+ * Gives the name of operation performed. Will be used in case
+ * of error.
+ */
+ public string GetVerbName()
+ {
+ CSSSLogger.ExecutionTrace(this);
+ return this.ToString();
+ }
+ }
+}
diff --git a/CASA/micasad/verbs/SetMasterPasscode.cs b/CASA/micasad/verbs/SetMasterPasscode.cs
index b62f86cd..68ba7738 100644
--- a/CASA/micasad/verbs/SetMasterPasscode.cs
+++ b/CASA/micasad/verbs/SetMasterPasscode.cs
@@ -20,132 +20,132 @@
*
***********************************************************************/
-using System;
-using System.Collections;
-using System.Text;
-using System.Threading;
-using sscs.verbs;
-using sscs.common;
-using sscs.cache;
-using sscs.constants;
-
-namespace sscs.verbs
-{
-
- /*
- * This class is implementation of SetMasterPasscode call.
- * There will be one instance existing for every call made by the client.
- */
-
- internal class SetMasterPasscode : SSVerb
- {
-
- private ushort msgId = 0;
- private uint inMsgLen = 0;
- private uint passcodeLen = 0;
- private string passcode;
- private uint passcodeType = 0;
- private uint outMsgLen = 0;
- private byte[] inBuf;
- private byte[] outBuf;
- private int retCode = 0;
-
- /*
- * This method sets the class member with the byte array received.
- */
-
- public void SetMessageContent(byte[] ipcBytes)
- {
- CSSSLogger.ExecutionTrace(this);
- inBuf = ipcBytes;
- }
-
- /*
- * This method does the actual implementation of SetMasterPasscode
- */
-
- public byte[] ProcessRequest(UserIdentifier userId)
- {
- /* If an exception occurs in message format decoding,
- * it is handled by AppHandler
- */
- CSSSLogger.ExecutionTrace(this);
-
- // Message Format decipher - Start
- msgId = BitConverter.ToUInt16(inBuf,0);
- inMsgLen = BitConverter.ToUInt32(inBuf,2);
- if( inMsgLen != inBuf.Length )
- throw new FormatException(" MsgLen sent does not match the length of the message received.");
- passcodeType = BitConverter.ToUInt32(inBuf,6);
- passcodeLen = BitConverter.ToUInt32(inBuf,10);
-
- if (passcodeLen < 64)
- {
- byte[] tempArr = new byte[passcodeLen];
- Array.Copy(inBuf, 14, tempArr, 0, passcodeLen);
- passcode = Encoding.UTF8.GetString(tempArr);
- // Message Format decipher - End
-
- try
- {
- SecretStore ssStore = null;
- ssStore = SessionManager.GetUserSecretStore(userId);
- ssStore.PauseFileWatcher();
- if (ssStore.SetMasterPasscode(passcode))
- retCode = IPCRetCodes.SSCS_REPLY_SUCCESS;
- else
- retCode = IPCRetCodes.SSCS_E_SETTING_PASSCODE_FAILED;
- ssStore.ResumeFileWatcher();
- }
- catch (UserNotInSessionException)
- {
- CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable to get user's secretstore");
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
- catch (Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
- }
- }
- else
- {
- retCode = IPCRetCodes.SSCS_E_INVALID_INPUT;
- }
-
- try
- {
- msgId = 15;
- outMsgLen = 10;
- outBuf = new byte[10];
- byte[] t = new byte[10];
-
- t = BitConverter.GetBytes((ushort)msgId);
- Array.Copy(t,0,outBuf,0,2);
-
- t = BitConverter.GetBytes((uint)outMsgLen);
- Array.Copy(t,0,outBuf,2,4);
-
- t = BitConverter.GetBytes(retCode);
- Array.Copy(t,0,outBuf,6,4);
- }
- catch(Exception e)
- {
- CSSSLogger.ExpLog(e.ToString());
- throw new FormatException("Unable to form the response " + e.ToString());
- }
- return outBuf;
-
- }
-
- /*
- * Gives the name of operation performed. Will be used in case
- * of error.
- */
- public string GetVerbName()
- {
- CSSSLogger.ExecutionTrace(this);
- return (this.ToString());
- }
- }
-}
+using System;
+using System.Collections;
+using System.Text;
+using System.Threading;
+using sscs.verbs;
+using sscs.common;
+using sscs.cache;
+using sscs.constants;
+
+namespace sscs.verbs
+{
+
+ /*
+ * This class is implementation of SetMasterPasscode call.
+ * There will be one instance existing for every call made by the client.
+ */
+
+ internal class SetMasterPasscode : SSVerb
+ {
+
+ private ushort msgId = 0;
+ private uint inMsgLen = 0;
+ private uint passcodeLen = 0;
+ private string passcode;
+ private uint passcodeType = 0;
+ private uint outMsgLen = 0;
+ private byte[] inBuf;
+ private byte[] outBuf;
+ private int retCode = 0;
+
+ /*
+ * This method sets the class member with the byte array received.
+ */
+
+ public void SetMessageContent(byte[] ipcBytes)
+ {
+ CSSSLogger.ExecutionTrace(this);
+ inBuf = ipcBytes;
+ }
+
+ /*
+ * This method does the actual implementation of SetMasterPasscode
+ */
+
+ public byte[] ProcessRequest(UserIdentifier userId)
+ {
+ /* If an exception occurs in message format decoding,
+ * it is handled by AppHandler
+ */
+ CSSSLogger.ExecutionTrace(this);
+
+ // Message Format decipher - Start
+ msgId = BitConverter.ToUInt16(inBuf,0);
+ inMsgLen = BitConverter.ToUInt32(inBuf,2);
+ if( inMsgLen != inBuf.Length )
+ throw new FormatException(" MsgLen sent does not match the length of the message received.");
+ passcodeType = BitConverter.ToUInt32(inBuf,6);
+ passcodeLen = BitConverter.ToUInt32(inBuf,10);
+
+ if (passcodeLen < 64)
+ {
+ byte[] tempArr = new byte[passcodeLen];
+ Array.Copy(inBuf, 14, tempArr, 0, passcodeLen);
+ passcode = Encoding.UTF8.GetString(tempArr);
+ // Message Format decipher - End
+
+ try
+ {
+ SecretStore ssStore = null;
+ ssStore = SessionManager.GetUserSecretStore(userId);
+ ssStore.PauseFileWatcher();
+ if (ssStore.SetMasterPasscode(passcode))
+ retCode = IPCRetCodes.SSCS_REPLY_SUCCESS;
+ else
+ retCode = IPCRetCodes.SSCS_E_SETTING_PASSCODE_FAILED;
+ ssStore.ResumeFileWatcher();
+ }
+ catch (UserNotInSessionException)
+ {
+ CSSSLogger.DbgLog("In " + CSSSLogger.GetExecutionPath(this) + " Unable to get user's secretstore");
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+ catch (Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ retCode = IPCRetCodes.SSCS_E_SYSTEM_ERROR;
+ }
+ }
+ else
+ {
+ retCode = IPCRetCodes.SSCS_E_INVALID_INPUT;
+ }
+
+ try
+ {
+ msgId = 15;
+ outMsgLen = 10;
+ outBuf = new byte[10];
+ byte[] t = new byte[10];
+
+ t = BitConverter.GetBytes((ushort)msgId);
+ Array.Copy(t,0,outBuf,0,2);
+
+ t = BitConverter.GetBytes((uint)outMsgLen);
+ Array.Copy(t,0,outBuf,2,4);
+
+ t = BitConverter.GetBytes(retCode);
+ Array.Copy(t,0,outBuf,6,4);
+ }
+ catch(Exception e)
+ {
+ CSSSLogger.ExpLog(e.ToString());
+ throw new FormatException("Unable to form the response " + e.ToString());
+ }
+ return outBuf;
+
+ }
+
+ /*
+ * Gives the name of operation performed. Will be used in case
+ * of error.
+ */
+ public string GetVerbName()
+ {
+ CSSSLogger.ExecutionTrace(this);
+ return (this.ToString());
+ }
+ }
+}
diff --git a/CASA/micasad/verbs/WriteBinaryKey.cs b/CASA/micasad/verbs/WriteBinaryKey.cs
index e50f5c63..2e7f47c6 100644
--- a/CASA/micasad/verbs/WriteBinaryKey.cs
+++ b/CASA/micasad/verbs/WriteBinaryKey.cs
@@ -92,12 +92,12 @@ namespace sscs.verbs
inMsgLen = BitConverter.ToUInt32(inBuf,2);
if( inMsgLen != inBuf.Length )
- throw new FormatException(" MsgLen sent does not match the length of the message received.");
-
- // get flags
+ throw new FormatException(" MsgLen sent does not match the length of the message received.");
+
+ // get flags
ssFlags = BitConverter.ToUInt32(inBuf, 6);
- // get keychain
+ // get keychain
keyChainIdLen = BitConverter.ToUInt32(inBuf, 10);
byte[] keyChainIdArr = new byte[keyChainIdLen];
@@ -132,10 +132,10 @@ namespace sscs.verbs
}
catch (Exception)
{
- //CSSSLogger.ExpLog(e.ToString());
- }
-
-#if W32
+ //CSSSLogger.ExpLog(e.ToString());
+ }
+
+#if W32
if (extId == 1)
{
// WINDOWS LUID
@@ -143,45 +143,45 @@ namespace sscs.verbs
// we might be able to change this if/when we abstract the session.
// [4 byte extID][4 byte length][4 byte luidLow][4 byte luidHigh]
luidLow = BitConverter.ToInt32(inBuf, 30 + ((int)keyChainIdLen)+((int)secretIdLen) +((int)keyLen) + (int)valLen + 8);
- luidHigh = BitConverter.ToInt32(inBuf, 30 + ((int)keyChainIdLen)+((int)secretIdLen) +((int)keyLen) + (int)valLen + 12);
-
- if (ConstStrings.MICASA_DESKTOP_PASSWD == secretId)
- {
-
- tempUserId = new WinUserIdentifier(luidLow, luidHigh);
- SecretStore ss = SessionManager.CreateUserSession(tempUserId);
- try
- {
- ss.AddKeyChain(new KeyChain("SSCS_SESSION_KEY_CHAIN_ID\0"));
- }
- catch (Exception)
- {
-
- }
- }
- else
- {
- // this code is for ZEN. Here we switch to a keychain who's ID is the LUID of the user logging in.
- // ZEN processes run as system and pass the LUID in the extension parameter.
-
- keyChainId = luidHigh.ToString() + luidLow.ToString();
- SecretStore ssStore = SessionManager.GetUserSecretStore(tempUserId);
- if (!ssStore.CheckIfKeyChainExists(keyChainId))
- {
- try
- {
- KeyChain newKeyChain = new KeyChain(keyChainId);
- ssStore.AddKeyChain(newKeyChain);
- }
- catch (Exception e)
- {
- CSSSLogger.DbgLog("WriteKey: Adding keychain returned error: " + e.ToString());
- }
- }
- }
- }
-#endif
-
+ luidHigh = BitConverter.ToInt32(inBuf, 30 + ((int)keyChainIdLen)+((int)secretIdLen) +((int)keyLen) + (int)valLen + 12);
+
+ if (ConstStrings.MICASA_DESKTOP_PASSWD == secretId)
+ {
+
+ tempUserId = new WinUserIdentifier(luidLow, luidHigh);
+ SecretStore ss = SessionManager.CreateUserSession(tempUserId);
+ try
+ {
+ ss.AddKeyChain(new KeyChain("SSCS_SESSION_KEY_CHAIN_ID\0"));
+ }
+ catch (Exception)
+ {
+
+ }
+ }
+ else
+ {
+ // this code is for ZEN. Here we switch to a keychain who's ID is the LUID of the user logging in.
+ // ZEN processes run as system and pass the LUID in the extension parameter.
+
+ keyChainId = luidHigh.ToString() + luidLow.ToString();
+ SecretStore ssStore = SessionManager.GetUserSecretStore(tempUserId);
+ if (!ssStore.CheckIfKeyChainExists(keyChainId))
+ {
+ try
+ {
+ KeyChain newKeyChain = new KeyChain(keyChainId);
+ ssStore.AddKeyChain(newKeyChain);
+ }
+ catch (Exception e)
+ {
+ CSSSLogger.DbgLog("WriteKey: Adding keychain returned error: " + e.ToString());
+ }
+ }
+ }
+ }
+#endif
+
try
{
KeyChain keyChain = null;
@@ -208,22 +208,22 @@ namespace sscs.verbs
(ConstStrings.MICASA_DESKTOP_PASSWD_KEYNAME == key)
)
{
- KeyValue kvDesktop = secret.GetKeyValue(ConstStrings.MICASA_DESKTOP_PASSWD_KEYNAME);
- if (null != kvDesktop)
+ KeyValue kvDesktop = secret.GetKeyValue(ConstStrings.MICASA_DESKTOP_PASSWD_KEYNAME);
+ if (null != kvDesktop)
oldPasswd = kvDesktop.GetValue();
}
- secret.SetKeyValue(key,val);
-
- KeyValue kv = secret.GetKeyValue(key);
- if ((ssFlags & SSFLAGS.FLAG_DO_NOT_PERSIST) == SSFLAGS.FLAG_DO_NOT_PERSIST)
- {
- kv.IsPersistent = false;
- }
- else
- {
- kv.IsPersistent = true;
- }
+ secret.SetKeyValue(key,val);
+
+ KeyValue kv = secret.GetKeyValue(key);
+ if ((ssFlags & SSFLAGS.FLAG_DO_NOT_PERSIST) == SSFLAGS.FLAG_DO_NOT_PERSIST)
+ {
+ kv.IsPersistent = false;
+ }
+ else
+ {
+ kv.IsPersistent = true;
+ }
if((ConstStrings.MICASA_DESKTOP_PASSWD == secretId) &&
@@ -257,7 +257,7 @@ namespace sscs.verbs
}
}
else
- {
+ {
retCode = IPCRetCodes.SSCS_SECRET_STORE_IS_LOCKED;
}
diff --git a/CASA/micasad/verbs/WriteKey.cs b/CASA/micasad/verbs/WriteKey.cs
index 23433475..cdc7541f 100644
--- a/CASA/micasad/verbs/WriteKey.cs
+++ b/CASA/micasad/verbs/WriteKey.cs
@@ -118,7 +118,7 @@ namespace sscs.verbs
valLen = BitConverter.ToUInt32(inBuf,(18+(int)keyChainIdLen+(int)secretIdLen+(int)keyLen));
val = new byte[valLen];
Array.Copy(inBuf,(22+keyChainIdLen+secretIdLen+keyLen),val,0,valLen);
- valStr = Encoding.UTF8.GetString(val);
+ valStr = Encoding.UTF8.GetString(val);
CSSSLogger.DbgLog("Writing Secret:Key [" + secretId + ":" + key + "]");
@@ -130,13 +130,13 @@ namespace sscs.verbs
}
catch (Exception)
{
- //CSSSLogger.ExpLog(e.ToString());
- }
-
-
-#if W32
+ //CSSSLogger.ExpLog(e.ToString());
+ }
+
+
+#if W32
if (extId == 1)
- {
+ {
CSSSLogger.DbgLog("LUID ExtID found");
// WINDOWS LUID
@@ -144,47 +144,47 @@ namespace sscs.verbs
// we might be able to change this if/when we abstract the session.
// [4 byte extID][4 byte length][4 byte luidLow][4 byte luidHigh]
luidLow = BitConverter.ToInt32(inBuf, 26 + ((int)keyChainIdLen)+((int)secretIdLen) +((int)keyLen) + (int)valLen + 8);
- luidHigh = BitConverter.ToInt32(inBuf, 26 + ((int)keyChainIdLen)+((int)secretIdLen) +((int)keyLen) + (int)valLen + 12);
-
- if (ConstStrings.MICASA_DESKTOP_PASSWD == secretId)
- {
- tempUserId = new WinUserIdentifier(luidLow, luidHigh);
- SecretStore ss = SessionManager.CreateUserSession(tempUserId);
-
- CSSSLogger.DbgLog("Switching LUID to [" + luidHigh.ToString() + "][" + luidLow.ToString() + "]");
-
- try
- {
- ss.AddKeyChain(new KeyChain("SSCS_SESSION_KEY_CHAIN_ID\0"));
- }
- catch (Exception)
- {
-
- }
- }
- else
- {
- // this code is for ZEN. Here we switch to a keychain who's ID is the LUID of the user logging in.
- // ZEN processes run as system and pass the LUID in the extension parameter.
-
- keyChainId = luidHigh.ToString() + luidLow.ToString();
- SecretStore ssStore = SessionManager.GetUserSecretStore(tempUserId);
- if (!ssStore.CheckIfKeyChainExists(keyChainId))
- {
- try
- {
- KeyChain newKeyChain = new KeyChain(keyChainId);
- ssStore.AddKeyChain(newKeyChain);
- }
- catch (Exception e)
- {
- CSSSLogger.DbgLog("WriteKey: Adding keychain returned error: " + e.ToString());
- }
- }
- }
- }
-#endif
-
+ luidHigh = BitConverter.ToInt32(inBuf, 26 + ((int)keyChainIdLen)+((int)secretIdLen) +((int)keyLen) + (int)valLen + 12);
+
+ if (ConstStrings.MICASA_DESKTOP_PASSWD == secretId)
+ {
+ tempUserId = new WinUserIdentifier(luidLow, luidHigh);
+ SecretStore ss = SessionManager.CreateUserSession(tempUserId);
+
+ CSSSLogger.DbgLog("Switching LUID to [" + luidHigh.ToString() + "][" + luidLow.ToString() + "]");
+
+ try
+ {
+ ss.AddKeyChain(new KeyChain("SSCS_SESSION_KEY_CHAIN_ID\0"));
+ }
+ catch (Exception)
+ {
+
+ }
+ }
+ else
+ {
+ // this code is for ZEN. Here we switch to a keychain who's ID is the LUID of the user logging in.
+ // ZEN processes run as system and pass the LUID in the extension parameter.
+
+ keyChainId = luidHigh.ToString() + luidLow.ToString();
+ SecretStore ssStore = SessionManager.GetUserSecretStore(tempUserId);
+ if (!ssStore.CheckIfKeyChainExists(keyChainId))
+ {
+ try
+ {
+ KeyChain newKeyChain = new KeyChain(keyChainId);
+ ssStore.AddKeyChain(newKeyChain);
+ }
+ catch (Exception e)
+ {
+ CSSSLogger.DbgLog("WriteKey: Adding keychain returned error: " + e.ToString());
+ }
+ }
+ }
+ }
+#endif
+
if (secretId.Length < 1 || key.Length < 1 || valStr.Length < 1)
{
CSSSLogger.DbgLog("Error in length");
@@ -204,24 +204,24 @@ namespace sscs.verbs
if( ssStore.CheckIfKeyChainExists(keyChainId) )
{
keyChain = ssStore.GetKeyChain(keyChainId);
- Secret secret = null;
-
- if (ConstStrings.MICASA_DESKTOP_PASSWD == secretId)
- {
- secret = ssStore.GetDesktopSecret();
- }
- else
- {
- // add this secret if it doesn't already exist
- if (keyChain.CheckIfSecretExists(secretId) == false)
- {
- secret = new Secret(secretId);
- keyChain.AddSecret(secret);
- }
- else
- {
- secret = keyChain.GetSecret(secretId);
- }
+ Secret secret = null;
+
+ if (ConstStrings.MICASA_DESKTOP_PASSWD == secretId)
+ {
+ secret = ssStore.GetDesktopSecret();
+ }
+ else
+ {
+ // add this secret if it doesn't already exist
+ if (keyChain.CheckIfSecretExists(secretId) == false)
+ {
+ secret = new Secret(secretId);
+ keyChain.AddSecret(secret);
+ }
+ else
+ {
+ secret = keyChain.GetSecret(secretId);
+ }
}
string oldPasswd = null;
diff --git a/CASA/micasad/verbs/WriteSecret.cs b/CASA/micasad/verbs/WriteSecret.cs
index 93821123..a40467bd 100644
--- a/CASA/micasad/verbs/WriteSecret.cs
+++ b/CASA/micasad/verbs/WriteSecret.cs
@@ -120,10 +120,10 @@ namespace sscs.verbs
}
catch (Exception)
{
- //CSSSLogger.ExpLog(e.ToString());
- }
-
-#if W32
+ //CSSSLogger.ExpLog(e.ToString());
+ }
+
+#if W32
if (extId == 1)
{
// WINDOWS LUID
@@ -131,43 +131,43 @@ namespace sscs.verbs
// we might be able to change this if/when we abstract the session.
// [4 byte extID][4 byte length][4 byte luidLow][4 byte luidHigh]
luidLow = BitConverter.ToInt32(inBuf, 22 + ((int)keyChainIdLen)+((int)secretIdLen) +(int)secretValLen + 8);
- luidHigh = BitConverter.ToInt32(inBuf, 22 + ((int)keyChainIdLen)+((int)secretIdLen) +(int)secretValLen + 12);
-
- if (ConstStrings.MICASA_DESKTOP_PASSWD == secretId)
- {
- tempUserId = new WinUserIdentifier(luidLow, luidHigh);
- SecretStore ss = SessionManager.CreateUserSession(tempUserId);
- try
- {
- ss.AddKeyChain(new KeyChain("SSCS_SESSION_KEY_CHAIN_ID\0"));
- }
- catch (Exception)
- {
-
- }
- }
- else
- {
- // this code is for ZEN. Here we switch to a keychain who's ID is the LUID of the user logging in.
- // ZEN processes run as system and pass the LUID in the extension parameter.
-
- keyChainId = luidHigh.ToString() + luidLow.ToString();
- SecretStore ssStore = SessionManager.GetUserSecretStore(tempUserId);
- if (!ssStore.CheckIfKeyChainExists(keyChainId))
- {
- try
- {
- KeyChain newKeyChain = new KeyChain(keyChainId);
- ssStore.AddKeyChain(newKeyChain);
- }
- catch (Exception e)
- {
- CSSSLogger.DbgLog("WriteSecret: Adding keychain returned error: " + e.ToString());
- }
- }
- }
- }
-#endif
+ luidHigh = BitConverter.ToInt32(inBuf, 22 + ((int)keyChainIdLen)+((int)secretIdLen) +(int)secretValLen + 12);
+
+ if (ConstStrings.MICASA_DESKTOP_PASSWD == secretId)
+ {
+ tempUserId = new WinUserIdentifier(luidLow, luidHigh);
+ SecretStore ss = SessionManager.CreateUserSession(tempUserId);
+ try
+ {
+ ss.AddKeyChain(new KeyChain("SSCS_SESSION_KEY_CHAIN_ID\0"));
+ }
+ catch (Exception)
+ {
+
+ }
+ }
+ else
+ {
+ // this code is for ZEN. Here we switch to a keychain who's ID is the LUID of the user logging in.
+ // ZEN processes run as system and pass the LUID in the extension parameter.
+
+ keyChainId = luidHigh.ToString() + luidLow.ToString();
+ SecretStore ssStore = SessionManager.GetUserSecretStore(tempUserId);
+ if (!ssStore.CheckIfKeyChainExists(keyChainId))
+ {
+ try
+ {
+ KeyChain newKeyChain = new KeyChain(keyChainId);
+ ssStore.AddKeyChain(newKeyChain);
+ }
+ catch (Exception e)
+ {
+ CSSSLogger.DbgLog("WriteSecret: Adding keychain returned error: " + e.ToString());
+ }
+ }
+ }
+ }
+#endif
try
{