/// <summary>SignedXml生成メソッド</summary> /// <param name="xmlDoc">XmlDocument</param> /// <param name="referenceId">署名対象ノードのID値(「#」は含まない)</param> /// <param name="preserveWhitespace">SignedXmlの空白・改行を保持する()・しない(false)</param> /// <returns>Signed XmlDocument</returns> public XmlDocument Create(XmlDocument xmlDoc, string referenceId, bool preserveWhitespace = false) { // - SignedXml SignedXml signedXml = new SignedXml(xmlDoc); signedXml.SigningKey = this._rsa; // Reference要素 // - 署名対象ノードをポイント Reference reference = new Reference("#" + referenceId); // - Add Transform reference.AddTransform(new XmlDsigEnvelopedSignatureTransform()); // - Add Transform reference.AddTransform(new XmlDsigExcC14NTransform()); // - Add Reference signedXml.AddReference(reference); // 署名対象ノードのXML署名の生成 // - 署名の計算 signedXml.ComputeSignature(); // - 署名対象ノードのXML署名を XmlNode signatureNode = xmlDoc.ImportNode(signedXml.GetXml(), true); // - 署名対象ノード直下に追加 XmlLib.GetXmlNodeById(xmlDoc, referenceId).AppendChild(signatureNode); // Signed XmlDocumentを返す。 return(xmlDoc); }
/// <summary>VerifyByXsd</summary> /// <param name="saml">string</param> /// <param name="schema">SAML2Enum.SamlSchema</param> /// <returns>bool</returns> /// <remarks> /// SAMLのXSDが作成できていないため書きかけ。 /// - 現時点では、VerifyByXPath メソッドを使って XPath により検証しています。 /// - XSD検証の方が明らかに良い場合は移行を検討します。 /// </remarks> private static bool VerifyByXsd(string saml, SAML2Enum.SamlSchema schema) { string embeddedXsdFileName = ""; string targetNamespace = ""; // どうも、OASISのXSDではダメで、 // - https://docs.oasis-open.org/security/saml/v2.0/saml-schema-protocol-2.0.xsd // - https://docs.oasis-open.org/security/saml/v2.0/saml-schema-assertion-2.0.xsd // 個別にXSDを作成しないとダメっぽい。 switch (schema) { case SAML2Enum.SamlSchema.Request: embeddedXsdFileName = "XXXX.xsd"; // RequestのSAML用のXSD targetNamespace = "urn:oasis:names:tc:SAML:2.0:..."; break; case SAML2Enum.SamlSchema.Response: embeddedXsdFileName = "XXXX.xsd"; // ResponseのSAML用のXSD targetNamespace = "urn:oasis:names:tc:SAML:2.0:..."; break; //case SAML2Enum.SamlSchema.Assertion: // embeddedXsdFileName = "XXXX.xsd"; // targetNamespace = "urn:oasis:names:tc:SAML:2.0:..."; // break; } // 以下の関数は適切に動作するが、XSDに問題があるため動作しない。 return(XmlLib.ValidateByEmbeddedXsd( "OpenTouryo.Framework", saml, embeddedXsdFileName, targetNamespace)); }
public virtual string GetXml() { bool convertFlag = true; string xml = ""; xml = XmlLib.AddToXml(xml, "<detEntry>", 2); xml = XmlLib.AddToXml(xml, "<variants>", "</variants>", variants_, 3, convertFlag); xml = XmlLib.AddToXml(xml, "<interrogative/>", interrogative_, 3); xml = XmlLib.AddToXml(xml, "<demonstrative/>", demonstrative_, 3); xml = XmlLib.AddToXml(xml, "</detEntry>", 2); return(xml); }
/// <summary>Root</summary> public static void Root() { // Xmlロード string xml = EmbeddedResourceLoader.LoadXMLAsString( "OpenTouryo.Public", "Touryo.Infrastructure.Public.Xml.TestXml.xml"); // Xsdによる検証 if (XmlLib.ValidateByEmbeddedXsd( xml, "OpenTouryo.Public", "Touryo.Infrastructure.Public.Xml.TestXsd.xsd", "urn:bookstore-schema")) { MyDebug.OutputDebugAndConsole("XmlLib", "is working properly."); } else { MyDebug.OutputDebugAndConsole("XmlLib", "is not working properly."); } }
/// <summary>GetNameIDInAssertion</summary> /// <param name="xmlDoc">XmlDocument</param> /// <param name="samlNsMgr">XmlNamespaceManager</param> /// <param name="format">out string</param> /// <param name="innerText">out string</param> /// <returns>NameID</returns> public static XmlNode GetNameIDInAssertion( XmlDocument xmlDoc, XmlNamespaceManager samlNsMgr, out string format, out string innerText) { format = ""; innerText = ""; XmlNode nameID = xmlDoc.SelectSingleNode( SAML2Const.XPathNameIDInAssertion, samlNsMgr); if (nameID != null) { format = XmlLib.GetAttributeFromXmlNode(nameID, "Format"); innerText = nameID.InnerText; } return(nameID); }
/// <summary>SignedXml検証メソッド</summary> /// <param name="signedXmlString">SignedXml</param> /// <param name="referenceId">署名対象ノードのID値(「#」は含まない)</param> /// <param name="preserveWhitespace">SignedXmlの空白・改行を保持する()・しない(false)</param> /// <returns>署名の検証結果</returns> public bool Verify(string signedXmlString, string referenceId, bool preserveWhitespace = false) { // 初期処理 // - XmlDocument XmlDocument xmlDoc = new XmlDocument(); xmlDoc.PreserveWhitespace = preserveWhitespace; xmlDoc.LoadXml(signedXmlString); // 子ノード のXML検証 XmlNode targetNode = XmlLib.GetXmlNodeById(xmlDoc, referenceId); // 署名ノードの直下のSignatureを取り出して、signedXml.LoadXmlする。 SignedXml signedXml = new SignedXml(targetNode.OwnerDocument); signedXml.LoadXml(targetNode["Signature"] as XmlElement); // XML検証 return(signedXml.CheckSignature(this._rsa)); }
/// <summary>GetConditionsNotOnOrAfterInAssertion</summary> /// <param name="xmlDoc">XmlDocument</param> /// <param name="samlNsMgr">XmlNamespaceManager</param> /// <returns>Conditions - NotOnOrAfter</returns> public static string GetConditionsNotOnOrAfterInAssertion( XmlDocument xmlDoc, XmlNamespaceManager samlNsMgr) { return(XmlLib.GetAttributeByXPath( xmlDoc, SAML2Const.XPathConditionsInAssertion, "NotOnOrAfter", samlNsMgr)); }
/// <summary>GetSubjectConfirmationMethodInAssertion</summary> /// <param name="xmlDoc">XmlDocument</param> /// <param name="samlNsMgr">XmlNamespaceManager</param> /// <returns>SubjectConfirmation - Method</returns> public static string GetSubjectConfirmationMethodInAssertion( XmlDocument xmlDoc, XmlNamespaceManager samlNsMgr) { return(XmlLib.GetAttributeByXPath( xmlDoc, SAML2Const.XPathSubjectConfirmationInAssertion, "Method", samlNsMgr)); }
/// <summary>GetStatusCodeInResponse</summary> /// <param name="xmlDoc">XmlDocument</param> /// <param name="samlNsMgr">XmlNamespaceManager</param> /// <returns>StatusCode</returns> public static string GetStatusCodeInResponse( XmlDocument xmlDoc, XmlNamespaceManager samlNsMgr) { return(XmlLib.GetAttributeByXPath( xmlDoc, SAML2Const.XPathStatusCodeInResponse, "Value", samlNsMgr)); }
/// <summary>GetInResponseToInResponse</summary> /// <param name="xmlDoc">XmlDocument</param> /// <param name="samlNsMgr">XmlNamespaceManager</param> /// <returns>InResponseTo</returns> public static string GetInResponseToInResponse( XmlDocument xmlDoc, XmlNamespaceManager samlNsMgr) { return(XmlLib.GetAttributeFromXmlNode( xmlDoc.SelectSingleNode(SAML2Const.XPathResponse, samlNsMgr), "InResponseTo")); }
/// <summary>GetAssertionConsumerServiceURLInRequest</summary> /// <param name="xmlDoc">XmlDocument</param> /// <param name="samlNsMgr">XmlNamespaceManager</param> /// <returns>AssertionConsumerServiceURL</returns> public static string GetAssertionConsumerServiceURLInRequest( XmlDocument xmlDoc, XmlNamespaceManager samlNsMgr) { return(XmlLib.GetAttributeByXPath( xmlDoc, SAML2Const.XPathRequest, "AssertionConsumerServiceURL", samlNsMgr)); }
/// <summary>GetNameIDPolicyFormatInRequest</summary> /// <param name="xmlDoc">XmlDocument</param> /// <param name="samlNsMgr">XmlNamespaceManager</param> /// <returns>NameIDPolicy - Format</returns> public static string GetNameIDPolicyFormatInRequest( XmlDocument xmlDoc, XmlNamespaceManager samlNsMgr) { return(XmlLib.GetAttributeByXPath( xmlDoc, SAML2Const.XPathNameIDPolicyInRequest, "Format", samlNsMgr)); }
/// <summary>GetIdInAssertion</summary> /// <param name="xmlDoc">XmlDocument</param> /// <param name="samlNsMgr">XmlNamespaceManager</param> /// <returns>Id</returns> public static string GetIdInAssertion( XmlDocument xmlDoc, XmlNamespaceManager samlNsMgr) { return(XmlLib.GetAttributeByXPath( xmlDoc, @"/saml:Assertion", "ID", samlNsMgr)); }
public static void getAllItems() { int i = 1; MySqlConnection connection = new MySqlConnection(globals.connectionString); MySqlDataReader reader = null; try { string dbCommand = "CREATE TABLE IF NOT EXISTS allItems (itemID INT PRIMARY KEY, itemName NVARCHAR(50), itemPrice NVARCHAR(50), itemBaseStrength INT(3));"; MySqlCommand command = new MySqlCommand(dbCommand, connection); connection.Open(); command.ExecuteNonQuery(); List <string> categories = new List <string>(); command.CommandText = "SELECT categoryName FROM categories"; reader = command.ExecuteReader(); while (reader.Read()) { categories.Add(reader[0].ToString()); } string html; command.CommandText = "REPLACE INTO allItems (itemID, itemName, itemPrice, itemBaseStrength) VALUES"; int pageCount = Convert.ToInt32(XmlLib.getFromXml(globals.xmlFilePath, "int", "gameElementsNumber")); HtmlAgilityPack.HtmlDocument doc = null; while (i < pageCount) { html = DwarRequest.getRequest("http://w1.dwar.ru/artifact_info.php?artikul_id=" + i, ref cookie); doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(html); HtmlNode itemPriceNode = doc.DocumentNode.SelectSingleNode("//*[@title='Цена']"); HtmlNode itemStrengthNode = doc.DocumentNode.SelectSingleNode("//*[@title='Прочность предмета']"); if (isAddable(doc, categories, i, itemPriceNode, itemStrengthNode)) { string nameItem = doc.DocumentNode.SelectNodes("//h1")[1].InnerText; if (nameItem.Length < 51) { command.CommandText += "('" + i + "','" + MySqlHelper.EscapeString(nameItem) + "','" + getItemPrice(itemPriceNode) + "',"; if (itemStrengthNode != null) { command.CommandText += "'" + itemStrengthNode.InnerText.Remove(0, itemStrengthNode.InnerText.IndexOf('/') + 1) + "'"; } else { command.CommandText += "NULL"; } command.CommandText += "),"; } } i++; } reader.Close(); command.CommandText = command.CommandText.TrimEnd(',') + ";"; command.ExecuteNonQuery(); MessageBox.Show("Предметы получены"); globals.dwarLog.Trace("Предметы получены"); } catch (Exception exception) { globals.dwarLog.Error(exception.ToString() + "i=" + i); MessageBox.Show(exception.Message); } finally { if (connection.State != System.Data.ConnectionState.Closed) { connection.Close(); } if (reader != null && reader.IsClosed == false) { reader.Close(); } } }
/// <summary>GetIdInRequest</summary> /// <param name="xmlDoc">XmlDocument</param> /// <param name="samlNsMgr">XmlNamespaceManager</param> /// <returns>Id</returns> public static string GetIdInRequest( XmlDocument xmlDoc, XmlNamespaceManager samlNsMgr) { return(XmlLib.GetAttributeByXPath( xmlDoc, @"/samlp:AuthnRequest", "ID", samlNsMgr)); }
/// <summary>GetProtocolBindingInRequest</summary> /// <param name="xmlDoc">XmlDocument</param> /// <param name="samlNsMgr">XmlNamespaceManager</param> /// <returns>ProtocolBinding</returns> public static string GetProtocolBindingInRequest( XmlDocument xmlDoc, XmlNamespaceManager samlNsMgr) { return(XmlLib.GetAttributeByXPath( xmlDoc, SAML2Const.XPathRequest, "ProtocolBinding", samlNsMgr)); }
/// <summary>[埋め込まれたリソースXMLファイル]から文字列を読み込む。</summary> /// <param name="assemblyString"> /// アセンブリ名("既定の名前空間"とは異なる) /// </param> /// <param name="loadfileName">[埋め込まれたリソースXMLファイル]の名前(名前空間付き)</param> /// <returns>[埋め込まれたリソースXMLファイル]から読み込んだ文字列</returns> /// <remarks>自由に利用できる。</remarks> public static string LoadXMLAsString(string assemblyString, string loadfileName) { // エントリのアセンブリ Assembly thisAssembly = null; ManifestResourceInfo manifestResourceInfo = null; // ストリーム StreamReader sr = null; // リーダ(XML) XmlTextReader xtr = null; // 例外処理 try { thisAssembly = MyAssemblies.GetAssembly(assemblyString); manifestResourceInfo = thisAssembly.GetManifestResourceInfo(loadfileName); } catch (Exception) { // なにもしない。 } try { // 存在チェック if (manifestResourceInfo != null) { if (0 != (manifestResourceInfo.ResourceLocation & (ResourceLocation.ContainedInManifestFile | ResourceLocation.Embedded))) { // 存在する。 } else { // 存在しない。 throw new ArgumentException(String.Format( PublicExceptionMessage.RESOURCE_FILE_NOT_FOUND, loadfileName)); } } else { // 存在しない。 throw new ArgumentException(String.Format( PublicExceptionMessage.RESOURCE_FILE_NOT_FOUND, loadfileName)); } // 既定のエンコーディングでロードして、 sr = new StreamReader(thisAssembly.GetManifestResourceStream(loadfileName)); // XML宣言を取得して、 // <?xml version="1.0" encoding="xxxx" ?> string xmlDeclaration = sr.ReadLine(); sr.Close(); // エンコーディング オブジェクトの取得 Encoding enc = XmlLib.GetEncodingFromXmlDeclaration(xmlDeclaration); // 指定のエンコーディングで再ロード sr = new StreamReader(thisAssembly.GetManifestResourceStream(loadfileName), enc); // 読む return(sr.ReadToEnd()); } finally { // nullチェック if (xtr == null) { // 何もしない。 } else { // 閉じる xtr.Close(); } // nullチェック if (sr == null) { // 何もしない。 } else { // 閉じる sr.Close(); } } }