Example #1
0
        public void FromCapiKeyBlobDSA()
        {
            DSA dsa = CryptoConvert.FromCapiKeyBlobDSA(dsaPrivBlob);

            Assert.AreEqual(dsaKeyPairString, dsa.ToXmlString(true), "KeyPair");
            Assert.AreEqual(dsaPubKeyString, dsa.ToXmlString(false), "PublicKey");
        }
Example #2
0
        public static void FromToXml()
        {
            using (DSA dsa = DSAFactory.Create())
            {
                DSAParameters pubOnly = dsa.ExportParameters(false);
                DSAParameters pubPriv = dsa.ExportParameters(true);

                string xmlPub  = dsa.ToXmlString(false);
                string xmlPriv = dsa.ToXmlString(true);

                using (DSA dsaPub = DSAFactory.Create())
                {
                    dsaPub.FromXmlString(xmlPub);

                    DSAImportExport.AssertKeyEquals(pubOnly, dsaPub.ExportParameters(false));
                }

                using (DSA dsaPriv = DSAFactory.Create())
                {
                    dsaPriv.FromXmlString(xmlPriv);

                    DSAImportExport.AssertKeyEquals(pubPriv, dsaPriv.ExportParameters(true));
                    DSAImportExport.AssertKeyEquals(pubOnly, dsaPriv.ExportParameters(false));
                }
            }
        }
Example #3
0
        public void ImportExportWithoutY()
        {
            DSA           d     = DSA.Create();
            DSAParameters input = AllTests.GetKey(true);

            input.Y = null;
            // Y is calculated from X
            d.ImportParameters(input);
            Assert.AreEqual(xmlPrivate, d.ToXmlString(true), "xmlPrivate");
            Assert.AreEqual(xmlPublic, d.ToXmlString(false), "xmlPublic");
        }
Example #4
0
        public void ToXmlStringWithoutSeed()
        {
            DSA d = DSA.Create();

            d.FromXmlString("<DSAKeyValue><P>vb95327o8+f5lbrS9qSXxLQYTkcP/WTlJnI0fuw/vFaf7DFQe/ORdTqpa0I3okDOcRiUihzr0y58aQarlNf58MMhMcx/XqRzB2UOVZ/bt2EpfAC3CISwXHlHFoW6+dCHpc72aJOXpreWV6k0oZUg71tKMsPVUP1I8xgELArxAUE=</P><Q>5ul/yRjQ8hFv4w94ZHsP337ebjk=</Q><G>NunCU4DkWaq6IKKhRPCMBBmMgILU8Zqd3aHe0UyKZLYFSOjcKkOIPJ9iWtfDtErHcxb3yjHRV6/EndR+wX8rNsTjYDeUGg5vC6IV4Es+rRCmhVXQ7Y2N+bAH71VxPRbNC90NjgYqKwXZHf2l6c+W4XRvRvNiM5puwz+ubWcm5AA=</G><Y>hQinH+upZPNtTS2o7bi03EOybn9eHC8U61/Rax+oe00YPG+0Md7Okup6CMxZmww0n2F8W7YRZeI7Pltm8TlpmUdMmGSAiILUX585vFM19GR4XeSecqpj1BFO/x4T9tGeakoWxquEjFl4JqEuvDQwnvM76jWDmkUTI4U8kJPnHcw=</Y><J>0l0NjQKpwTJt+h8qmlXhbt4jL+OnaSZkM1zdyIPmOpNavJz7slGtoDAneoQ8STNiT+RrNqGdPbs5glAP8sXS0mdKJ6dGQuySGwGZTP9cWCq81YjRJJ74QuPJUYUruuhN0RTkiukqGzkJYQtA</J></DSAKeyValue>");
            d.ToXmlString(false);
        }
Example #5
0
        public void DSAImportPrivateExportPrivate()
        {
            DSAParameters input = AllTests.GetKey(true);

            dsa.ImportParameters(input);
            string xmlDSA = dsa.ToXmlString(true);

            dsa.FromXmlString(xmlDSA);
            Assert.AreEqual(xmlPrivate, xmlDSA, "DSA Import Private Export Private (xml)");
            DSAParameters output = dsa.ExportParameters(true);

            AssertEquals("DSA Import Private Export Private (binary)", AllTests.GetKey(true), output, true);
        }
