コード例 #1
0
ファイル: NaiveSocksCli.cs プロジェクト: smeoow/Naive
        private static void HandleEncrypt(Argument arg)
        {
            var isEncrypting = arg.arg == "--encrypt";

            var alg = arg.GetParaOrThrow(0);
            var key = arg.GetParaOrThrow(1);

            var inputFile  = arg.GetParaOrNull(2);
            var outputFile = arg.GetParaOrNull(3) ?? (inputFile != null ? inputFile + ".enc" : null);
            var input      = inputFile.IsNullOrEmpty() ? Console.OpenStandardInput() : File.OpenRead(inputFile);
            var output     = outputFile.IsNullOrEmpty() ? Console.OpenStandardOutput() : File.Open(outputFile, FileMode.Create);

            var encryptStreamFunc = Ss.GetCipherByName(alg).GetEncryptionStreamFunc(key);

            IMyStream from, to;

            if (isEncrypting)
            {
                from = MyStream.FromStream(input);
                to   = encryptStreamFunc(MyStream.FromStream(output));
            }
            else
            {
                from = encryptStreamFunc(MyStream.FromStream(input));
                to   = MyStream.FromStream(output);
            }

            Task.Run(async() => {
                await MyStream.StreamCopy(from, to, -1, true);
                await output.FlushAsync();
                output.Dispose();
            }).Wait();
        }