public static string RSADecryptWithPkcs12Cert(string pfadZertifikat, string encryptedData, string password) { return(RSADecryptWithKey(KeyHelper.GetPrivateKeyFromPkcsStore(pfadZertifikat, password), encryptedData)); }
public static bool VerifySign(string text, string signatur, string pathx509Cert) { AsymmetricKeyParameter key = KeyHelper.GetPublicKeyFromX509Cert(pathx509Cert); return(VerifySign(text, signatur, key)); }
public static string RSAEncyptWithx509Cert(string pfadx509Cert, string text) { AsymmetricKeyParameter publicKey = KeyHelper.GetPublicKeyFromX509Cert(pfadx509Cert); return(RSAEncryptWithKey(publicKey, text)); }
/// <summary> /// Erstellt ein ein asymmetrisches Schlüsselpaar, ein Passwort für den privaten Teil des Zertifikates und generiert /// aus diesen erstellten Bestandteilen ein Zertifikat entsprechend der übergebenen Schlüsselstärke. Nach Bedarf können die /// Bestandteile (Zertifikat, KeyStore, Passwort) auf dem Dateisystem gespeichert werden /// </summary> /// <param name="hashtype">Algorithmus des Hashtyps</param> /// <param name="antragsteller">Antragssteller (Subject DN)</param> /// <param name="aussteller">Austeller (Issuer DN)</param> /// <param name="passwortKeyStore">Passwort für den KeyStore, ist es leer wird eins geniert, ist es nicht leer wird das übertragene verwendet</param> /// <param name="keyStore">Rückgabe des generierten KeyStores als Objekt</param> /// <param name="gueltigVon">Ab wann ist das Zertifikat gültig</param> /// <param name="gueltiBis">Bis wann ist das Zertifikat gültig</param> /// <param name="keyStrength">Schlüsselstärke</param> /// <param name="zertifikatSpeicherPfad">Soll das Zertifikat auf einem Laufwerk gespeichert werden, wird hier der Ordner angegeben</param> /// <param name="dateiname">Namen der Dateien für das Passwort, das öffentliche Zertifikat und den KeyStore</param> /// <param name="zertifikatImPfadSpeichern">Soll das Zertifikat in dem angegebenen Pfad gespeichert werden (.der)</param> /// <param name="keyStoreImPfadSpeicher">Soll der KeyStore in dem angebeneen Pfad gespeichert werden (.pfx)</param> /// <param name="passwortImPfadSpeichern">Soll das Passwort in dem angegebenen Pfad gespeichert werden (.pas)</param> /// <returns></returns> public static X509Certificate CreateCertificateAndKeyStore(Standards.HashType hashtype, string antragsteller, string aussteller, ref string passwortKeyStore, out Pkcs12Store keyStore, DateTime gueltigVon, DateTime gueltiBis, KeyHelper.KeyStrength keyStrength = KeyHelper.KeyStrength.ks2048, string zertifikatSpeicherPfad = null, string dateiname = null, bool zertifikatImPfadSpeichern = false, bool keyStoreImPfadSpeicher = false, bool passwortImPfadSpeichern = false) { //Erstellen eines Schlüsselpaares: AsymmetricCipherKeyPair schluesselPaar = KeyHelper.CreateAsymmetricKeyPair(keyStrength); //Erstellen eines Passwortes für den privaten Teil des Zertifikates: if (string.IsNullOrEmpty(passwortKeyStore)) { passwortKeyStore = KeyHelper.CreateRSAPasswort(); } //Erstellen des Zertifikates: X509Certificate certificate = CreateX509Certificate(schluesselPaar.Public, schluesselPaar.Private, hashtype, antragsteller, aussteller, gueltigVon, gueltiBis); //Erstelle KeyStore: keyStore = CreatePkcs12Store(certificate, schluesselPaar, antragsteller); //Falls ein Pfad angegeben ist und das Speichern der Zertifikatsinformationen gewünscht ist, werden diese //im Pfad als PKcs12 und DER Format gespeichert, das Passwort falls gewünscht in einer Textfile if (!string.IsNullOrEmpty(zertifikatSpeicherPfad)) { if (string.IsNullOrEmpty(dateiname)) { dateiname = aussteller + "_" + antragsteller + "_" + DateTime.Now.ToString("yyyyMMddHHmmss"); } string speicherPfad = zertifikatSpeicherPfad + "\\" + dateiname; //Speichern des Zertifikates if (zertifikatImPfadSpeichern) { SaveCertAsDER(certificate, speicherPfad); } //Speichern des KeyStores if (keyStoreImPfadSpeicher) { SaveCertAsPkcs12(keyStore, speicherPfad, passwortKeyStore); } //Speichern des Passwortes: if (passwortImPfadSpeichern) { ParseHelper.WriteTextToFile(speicherPfad + ".pas", passwortKeyStore); } } return(certificate); }