RSACryptoServiceProvider und KeyContainer



  • Ich habe eine Testanwendung mit der ich mir ein public und private Key Paar erzeugen möchten. Dort kann ich ja nun den Containernamen angeben. Dummerweise habe ich einfach nur mal zum testen einen Container angelegt bei dem ich den Key nicht exportieren darf. Jetzt kann ich diese Einstellung nicht mehr ändern. D.H. irgendwie wird beim Zugriff auf den CryptoServiceProvider auf die alte information zugegriffen. Das ganze funktioniert jedoch, wenn ich einen anderen Containernamen verwende. Es sollte doch irgendwie möglich sein, die alte Einstellungen aus dem Container zu überschreiben. Bzw noch besser: Verhindern das überhaupt irgendwie lokal was gespeichert wird. Ich möchte das Speichern der Keys von hand machen.
    Hier Kurz der Code:

    private static void GenerateKeys(out byte[] privateKey, out byte[] publicKey)
        {
          // Create a new CspParameters object to specify
          // a key container.
          CspParameters cspParams = new CspParameters();
          cspParams.KeyContainerName = ContainerName;
          RSACryptoServiceProvider crypProvider = new RSACryptoServiceProvider(cspParams);
          crypProvider.PersistKeyInCsp = false;
          privateKey = crypProvider.ExportCspBlob(true) //<--hier kommt eine Exception da ich ursprünglich den container mit CspProviderFlags.UseNonExportableKey angelegt habe, ich werde diese einstellung nicht mehr los
          publicKey = crypProvider.ExportCspBlob(false);
        }
    

    Ggf liegt das ganze noch an etwas anderen. Das mit dem Laden der Einstellungen aus irgendwelchen lokalen Dateien ist nur eine Vermutung. Wenn ich einen ganz anderen ContainerName verwende funktioniert es.



  • scheint sich erledigt zu haben. Ich muss wohl explizit angeben wenn ich einen Private Key generieren will

    cspParams.KeyNumber = (int)KeyNumber.Signature;
    

    muss also noch mit rein.


Anmelden zum Antworten