Example #6
0
        public void FromXmlString_TwoKeys()
        {
            DSA    second = DSA.Create();
            string xml    = "<two>" + xmlPublic + second.ToXmlString(false) + "</two>";

            dsa.FromXmlString(xml);
            Assert.AreEqual(xmlPublic, dsa.ToXmlString(false), "TwoKeys");
        }
Example #7
0
        public void ToXmlStringWithZeroCounter()
        {
            DSA d = DSA.Create();

            // <PgenCounter>AA==</PgenCounter> == 0
            d.FromXmlString("<DSAKeyValue><P>s/Oc0t4gj0NRqkCKi4ynJnOAEukNhjkHJPOzNsHP69kyHMUwZ3AzOkLGYOWlOo2zlYKzSbZygDDI5dCWA5gQF2ZGHEUlWJMgUyHmkybOi44cyHaX9yeGfbnoc3xF9sYgkA3vPUZaJuYMOsBp3pyPdeN8/mLU8n0ivURyP+3Ge9M=</P><Q>qkcTW+Ce0L5k8OGTUMkRoGKDc1E=</Q><G>PU/MeGp6I/FBduuwD9UPeCFzg8Ib9H5osku5nT8AhHTY8zGqetuvHhxbESt4lLz8aXzX0oIiMsusBr6E/aBdooBI36fHwW8WndCmwkB1kv7mhRIB4302UrfvC2KWQuBypfl0++a1whBMCh5VTJYH1sBkFIaVNeUbt5Q6/UdiZVY=</G><Y>shJRUdGxEYxSKM5JVol9HAdQwIK+wF9X4n9SAD++vfZOMOYi+M1yuvQAlQvnSlTTWr7CZPRVAICLgDBbqi9iN+Id60ccJ+hw3pGDfLpJ7IdFPszJEeUO+SZBwf8njGXULqSODs/NTciiX7E07rm+KflxFOg0qtWAhmYLxIkDx7s=</Y><J>AAAAAQ6LSuRiYdsocZ6rgyqIOpE1/uCO1PfEn758Lg2VW6OHJTYHNC30s0gSTG/Jt3oHYX+S8vrtNYb8kRJ/ipgcofGq2Qo/cYKP7RX2K6EJwSfWInhsNMr1JmzuK0lUKkXXXVo15fL8O2/16uEWMg==</J><Seed>uYM5b20luvbuyevi9TXHwekbr5s=</Seed><PgenCounter>AA==</PgenCounter><X>fAOytZttUZFzt/AvwRinmvYKL7E=</X></DSAKeyValue>");
            d.ToXmlString(false);
        }
Example #8
0
 public static void TestPlatformNotSupportedException()
 {
     using (DSA dsa = DSAFactory.Create())
     {
         Assert.Throws <PlatformNotSupportedException>(() => dsa.FromXmlString(null));
         Assert.Throws <PlatformNotSupportedException>(() => dsa.ToXmlString(true));
     }
 }
Example #9
0
        public override XmlElement GetXml()
        {
            XmlDocument document = new XmlDocument();
            XmlElement  xel      = document.CreateElement(XmlSignature.ElementNames.KeyValue, XmlSignature.NamespaceURI);

            xel.SetAttribute("xmlns", XmlSignature.NamespaceURI);
            xel.InnerXml = dsa.ToXmlString(false);
            return(xel);
        }
Example #10
0
        /// <include file='doc\KeyInfo.uex' path='docs/doc[@for="DSAKeyValue.GetXml"]/*' />
        public override XmlElement GetXml()
        {
            XmlDocument xmlDocument     = new XmlDocument();
            XmlElement  keyValueElement = xmlDocument.CreateElement("KeyValue", SignedXml.XmlDsigNamespaceUrl);
            // Get the *public components of the DSA key*
            String dsaKeyValueXmlString = m_key.ToXmlString(false);
            // Set the content of the KeyValue element to be the xmlString
            String keyValueXmlString = "<KeyValue xmlns=\"" + SignedXml.XmlDsigNamespaceUrl + "\">" + dsaKeyValueXmlString + "</KeyValue>";

            xmlDocument.LoadXml(keyValueXmlString);
            return(xmlDocument.DocumentElement);
        }
