示例#1
0
        public static AsymmetricKeyParameter GetPublicKeyFromPkcsStore(string certPath, string passwort)
        {
            Pkcs12Store store = CertHelper.LadePkcsStore(certPath, passwort);

            return(GetPublicKeyFromPkcsStore(store));
        }
示例#2
0
        /// <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();
        }
示例#3
0
        public static AsymmetricKeyParameter GetPublicKeyFromX509Cert(string pfadZertifikat)
        {
            X509Certificate cert = CertHelper.Ladex509Certificate(pfadZertifikat);

            return(GetPublicKeyFromX509Cert(cert));
        }