Пример #1
0
 public static string RSADecryptWithPkcs12Cert(string pfadZertifikat, string encryptedData, string password)
 {
     return(RSADecryptWithKey(KeyHelper.GetPrivateKeyFromPkcsStore(pfadZertifikat, password), encryptedData));
 }
Пример #2
0
        public static bool VerifySign(string text, string signatur, string pathx509Cert)
        {
            AsymmetricKeyParameter key = KeyHelper.GetPublicKeyFromX509Cert(pathx509Cert);

            return(VerifySign(text, signatur, key));
        }
Пример #3
0
        public static string RSAEncyptWithx509Cert(string pfadx509Cert, string text)
        {
            AsymmetricKeyParameter publicKey = KeyHelper.GetPublicKeyFromX509Cert(pfadx509Cert);

            return(RSAEncryptWithKey(publicKey, text));
        }
Пример #4
0
        /// <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);
        }