/// <summary> /// Generate a new RSA Key Pair with the Key size specified when the /// instance was created. /// </summary> public override void Generate(KeySecurity KeySecurity) { _RSAKeyPair = new RSAKeyPair(KeySize); _RSAKeyPair.Persist(KeySecurity); }
/// <summary> /// Makes a key persistent on the local machine with the specified level of /// protection. /// </summary> /// <param name="KeySecurity">Key protection level to be applied.</param> public void Persist (KeySecurity KeySecurity) { if (Provider == null) throw new System.Exception ("No provider set"); var Parameters = new CspParameters(); switch (KeySecurity) { case KeySecurity.Master: Parameters.Flags = CspProviderFlags.UseArchivableKey | CspProviderFlags.UseUserProtectedKey; Parameters.Flags = CspProviderFlags.NoFlags; break; case KeySecurity.Admin: Parameters.Flags = CspProviderFlags.UseArchivableKey | CspProviderFlags.UseUserProtectedKey; Parameters.Flags = CspProviderFlags.NoFlags; break; case KeySecurity.Device: Parameters.Flags = CspProviderFlags.UseNonExportableKey; break; case KeySecurity.Ephemeral: Parameters.Flags = CspProviderFlags.UseNonExportableKey; break; } Parameters.KeyContainerName = ContainerName(UDF); var NewProvider = new RSACryptoServiceProvider(Parameters); var KeyParams = Provider.ExportParameters(true); NewProvider.ImportParameters(KeyParams); Provider.Dispose(); _Provider = NewProvider; if (KeySecurity == KeySecurity.Master) { KeyParams = Provider.ExportParameters(true); } }
/// <summary> /// Generates a new signing key pair with the default key size. /// </summary> /// <param name="KeySecurity">Specifies the protection level for the key.</param> public abstract void Generate(KeySecurity KeySecurity);