Example #11
0
        public void FromCapiPublicKeyBlobDSA()
        {
            DSA dsa = CryptoConvert.FromCapiPublicKeyBlobDSA(dsaPubBlob, 0);

            Assert.AreEqual(dsaPubKeyString, dsa.ToXmlString(false), "PublicKey");
        }
Example #12
0
        public void FromCapiPrivateKeyBlobDSA()
        {
            DSA dsa = CryptoConvert.FromCapiPrivateKeyBlobDSA(dsaPrivBlob, 0);

            Assert.AreEqual(dsaKeyPairString, dsa.ToXmlString(true), "KeyPair");
        }
Example #13
0
        public void ImportExportWithoutJ()
        {
            DSA           d     = DSA.Create();
            DSAParameters input = AllTests.GetKey(false);

            input.J = null;
            // J is calculated (usually pre-calculated)
            d.ImportParameters(input);
            input = d.ExportParameters(false);
            // if J isn't imported, then it's not exportable and not part of the xml
            Assert.IsNull(input.J, "exported-J");
            Assert.AreEqual("<DSAKeyValue><P>s/Oc0t4gj0NRqkCKi4ynJnOAEukNhjkHJPOzNsHP69kyHMUwZ3AzOkLGYOWlOo2zlYKzSbZygDDI5dCWA5gQF2ZGHEUlWJMgUyHmkybOi44cyHaX9yeGfbnoc3xF9sYgkA3vPUZaJuYMOsBp3pyPdeN8/mLU8n0ivURyP+3Ge9M=</P><Q>qkcTW+Ce0L5k8OGTUMkRoGKDc1E=</Q><G>PU/MeGp6I/FBduuwD9UPeCFzg8Ib9H5osku5nT8AhHTY8zGqetuvHhxbESt4lLz8aXzX0oIiMsusBr6E/aBdooBI36fHwW8WndCmwkB1kv7mhRIB4302UrfvC2KWQuBypfl0++a1whBMCh5VTJYH1sBkFIaVNeUbt5Q6/UdiZVY=</G><Y>shJRUdGxEYxSKM5JVol9HAdQwIK+wF9X4n9SAD++vfZOMOYi+M1yuvQAlQvnSlTTWr7CZPRVAICLgDBbqi9iN+Id60ccJ+hw3pGDfLpJ7IdFPszJEeUO+SZBwf8njGXULqSODs/NTciiX7E07rm+KflxFOg0qtWAhmYLxIkDx7s=</Y><Seed>uYM5b20luvbuyevi9TXHwekbr5s=</Seed><PgenCounter>4A==</PgenCounter></DSAKeyValue>", d.ToXmlString(false), "xml");
        }
Example #14
0
        public static ClaimsIdentity CreateFromCertificate(X509Certificate2 certificate, string authenticationType = "X.509", bool includeAllClaims = false)
        {
            var claims = new List <Claim>();
            var issuer = certificate.Issuer;

            claims.Add(new Claim("issuer", issuer));

            var thumbprint = certificate.Thumbprint;

            claims.Add(new Claim(ClaimTypes.Thumbprint, thumbprint, ClaimValueTypes.Base64Binary, issuer));

            string name = certificate.SubjectName.Name;

            if (!string.IsNullOrEmpty(name))
            {
                claims.Add(new Claim(ClaimTypes.X500DistinguishedName, name, ClaimValueTypes.String, issuer));
            }

            if (includeAllClaims)
            {
                name = certificate.SerialNumber;
                if (!string.IsNullOrEmpty(name))
                {
                    claims.Add(new Claim(ClaimTypes.SerialNumber, name, "http://www.w3.org/2001/XMLSchema#string", issuer));
                }

                name = certificate.GetNameInfo(X509NameType.DnsName, false);
                if (!string.IsNullOrEmpty(name))
                {
                    claims.Add(new Claim(ClaimTypes.Dns, name, ClaimValueTypes.String, issuer));
                }

                name = certificate.GetNameInfo(X509NameType.SimpleName, false);
                if (!string.IsNullOrEmpty(name))
                {
                    claims.Add(new Claim(ClaimTypes.Name, name, ClaimValueTypes.String, issuer));
                }

                name = certificate.GetNameInfo(X509NameType.EmailName, false);
                if (!string.IsNullOrEmpty(name))
                {
                    claims.Add(new Claim(ClaimTypes.Email, name, ClaimValueTypes.String, issuer));
                }

                name = certificate.GetNameInfo(X509NameType.UpnName, false);
                if (!string.IsNullOrEmpty(name))
                {
                    claims.Add(new Claim(ClaimTypes.Upn, name, ClaimValueTypes.String, issuer));
                }

                name = certificate.GetNameInfo(X509NameType.UrlName, false);
                if (!string.IsNullOrEmpty(name))
                {
                    claims.Add(new Claim(ClaimTypes.Uri, name, ClaimValueTypes.String, issuer));
                }

                RSA key = certificate.PublicKey.Key as RSA;
                if (key != null)
                {
                    claims.Add(new Claim(ClaimTypes.Rsa, key.ToXmlString(false), ClaimValueTypes.RsaKeyValue, issuer));
                }

                DSA dsa = certificate.PublicKey.Key as DSA;
                if (dsa != null)
                {
                    claims.Add(new Claim(ClaimTypes.Dsa, dsa.ToXmlString(false), ClaimValueTypes.DsaKeyValue, issuer));
                }

                var expiration = certificate.GetExpirationDateString();
                if (!string.IsNullOrEmpty(expiration))
                {
                    claims.Add(new Claim(ClaimTypes.Expiration, expiration, ClaimValueTypes.DateTime, issuer));
                }
            }

            return(new ClaimsIdentity(claims, authenticationType));
        }
