public static AsymmetricKeyParameter GetPublicKeyFromPkcsStore(string certPath, string passwort) { Pkcs12Store store = CertHelper.LadePkcsStore(certPath, passwort); return(GetPublicKeyFromPkcsStore(store)); }
/// <summary> /// Entschlüsselung einer verschlüsselten XML Struktur /// </summary> /// <param name="Doc"></param> /// <param name="keyStore"></param> /// <param name="keyStorePasswort"></param> private static void DecryptXML(XmlDocument Doc, Pkcs12Store keyStore, string keyStorePasswort) { System.Security.Cryptography.X509Certificates.X509Certificate2 cert = new System.Security.Cryptography.X509Certificates.X509Certificate2(CertHelper.ConvertPkcs12ToByteArray(keyStore, keyStorePasswort), keyStorePasswort); //Heranziehen des privaten Schlüssels: RSACryptoServiceProvider privateKeyProvider = null; privateKeyProvider = (RSACryptoServiceProvider)(cert.PrivateKey); //Kompatibilität Java Anfang --> XmlElement keyNameNode = null; string keyName = "rsaKeyName"; foreach (string keyNameName in GetNodeKeyNameCollection()) { keyNameNode = Doc.GetElementsByTagName(keyNameName)[0] as XmlElement; if (keyNameNode != null) { break; } } if (keyNameNode == null) { XmlElement encryptedKey = null; foreach (string encryptionKeyName in GetNodeEncryptionKeyNameCollection()) { encryptedKey = Doc.GetElementsByTagName(encryptionKeyName)[0] as XmlElement; if (encryptedKey != null) { break; } } if (encryptedKey != null) { XmlElement elementKeyMethod = null; foreach (string elementKeyMethodName in GetNodeEncryptionMethodCollection()) { elementKeyMethod = encryptedKey.GetElementsByTagName(elementKeyMethodName)[0] as XmlElement; if (elementKeyMethod != null) { break; } } if (elementKeyMethod != null) { XmlElement elementKeyInfo = Doc.CreateElement("KeyInfo", SignedXml.XmlDsigNamespaceUrl); XmlElement elementKeyName = Doc.CreateElement("KeyName", SignedXml.XmlDsigNamespaceUrl); elementKeyName.InnerText = keyName; elementKeyInfo.AppendChild(elementKeyName); encryptedKey.InsertAfter(elementKeyInfo, elementKeyMethod); } } } else { if (!string.IsNullOrEmpty(keyNameNode.InnerText)) { keyName = keyNameNode.InnerText; } else { keyName = ""; } } // Kompatibilität Java Ende <-- //Entschlüsselung: EncryptedXml exml = new EncryptedXml(Doc); exml.AddKeyNameMapping(keyName, privateKeyProvider); exml.DecryptDocument(); }
public static AsymmetricKeyParameter GetPublicKeyFromX509Cert(string pfadZertifikat) { X509Certificate cert = CertHelper.Ladex509Certificate(pfadZertifikat); return(GetPublicKeyFromX509Cert(cert)); }