コード例 #1
0
        public void Test_Base64()
        {
            var bytes = Encoding.ASCII.GetBytes("");
            var s     = TextConversion.ToBase64String(bytes);

            bytes = Encoding.ASCII.GetBytes("H");
            s     = TextConversion.ToBase64String(bytes);
            Assert.AreEqual("SA==", s);
            Assert.AreEqual(TextConversion.FromBase64String(s), bytes);

            bytes = Encoding.ASCII.GetBytes("He");
            s     = TextConversion.ToBase64String(bytes);
            Assert.AreEqual("SGU=", s);
            Assert.AreEqual(TextConversion.FromBase64String(s), bytes);

            bytes = Encoding.ASCII.GetBytes("Hel");
            s     = TextConversion.ToBase64String(bytes);
            Assert.AreEqual("SGVs", s);
            Assert.AreEqual(TextConversion.FromBase64String(s), bytes);

            bytes = Encoding.ASCII.GetBytes("Hell");
            s     = TextConversion.ToBase64String(bytes);
            Assert.AreEqual("SGVsbA==", s);
            Assert.AreEqual(TextConversion.FromBase64String(s), bytes);

            bytes = Encoding.ASCII.GetBytes("Hello");
            s     = TextConversion.ToBase64String(bytes);
            Assert.AreEqual("SGVsbG8=", s);
            Assert.AreEqual(TextConversion.FromBase64String(s), bytes);
        }
コード例 #2
0
        public override void Process(Command command)
        {
            var options = this.LoadOptions <CommandOptions>((TextCommand)command);

            if (options.Modulus != null && options.Exponent != null && options.Algorithm != null)
            {
                var symmetric = new RijndaelManaged();
                symmetric.GenerateKey();

                var modulus  = TextConversion.FromBase64String(options.Modulus);
                var exponent = TextConversion.FromBase64String(options.Exponent);

                var rsaparameters = new RSAParameters();
                rsaparameters.Modulus  = modulus;
                rsaparameters.Exponent = exponent;

                var rsa = new RSACryptoServiceProvider();
                rsa.ImportParameters(rsaparameters);

                var myrsa = new RSACryptoServiceProvider();

                rsaparameters = myrsa.ExportParameters(false);

                Connection.WriteOk
                (
                    "Modulus",
                    TextConversion.ToBase64String(rsaparameters.Modulus),
                    "Exponent",
                    TextConversion.ToBase64String(rsaparameters.Exponent),
                    "IV",
                    TextConversion.ToBase64String(new RSAPKCS1KeyExchangeFormatter(rsa).CreateKeyExchange(symmetric.IV)),
                    "KeyExchange",
                    TextConversion.ToBase64String(new RSAPKCS1KeyExchangeFormatter(rsa).CreateKeyExchange(symmetric.Key))
                );

                Connection.Flush();

                if (options.WaitForReady)
                {
                    Connection.ReadReady();
                }
            }
            else if (options.Compress)
            {
                Connection.WriteOk();
                Connection.Flush();

                this.Connection.ReadStream  = new InteractiveInflaterInputStream(this.Connection.RawReadStream, new Inflater(true));
                this.Connection.WriteStream = new InteractiveDeflaterOutputStream(this.Connection.RawWriteStream, new Deflater(Deflater.DEFAULT_COMPRESSION, true), 512);

                if (options.WaitForReady)
                {
                    Connection.ReadReady();
                }
            }
        }
コード例 #3
0
        public static string DecodeString(string value, string encoding)
        {
            switch (encoding)
            {
            case "url":
                return(TextConversion.FromEscapedHexString(value));

            case "b64":
                return(Encoding.UTF8.GetString(TextConversion.FromBase64String(value)));

            default:
                throw new NotSupportedException();
            }
        }
            public virtual HashValue ComputeHash(string algorithm, long offset, long length)
            {
                StabilizeClientState();

                var response = this.client.SendCommand(DefaultTryCount, @"computehash -o=""{0}"" -l=""{1}"" -a=""{2}""", offset, length, algorithm).ProcessError();

                length = Convert.ToInt64(response.ResponseTuples["length"]);
                var hash = TextConversion.FromBase64String(response.ResponseTuples["hash"]);

                this.position = Convert.ToInt64(response.ResponseTuples["stream-position"]);

                this.client.ReadReady();

                return(new HashValue(hash, algorithm, offset, length));
            }
コード例 #5
0
        private static object PrivateFromString(string s, bool escaped)
        {
            int    x;
            Type   type;
            string typeName, value;

            x = s.IndexOf(':');

            if (x < 0)
            {
                throw new ArgumentException();
            }

            typeName = s.Substring(0, x);
            value    = s.Substring(x + 1);

            if ((type = GetType(typeName)) == null)
            {
                throw new NotSupportedException(typeName);
            }

            if (type == typeof(DateTime))
            {
                DateTime retval;

                retval =
                    DateTime.ParseExact(value, DateTimeFormats.SortableUtcDateTimeFormatWithFractionSecondsString,
                                        System.Globalization.CultureInfo.InvariantCulture);
                retval = DateTime.SpecifyKind(retval, DateTimeKind.Utc);

                return(retval.ToLocalTime());
            }
            else if (type == typeof(byte[]))
            {
                byte[] retval;

                retval = TextConversion.FromBase64String(value);

                return(retval);
            }
            else if (type == typeof(bool))
            {
                value = value.ToLower();

                if (value == "t")
                {
                    return(true);
                }
                else if (value == "f")
                {
                    return(false);
                }
                else
                {
                    return(Convert.ChangeType(value, type));
                }
            }
            else
            {
                if (escaped)
                {
                    if (type == typeof(string))
                    {
                        return(TextConversion.FromEscapedHexString(value));
                    }
                }

                return(Convert.ChangeType(value, type));
            }
        }