Example #15
0
        public static IEnumerable <Claim> GetClaimsFromCertificate(X509Certificate2 certificate, string issuer)
        {
            if (certificate == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("certificate");
            }

            ICollection <Claim> claimsCollection = new Collection <Claim>();

            string thumbprint = Convert.ToBase64String(certificate.GetCertHash());

            claimsCollection.Add(new Claim(ClaimTypes.Thumbprint, thumbprint, ClaimValueTypes.Base64Binary, issuer));

            string value = certificate.SubjectName.Name;

            if (!string.IsNullOrEmpty(value))
            {
                claimsCollection.Add(new Claim(ClaimTypes.X500DistinguishedName, value, ClaimValueTypes.String, issuer));
            }

            value = certificate.GetNameInfo(X509NameType.DnsName, false);
            if (!string.IsNullOrEmpty(value))
            {
                claimsCollection.Add(new Claim(ClaimTypes.Dns, value, ClaimValueTypes.String, issuer));
            }

            value = certificate.GetNameInfo(X509NameType.SimpleName, false);
            if (!string.IsNullOrEmpty(value))
            {
                claimsCollection.Add(new Claim(ClaimTypes.Name, value, ClaimValueTypes.String, issuer));
            }

            value = certificate.GetNameInfo(X509NameType.EmailName, false);
            if (!string.IsNullOrEmpty(value))
            {
                claimsCollection.Add(new Claim(ClaimTypes.Email, value, ClaimValueTypes.String, issuer));
            }

            value = certificate.GetNameInfo(X509NameType.UpnName, false);
            if (!string.IsNullOrEmpty(value))
            {
                claimsCollection.Add(new Claim(ClaimTypes.Upn, value, ClaimValueTypes.String, issuer));
            }

            value = certificate.GetNameInfo(X509NameType.UrlName, false);
            if (!string.IsNullOrEmpty(value))
            {
                claimsCollection.Add(new Claim(ClaimTypes.Uri, value, ClaimValueTypes.String, issuer));
            }

            RSA rsa = certificate.PublicKey.Key as RSA;

            if (rsa != null)
            {
                claimsCollection.Add(new Claim(ClaimTypes.Rsa, rsa.ToXmlString(false), ClaimValueTypes.RsaKeyValue, issuer));
            }

            DSA dsa = certificate.PublicKey.Key as DSA;

            if (dsa != null)
            {
                claimsCollection.Add(new Claim(ClaimTypes.Dsa, dsa.ToXmlString(false), ClaimValueTypes.DsaKeyValue, issuer));
            }

            value = certificate.SerialNumber;
            if (!string.IsNullOrEmpty(value))
            {
                claimsCollection.Add(new Claim(ClaimTypes.SerialNumber, value, ClaimValueTypes.String, issuer));
            }

            return(claimsCollection);
        }
