Exemplo n.º 1
0
        /// <summary>DecodeRedirect</summary>
        /// <param name="queryString">string</param>
        /// <returns>デコードされたsaml</returns>
        public static string DecodeRedirect(string queryString)
        {
            // EcodeRedirectの逆
            // --------------------------------------------------
            // Saml → URLデコード → Base64デコード
            //   → DEFLATE解凍 → XML宣言のエンコーディング → XML
            // --------------------------------------------------
            // Samlの抽出
            string saml = "";

            if (queryString.IndexOf("SAMLRequest") != -1)
            {
                saml = StringExtractor.GetParameterFromQueryString("SAMLRequest", queryString);
            }
            else if (queryString.IndexOf("SAMLResponse") != -1)
            {
                saml = StringExtractor.GetParameterFromQueryString("SAMLResponse", queryString);
            }
            else
            {
                return("");
            }

            byte[] tempByte = DeflateCompression.Decompress(
                CustomEncode.FromBase64String(CustomEncode.UrlDecode(saml)));

            //// XML宣言部分を取得するために、us_asciiでデコード
            //string tempString = CustomEncode.ByteToString(tempByte, CustomEncode.us_ascii);

            //// エンコーディング オブジェクトの取得
            //Encoding enc = XmlLib.GetEncodingFromXmlDeclaration(tempString);

            return(CustomEncode.ByteToString(tempByte, CustomEncode.us_ascii)); // enc.CodePage);
        }
 /// <summary>MemoryStream</summary>
 private static void MemoryStream()
 {
     // DeflateCompression
     byte[] input        = CustomEncode.StringToByte(TestDeflateCompression.hoge, CustomEncode.UTF_8);
     byte[] compressed   = DeflateCompression.Compress(input);
     byte[] decompressed = DeflateCompression.Decompress(compressed);
     if (TestDeflateCompression.hoge == CustomEncode.ByteToString(decompressed, CustomEncode.UTF_8))
     {
         MyDebug.OutputDebugAndConsole("DeflateCompression(MemoryStream)", "is working properly.");
     }
     else
     {
         MyDebug.OutputDebugAndConsole("DeflateCompression(MemoryStream)", "is not working properly.");
     }
 }
        internal static string Unarchive(string text)
        {
            var data = Convert.FromBase64String(text);

            byte[] unarchivedData         = null;
            var    dataWithEncryptionInfo = DataWithArchivingInfo.FromProcessedData(data);
            var    mode = dataWithEncryptionInfo.Mode;

            switch (mode)
            {
            case StorageModes.CompressAndEncrypt:
                unarchivedData = DeflateCompression.Decompress(AesEncryption.Decrypt(dataWithEncryptionInfo.Data));
                break;

            case StorageModes.Compress:
                unarchivedData = DeflateCompression.Decompress(dataWithEncryptionInfo.Data);
                break;

            case StorageModes.Store:
                unarchivedData = dataWithEncryptionInfo.Data;
                break;
            }
            return(Encoding.UTF8.GetString(unarchivedData));
        }
        /// <summary>FileStream</summary>
        private static void FileStream()
        {
            StreamWriter sr             = null;
            string       inFilePath     = "";
            string       outFilePath    = "";
            string       resultFilePath = "";

            #region outFilePathを明示しないパターン

            // inFilePathの作成
            inFilePath = Path.GetTempFileName();
            sr         = File.CreateText(inFilePath);
            sr.WriteLine(TestDeflateCompression.hoge);
            sr.Close();

            // 圧縮(outFilePath
            outFilePath = DeflateCompression.Compress(inFilePath);
            // 解凍(resultFilePath
            resultFilePath = DeflateCompression.Decompress(outFilePath);

            // ファイルの比較
            if (ResourceLoader.LoadAsString(inFilePath, Encoding.UTF8)
                == ResourceLoader.LoadAsString(resultFilePath, Encoding.UTF8))
            {
                MyDebug.OutputDebugAndConsole("DeflateCompression(FileStream)-1", "is working properly.");
            }
            else
            {
                MyDebug.OutputDebugAndConsole("DeflateCompression(FileStream)-1", "is not working properly.");
            }

            // ファイルの削除
            File.Delete(inFilePath);
            File.Delete(outFilePath);
            File.Delete(resultFilePath);
            #endregion

            #region outFilePathを明示するパターン

            // inFilePathの作成
            inFilePath = Path.GetTempFileName();
            sr         = File.CreateText(inFilePath);
            sr.WriteLine(TestDeflateCompression.hoge);
            sr.Close();

            // 圧縮(outFilePath
            outFilePath = Path.GetTempFileName();
            outFilePath = outFilePath.Remove(outFilePath.Length - 4); // 拡張し無し
            outFilePath = DeflateCompression.Compress(inFilePath, "zz", outFilePath);

            // 解凍(resultFilePath
            resultFilePath = Path.GetTempFileName();
            resultFilePath = resultFilePath.Remove(outFilePath.Length - 4) + ".dcmp"; // 拡張し有り
            resultFilePath = DeflateCompression.Decompress(outFilePath, "", resultFilePath);

            // ファイルの比較
            if (ResourceLoader.LoadAsString(inFilePath, Encoding.UTF8)
                == ResourceLoader.LoadAsString(resultFilePath, Encoding.UTF8))
            {
                MyDebug.OutputDebugAndConsole("DeflateCompression(FileStream)-2", "is working properly.");
            }
            else
            {
                MyDebug.OutputDebugAndConsole("DeflateCompression(FileStream)-2", "is not working properly.");
            }

            // ファイルの削除
            File.Delete(inFilePath);
            File.Delete(outFilePath);
            File.Delete(resultFilePath);
            #endregion
        }