Goedel.Cryptography.RSAKeyPair.Persist C# (CSharp) Method

Persist() public method

Makes a key persistent on the local machine with the specified level of protection.
public Persist ( KeySecurity KeySecurity ) : void
KeySecurity KeySecurity Key protection level to be applied.
return void
        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);
                }
            }

Usage Example

Ejemplo n.º 1
0
 /// <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);
     }