Example #16
0
        private void CreateCrypto(string pyt, ref XmlDocument doc, TextBox textBoxName)
        {
            XmlTextReader gf   = new XmlTextReader(pyt);
            string        buff = doc.OuterXml;
            int           j    = 0;

            //Проверка есть ли уже криптография
            for (int i = 0; i < buff.Length; i++)
            {
                string sig = "Signature";
                char   a   = buff[i];
                char   b   = sig[j];
                if (buff[i] == sig[j])
                {
                    string str = "";
                    for (int k = 0; k < sig.Length; k++)
                    {
                        str += buff[i + k];
                    }
                    //j++;
                    if (str == sig)
                    {
                        MessageBox.Show("Ключ уже создан");
                        goto BB;
                    }
                }
            }
            DSA        Key        = DSA.Create();
            string     xmls       = Key.ToXmlString(false);
            XmlElement xmlElement = doc.CreateElement("KEy");

            xmlElement.InnerText = xmls;
            doc.DocumentElement.AppendChild(xmlElement);
            dris.Key = Key;
            SignedXml signedXml = new SignedXml(doc);

            signedXml.SigningKey = Key;
            Reference reference = new Reference();

            reference.Uri = "";
            XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform();

            reference.AddTransform(env);
            signedXml.AddReference(reference);
            signedXml.ComputeSignature();
            XmlElement xmlDigitalSignature = signedXml.GetXml();

            doc.DocumentElement.AppendChild(doc.ImportNode(xmlDigitalSignature, true));

            if (doc.FirstChild is XmlDeclaration)
            {
                doc.RemoveChild(doc.FirstChild);
            }
            gf.Close();
            XmlTextWriter xmltw = new XmlTextWriter(pyt, System.Text.Encoding.UTF8);

            doc.WriteTo(xmltw);
            xmltw.Close();
            BB :;
            if (gf.ReadState != ReadState.Closed)
            {
                gf.Close();
            }

            //XmlDocument doc = new XmlDocument();
            //doc.PreserveWhitespace = false;
            //XmlTextReader gf = new XmlTextReader(pyt);
            //doc.Load(gf);
            //string buff = doc.OuterXml;
            //int j = 0;
            ////Проверка есть ли уже криптография
            //for(int i =0;i<buff.Length;i++)
            //{
            //    string sig = "Signature";
            //    char a = buff[i];
            //    char b = sig[j];
            //    if(buff[i]==sig[j])
            //    {
            //        string str = "";
            //        for(int k=0;k<sig.Length;k++)
            //        {
            //            str += buff[i + k];
            //        }
            //        //j++;
            //        if(str == sig)
            //        {
            //            MessageBox.Show("Ключ уже создан");
            //            goto BB;
            //        }
            //    }
            //}
            //DSA Key = DSA.Create();
            //dris.Key = Key;
            //SignedXml signedXml = new SignedXml(doc);
            //signedXml.SigningKey = Key;
            //Signature XMLSignature = signedXml.Signature;
            //Reference reference = new Reference("");
            //XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform();
            //reference.AddTransform(env);
            //XMLSignature.SignedInfo.AddReference(reference);
            //KeyInfo keyInfo = new KeyInfo();
            //keyInfo.AddClause(new DSAKeyValue((DSA)Key));
            //XMLSignature.KeyInfo = keyInfo;
            //signedXml.ComputeSignature();
            //XmlElement xmlDigitalSignature = signedXml.GetXml();
            //doc.DocumentElement.AppendChild(doc.ImportNode(xmlDigitalSignature, true));
            ////DSA dfs = DSA.Create();
            ////dfs.FromXmlString("");
            //XmlElement ssdw = doc.CreateElement("Key", Key.SignatureAlgorithm);
            //doc.DocumentElement.AppendChild(ssdw);
            //if (doc.FirstChild is XmlDeclaration)
            //{
            //    doc.RemoveChild(doc.FirstChild);
            //}
            //gf.Close();
            ////doc.Save(pyt);
            //XmlTextWriter xmltw = new XmlTextWriter(pyt, System.Text.Encoding.UTF8);
            //doc.WriteTo(xmltw);
            //xmltw.Close();
            //BB:;
            ////
        }