public void FromCapiKeyBlobDSA() { DSA dsa = CryptoConvert.FromCapiKeyBlobDSA(dsaPrivBlob); Assert.AreEqual(dsaKeyPairString, dsa.ToXmlString(true), "KeyPair"); Assert.AreEqual(dsaPubKeyString, dsa.ToXmlString(false), "PublicKey"); }
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)); } } }
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"); }
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); }
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); }
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"); }
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); }
public static void TestPlatformNotSupportedException() { using (DSA dsa = DSAFactory.Create()) { Assert.Throws <PlatformNotSupportedException>(() => dsa.FromXmlString(null)); Assert.Throws <PlatformNotSupportedException>(() => dsa.ToXmlString(true)); } }
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); }
/// <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); }
public void FromCapiPublicKeyBlobDSA() { DSA dsa = CryptoConvert.FromCapiPublicKeyBlobDSA(dsaPubBlob, 0); Assert.AreEqual(dsaPubKeyString, dsa.ToXmlString(false), "PublicKey"); }
public void FromCapiPrivateKeyBlobDSA() { DSA dsa = CryptoConvert.FromCapiPrivateKeyBlobDSA(dsaPrivBlob, 0); Assert.AreEqual(dsaKeyPairString, dsa.ToXmlString(true), "KeyPair"); }
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"); }
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)); }
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); }
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:; //// }