-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
LCPKeyEntry.cs
101 lines (90 loc) · 3.81 KB
/
LCPKeyEntry.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
using Newtonsoft.Json;
namespace Leosac.KeyManager.Library.KeyStore.LCP
{
public class LCPKeyEntry : KeyEntry
{
public LCPKeyEntry() : this(KeyEntryClass.Symmetric)
{
}
public LCPKeyEntry(KeyEntryClass kclass)
{
Properties = new LCPKeyEntryProperties();
_kclass = kclass;
Identifier.Id = Guid.NewGuid().ToString("N");
}
private readonly KeyEntryClass _kclass;
[JsonIgnore]
public LCPKeyEntryProperties? LCPProperties
{
get { return Properties as LCPKeyEntryProperties; }
}
public override KeyEntryClass KClass => _kclass;
public override IList<KeyEntryVariant> GetAllVariants(KeyEntryClass? classFilter)
{
var variants = new List<KeyEntryVariant>();
if (classFilter == null || classFilter == KeyEntryClass.Symmetric)
{
var desvar = new KeyEntryVariant { Name = "DES" };
desvar.KeyContainers.Add(new KeyVersion("Key", 0, new Key(new[] { "DES", KeyEntryClass.Symmetric.ToString() }, 16)));
variants.Add(desvar);
var tk3desvar = new KeyEntryVariant { Name = "TK3DES" };
tk3desvar.KeyContainers.Add(new KeyVersion("Key", 0, new Key(new[] { "DES", KeyEntryClass.Symmetric.ToString() }, 24)));
variants.Add(tk3desvar);
var aes128var = new KeyEntryVariant { Name = "AES128" };
aes128var.KeyContainers.Add(new KeyVersion("Key", 0,new Key(new[] { "AES", KeyEntryClass.Symmetric.ToString() }, 16)));
variants.Add(aes128var);
var aes256var = new KeyEntryVariant { Name = "AES256" };
aes256var.KeyContainers.Add(new KeyVersion("Key", 0,new Key(new[] { "AES", KeyEntryClass.Symmetric.ToString() }, 32)));
variants.Add(aes256var);
var hmacvar = new KeyEntryVariant { Name = "HMAC" };
hmacvar.KeyContainers.Add(new KeyVersion("Key", 0, new Key(new[] { "HMAC", KeyEntryClass.Symmetric.ToString() })));
variants.Add(hmacvar);
}
if (classFilter == null || classFilter == KeyEntryClass.Asymmetric)
{
var rsapubvar = new KeyEntryVariant { Name = "RSA Public Key" };
rsapubvar.KeyContainers.Add(new KeyVersion("Key", 0, new Key(new[] { "RSA", KeyEntryClass.Asymmetric.ToString(), KeyEntryClass.PublicKey.ToString() })));
variants.Add(rsapubvar);
var rsaprivar = new KeyEntryVariant { Name = "RSA Private Key" };
rsaprivar.KeyContainers.Add(new KeyVersion("Key", 0, new Key(new[] { "RSA", KeyEntryClass.Asymmetric.ToString(), KeyEntryClass.PrivateKey.ToString() })));
variants.Add(rsaprivar);
}
return variants;
}
public KeyEntryVariant? CreateVariantFromKeyType(string keyType)
{
keyType = keyType.ToLowerInvariant();
string algo;
uint keySize = 0;
if (keyType == "aes128")
{
algo = "AES";
keySize = 16;
}
else if (keyType == "aes256")
{
algo = "AES";
keySize = 32;
}
else if (keyType == "2k3des")
{
algo = "DES";
keySize = 16;
}
else if (keyType == "3k3des")
{
algo = "DES";
keySize = 24;
}
else if (keyType == "rsa-public" || keyType == "rsa-private")
{
algo = "RSA";
}
else
{
algo = keyType;
}
return CreateVariantFromAlgo(algo, keySize);
}
}
}