Support for Binary Keys
This commit is contained in:
parent
8b8d606aa3
commit
c30b2b3195
47
c_micasad/cache/KeyValue.cs
vendored
47
c_micasad/cache/KeyValue.cs
vendored
@ -8,6 +8,11 @@ namespace sscs.cache
|
||||
{
|
||||
public class KeyValue
|
||||
{
|
||||
public static int VALUE_TYPE_STRING = 0;
|
||||
public static int VALUE_TYPE_BINARY = 1;
|
||||
|
||||
private int m_iValueType = VALUE_TYPE_STRING;
|
||||
|
||||
private string m_key;
|
||||
public string Key
|
||||
{
|
||||
@ -27,6 +32,12 @@ namespace sscs.cache
|
||||
return (DecryptValue());
|
||||
}
|
||||
|
||||
public byte[] GetValueAsBytes()
|
||||
{
|
||||
return (DecyptValueAsBytes());
|
||||
}
|
||||
|
||||
// this sets string values
|
||||
public void SetValue(string sValue)
|
||||
{
|
||||
|
||||
@ -42,6 +53,14 @@ namespace sscs.cache
|
||||
}
|
||||
}
|
||||
|
||||
// this sets binary values
|
||||
public void SetValue(byte[] baValue)
|
||||
{
|
||||
m_iValueType = VALUE_TYPE_BINARY;
|
||||
m_value = EncryptValue(baValue);
|
||||
m_modified = DateTime.Now;
|
||||
}
|
||||
|
||||
/*
|
||||
public string Value
|
||||
{
|
||||
@ -119,18 +138,37 @@ namespace sscs.cache
|
||||
m_value = EncryptValue(sValue);
|
||||
}
|
||||
|
||||
public KeyValue(string sKey, byte[] baValue)
|
||||
{
|
||||
// NOTE: Order is important, do not change
|
||||
m_created = m_modified = DateTime.Now;
|
||||
m_key = sKey;
|
||||
m_value = EncryptValue(baValue);
|
||||
m_iValueType = VALUE_TYPE_BINARY;
|
||||
}
|
||||
|
||||
private byte[] EncryptValue(string sValue)
|
||||
{
|
||||
byte[] baValueClear = Encoding.Default.GetBytes(sValue);
|
||||
return (XORValue(baValueClear));
|
||||
return EncryptValue(baValueClear);
|
||||
}
|
||||
|
||||
private byte[] EncryptValue(byte[] baValueClear)
|
||||
{
|
||||
return (XORValue(baValueClear));
|
||||
}
|
||||
|
||||
private string DecryptValue()
|
||||
{
|
||||
byte[] baValueClear = XORValue(m_value);
|
||||
byte[] baValueClear = DecyptValueAsBytes();
|
||||
return Encoding.Default.GetString(baValueClear);
|
||||
}
|
||||
|
||||
private byte[] DecyptValueAsBytes()
|
||||
{
|
||||
return XORValue(m_value);
|
||||
}
|
||||
|
||||
private byte[] XORValue(byte[] baInput)
|
||||
{
|
||||
|
||||
@ -145,6 +183,11 @@ namespace sscs.cache
|
||||
return baOutput;
|
||||
}
|
||||
|
||||
public int GetValueType()
|
||||
{
|
||||
return m_iValueType;
|
||||
}
|
||||
|
||||
public string ToXML()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
22
c_micasad/cache/Secret.cs
vendored
22
c_micasad/cache/Secret.cs
vendored
@ -146,7 +146,10 @@ namespace sscs.cache
|
||||
|
||||
sb.Append(kv.Key);
|
||||
sb.Append("=");
|
||||
sb.Append(kv.GetValue());
|
||||
if (kv.GetValueType() ==(KeyValue.VALUE_TYPE_BINARY))
|
||||
sb.Append("BINARY - Do not change");
|
||||
else
|
||||
sb.Append(kv.GetValue());
|
||||
sb.Append('\n');
|
||||
}
|
||||
//sb.Append('\0');
|
||||
@ -169,6 +172,7 @@ namespace sscs.cache
|
||||
{
|
||||
return secretID;
|
||||
}
|
||||
|
||||
public void SetKeyValue(string key, string value)
|
||||
{
|
||||
KeyValue kv;
|
||||
@ -185,6 +189,22 @@ namespace sscs.cache
|
||||
this.ModifiedTime = DateTime.Now;
|
||||
}
|
||||
|
||||
public void SetKeyValue(string key, byte[] baValue)
|
||||
{
|
||||
KeyValue kv;
|
||||
if (htKeyValues.Contains(key))
|
||||
{
|
||||
kv = (KeyValue)htKeyValues[key];
|
||||
kv.SetValue(baValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
kv = new KeyValue(key, baValue);
|
||||
htKeyValues.Add(key, kv);
|
||||
}
|
||||
this.ModifiedTime = DateTime.Now;
|
||||
}
|
||||
|
||||
public KeyValue GetKeyValue(string key)
|
||||
{
|
||||
this.AccessedTime = DateTime.Now;
|
||||
|
@ -59,6 +59,8 @@ namespace sscs.common
|
||||
msgIdMap.Add(18,"sscs.verbs.SetMasterPassword");
|
||||
msgIdMap.Add(19,"sscs.verbs.IsSecretPersistent");
|
||||
msgIdMap.Add(20,"sscs.verbs.ObjectSerialization");
|
||||
msgIdMap.Add(21,"sscs.verbs.WriteBinaryKey");
|
||||
msgIdMap.Add(22,"sscs.verbs.ReadBinaryKey");
|
||||
}
|
||||
|
||||
|
||||
|
@ -37,9 +37,11 @@ OBJS=\
|
||||
verbs/RemoveSecret \
|
||||
verbs/EnumerateKeyChainIds \
|
||||
verbs/EnumerateSecretIds \
|
||||
verbs/SetMasterPassword \
|
||||
verbs/SetMasterPassword \
|
||||
verbs/WriteKey \
|
||||
verbs/ReadKey \
|
||||
verbs/WriteBinaryKey \
|
||||
verbs/ReadBinaryKey \
|
||||
verbs/IsSecretPersistent \
|
||||
verbs/ObjectSerialization \
|
||||
test/cache/TestSecret \
|
||||
|
@ -40,6 +40,8 @@ SRC=\
|
||||
verbs/SetMasterPassword.cs \
|
||||
verbs/WriteKey.cs \
|
||||
verbs/ReadKey.cs \
|
||||
verbs/WriteBinaryKey.cs \
|
||||
verbs/ReadBinaryKey.cs \
|
||||
verbs/IsSecretPersistent.cs \
|
||||
verbs/ObjectSerialization.cs \
|
||||
test/cache/TestSecret.cs \
|
||||
|
Loading…
Reference in New Issue
Block a user