public uint GenerateKeyPair(int KeySize)
{
CspParameters CSPParam = new CspParameters();
CSPParam.Flags = CspProviderFlags.UseMachineKeyStore;
UInt32 KeyID = 1;
if (_keys.Keys.Count > 0)
{
KeyID = _keys.Keys.Max <UInt32>() + 1;
}
using (var csp = new RSACryptoServiceProvider(KeySize, CSPParam))
{
var pubKey = new KeyData(KeyID, csp.ExportCspBlob(false), KeyType.Public, _area);
var privKey = new KeyData(KeyID, csp.ExportCspBlob(true), KeyType.Private, _area);
SecretUpdate.SecretUpdate pubSecret = pubKey.ToSecretUpdate();
SecretUpdate.SecretUpdate privSecret = privKey.ToSecretUpdate();
SaveSecret(pubSecret, (Guid.NewGuid().ToString())).Wait();
SaveSecret(privSecret, (Guid.NewGuid().ToString())).Wait();
_keys.Add(KeyID, new KeyPair(pubKey, privKey));
return(KeyID);
}
}