Esempio n. 1
0
        public static ISTU NewInstance(Stream stream, uint owVersion, Type type = null)
        {
            if (stream == null)
            {
                return(null);
            }
            long pos = stream.Position;

            using (BinaryReader reader = new BinaryReader(stream, Encoding.Default, true)) {
                if (type != null)
                {
                    return((ISTU)Activator.CreateInstance(type, stream, owVersion));
                    // return new Impl.Version2HashComparer.Version2Comparer(stream, owVersion);  // for debug
                    // return new Impl.Version2HashComparer.MapComparer(stream, owVersion);  // for debug
                }
                if (Version1.IsValidVersion(reader))
                {
                    stream.Position = pos;
                    return(new Version1(stream, owVersion));
                }
                if (Version2.IsValidVersion(reader))
                {
                    stream.Position = pos;
                    return(new Version2(stream, owVersion));
                }
                throw new InvalidDataException("Data stream is not a STU file");
            }
        }
Esempio n. 2
0
        public void RemoveFactWithoutVersionTestCase()
        {
            var version1 = new Version1();
            var version2 = new Version2();

            var factResult1 = new FactResult(0).SetVersionParam(version1);
            var factResult2 = new FactResult(0).SetVersionParam(version2);
            var factResultWithoutVersion = new FactResult(0);

            GivenCreateContainer()
            .And("Added versioned fact.", container =>
            {
                container.Add(factResult1);
                container.Add(factResult2);
                container.Add(factResultWithoutVersion);
            })
            .When("Try get fact.", container =>
                  container.Remove <FactResult>())
            .Then("Check result.", container =>
            {
                foreach (var fact in container)
                {
                    Assert.AreNotEqual(factResultWithoutVersion, fact, "Fact without version not removed.");
                }
            })
            .Run();
        }
Esempio n. 3
0
        void WriteCompressedHeader(BinaryWriter writer)
        {
            writer.Write(NextUnitId);
            float version2 = Single.Parse(Version2.ToString(2));

            writer.Write(version2);
        }
Esempio n. 4
0
        public static bool CompareVersions(string V1, string V2)
        {
            List <int> Version1;
            List <int> Version2;

            try
            {
                Version1 = V1.Replace("V", "").Split('.').Select(x => Convert.ToInt32(x)).ToList();
                Version2 = V2.Replace("V", "").Split('.').Select(x => Convert.ToInt32(x)).ToList();
            }
            catch { return(false); }

            for (var i = 0; i < Version1.Count(); i++)
            {
                if (i >= Version2.Count())
                {
                    Version2.Add(0);
                }
                if (Version1[i] > Version2[i])
                {
                    return(true);
                }
                if (Version1[i] < Version2[i])
                {
                    return(false);
                }
            }
            return(false);
        }
Esempio n. 5
0
        public void Version2SignatureVerificationInvalidPublicKeyFails()
        {
            // Arrange
            var paseto = new Version2();

            // Act & Assert
            Assert.Throws <ArgumentException>(() => paseto.Verify(TokenV2, new byte[16]));
        }
Esempio n. 6
0
        public void Version2SignatureVerificationInvalidTokenHeaderFails()
        {
            // Arrange
            var paseto = new Version2();

            // Act & Assert
            Assert.Throws <NotSupportedException>(() => paseto.Verify("v2.remote.", new byte[32]));
        }
Esempio n. 7
0
        public void Version2SignatureVerificationNullPublicKeyFails()
        {
            // Arrange
            var paseto = new Version2();

            // Act & Assert
            Assert.Throws <ArgumentNullException>(() => paseto.Verify(TokenV2, null));
        }
Esempio n. 8
0
        public void Version2SignatureEmptySecretFails()
        {
            // Arrange
            var paseto = new Version2();

            // Act & Assert
            Assert.Throws <ArgumentException>(() => paseto.Sign(new byte[0], HelloPaseto));
        }
Esempio n. 9
0
        public void Version2SignatureVerificationEmptyTokenFails()
        {
            // Arrange
            var paseto = new Version2();

            // Act & Assert
            Assert.Throws <ArgumentNullException>(() => paseto.Verify(string.Empty, null));
        }
Esempio n. 10
0
        public void Version2SignatureNullSecretFails()
        {
            // Arrange
            var paseto = new Version2();

            // Act & Assert
            Assert.Throws <ArgumentNullException>(() => paseto.Sign(null, HelloPaseto));
        }
Esempio n. 11
0
        public void Version2SignatureVerificationInvalidTokenBodyFails()
        {
            // Arrange
            var paseto = new Version2();

            // Act & Assert
            Assert.Throws <NotSupportedException>(() => paseto.Verify("v2.public.eyJleGFtcGxlIjoiSGVsbG8gUGFzZX", new byte[32]));
        }
Esempio n. 12
0
        public void Versioning()
        {
            var v1 = new Version1
            {
                MyProperty1 = 100,
                MyProperty2 = 200,
                MyProperty3 = 300
            };

            var v2 = new Version2
            {
                MyProperty1 = 100,
                MyProperty2 = 200,
                MyProperty3 = 300,
                MyProperty5 = 500,
            };

            var v0 = new Version0
            {
                MyProperty1 = 100,
            };

            var v1Bytes = MessagePackSerializer.Serialize(v1);
            var v2Bytes = MessagePackSerializer.Serialize(v2);
            var v0Bytes = MessagePackSerializer.Serialize(v0);

            var a = MessagePackSerializer.Deserialize <Version1>(v1Bytes);

            a.MyProperty1.Is(100);
            a.MyProperty2.Is(200);
            a.MyProperty3.Is(300);

            var b = MessagePackSerializer.Deserialize <Version2>(v2Bytes);

            b.MyProperty1.Is(100);
            b.MyProperty2.Is(200);
            b.MyProperty3.Is(300);
            b.MyProperty5.Is(500);

            var c = MessagePackSerializer.Deserialize <Version0>(v0Bytes);

            c.MyProperty1.Is(100);

            // smaller than schema
            var v2_ = MessagePackSerializer.Deserialize <Version2>(v1Bytes);

            v2_.MyProperty1.Is(v1.MyProperty1);
            v2_.MyProperty2.Is(v1.MyProperty2);
            v2_.MyProperty3.Is(v1.MyProperty3);
            v2_.MyProperty5.Is(0);

            // larger than schema

            var v0_ = MessagePackSerializer.Deserialize <Version0>(v1Bytes);

            v0_.MyProperty1.Is(v1.MyProperty1);
        }
Esempio n. 13
0
        public void Version2SignatureEmptyPayloadFails()
        {
            // Arrange
            var paseto = new Version2();

            Ed25519.KeyPairFromSeed(out var pk, out var sk, new byte[32]);

            // Act & Assert
            Assert.Throws <ArgumentNullException>(() => paseto.Sign(sk, string.Empty));
        }
Esempio n. 14
0
        public static T[] GetAllInstances <T>(ulong key) where T : STUInstance
        {
            ISTU     stu  = OpenSTUSafe(key);
            Version2 ver2 = stu as Version2;

            if (ver2 == null)
            {
                return(null);
            }
            return(stu?.Instances.Concat(ver2.HiddenInstances).OfType <T>().ToArray() ?? new T[0]);
        }
    public static void Main()
    {
        Int32 version = 3;

        switch (version)
        {
        case 1: Version1.Go(); break;

        case 2: Version2.Go(); break;

        case 3: Version3.Go(); break;
        }
    }
Esempio n. 16
0
        public void Version2SignatureTest()
        {
            // Arrange
            var paseto = new Version2();
            var seed   = new byte[32];

            Ed25519.KeyPairFromSeed(out var pk, out var sk, seed);

            // Act
            var signature = paseto.Sign(sk, HelloPaseto);

            // Assert
            Assert.IsNotNull(signature);
        }
Esempio n. 17
0
        public void Versioning()
        {
            var v1 = new Version1
            {
                MyProperty1 = 100,
                MyProperty2 = 200,
                MyProperty3 = 300
            };

            var v2 = new Version2
            {
                MyProperty1 = 100,
                MyProperty2 = 200,
                MyProperty3 = 300,
                MyProperty5 = 500,
            };

            var v0 = new Version0
            {
                MyProperty1 = 100,
            };

            var v1Bytes = serializer.Serialize(v1);
            var v2Bytes = serializer.Serialize(v2);
            var v0Bytes = serializer.Serialize(v0);

            var a = serializer.ToJson(v1Bytes);
            var b = serializer.ToJson(v2Bytes);
            var c = serializer.ToJson(v0Bytes);

            serializer.Deserialize <Version1>(v1Bytes).IsNotStructuralEqual(v1Bytes);
            serializer.Deserialize <Version2>(v2Bytes).IsNotStructuralEqual(v2Bytes);
            serializer.Deserialize <Version0>(v0Bytes).IsNotStructuralEqual(v0Bytes);

            // smaller than schema
            var v2_ = serializer.Deserialize <Version2>(v1Bytes);

            v2_.MyProperty1.Is(v1.MyProperty1);
            v2_.MyProperty2.Is(v1.MyProperty2);
            v2_.MyProperty3.Is(v1.MyProperty3);
            v2_.MyProperty5.Is(0);

            // larger than schema

            var v0_ = serializer.Deserialize <Version0>(v1Bytes);

            v0_.MyProperty1.Is(v1.MyProperty1);
        }
Esempio n. 18
0
        public void Version2SignatureVerificationTest()
        {
            // Arrange
            var paseto = new Version2();
            var seed   = new byte[32];

            RandomNumberGenerator.Create().GetBytes(seed);
            Ed25519.KeyPairFromSeed(out var pk, out var sk, seed);

            //var pub = Convert.ToBase64String(pk);

            // Act
            var token    = paseto.Sign(sk, HelloPaseto);
            var verified = paseto.Verify(token, pk).Valid;

            // Assert
            Assert.IsTrue(verified);
        }
Esempio n. 19
0
        internal static Dataspace Read(
            Hdf5Reader aReader,
            long?aLocalMessageSize,
            out long aBytes)
        {
            if (aLocalMessageSize.HasValue && aLocalMessageSize.Value < DSHeader.Size)
            {
                throw new ArgumentException("Specified Local Message Size not long enough");
            }
            DSHeader
                fHeader = DSHeader.Read(aReader);
            long
                fMessageBodySize;
            Dataspace
                fToRetrun;
            long?
                fBodySize = aLocalMessageSize.HasValue
                    ? (long?)aLocalMessageSize.Value - DSHeader.Size
                    : null;

            switch (fHeader.Version)
            {
            case 1:
                fToRetrun = Version1.ReadAfterHeader(
                    fHeader,
                    aReader,
                    fBodySize,
                    out fMessageBodySize);
                break;

            case 2:
                fToRetrun = Version2.ReadAfterHeader(
                    fHeader,
                    aReader,
                    fBodySize,
                    out fMessageBodySize);
                break;

            default:
                throw new UnknownMessageVersion <Dataspace>(fHeader.Version);
            }
            aBytes = DSHeader.Size + fMessageBodySize;
            return(fToRetrun);
        }
Esempio n. 20
0
        public static void DumpSTUFull(Version2 stu, CASCHandler handler, Dictionary <ulong, Record> map,
                                       string instanceWildcard = null)
        {
            // tries to properly dump an STU to the console
            // uses handler to load GUIDs, and process the types

            // colour support doesn't work as well as I had hoped, because Windows is bad.
            // after setitting the colour 16 times it breaks, so I have to reset the colours every time
            // this means that any past-written colours will change.

            if (stu == null)
            {
                return;
            }

            STUDebugger debugger = new STUDebugger(handler, map);

            debugger.DumpSTU(stu, instanceWildcard);
        }
        public void GetFactWithoutVersionTestCase()
        {
            var version1 = new Version1();
            var version2 = new Version2();

            var factResult1 = new FactResult(0).SetVersionParam(version1);
            var factResult2 = new FactResult(0).SetVersionParam(version2);
            var factResultWithoutVersion = new FactResult(0);

            GivenCreateContainer()
            .And("Added versioned fact.", container =>
            {
                container.Add(factResult1);
                container.Add(factResult2);
                container.Add(factResultWithoutVersion);
            })
            .When("Try get fact.", container => container.GetFact <FactResult>())
            .ThenAreEqual(factResultWithoutVersion)
            .Run();
        }
Esempio n. 22
0
        public void VersiongCheckReadme()
        {
            var v1 = new Version1 {
                Prop1 = 999, Prop2 = 1000
            };
            var v2 = new Version2 {
                Prop1 = 10, Prop2 = 100, NewType = 9
            };

            var v1Data = ZeroFormatterSerializer.Serialize(v1);
            var v2Data = ZeroFormatterSerializer.Serialize(v2);

            // deserialize new data to old schema
            var newV1 = ZeroFormatterSerializer.Deserialize <Version1>(v2Data);

            newV1.Prop1.Is(10); newV1.Prop2.Is(100);

            var newV2 = ZeroFormatterSerializer.Deserialize <Version2>(v1Data);

            newV2.Prop1.Is(999); newV2.Prop2.Is(1000); newV2.NewType.Is(default(int));
            newV2.NewType = 99999;
            ZeroFormatterSerializer.Convert(newV2).NewType.Is(99999);
        }
Esempio n. 23
0
        public static string Convert(string s)
        {
            Version2 v2 = JsonConvert.DeserializeObject <Version2>(s);
            Dictionary <string, double> cst = new Dictionary <string, double>();

            if (v2.constants != null)
            {
                foreach (var x in v2.constants)
                {
                    cst.Add(x.Key, x.Value);
                }
            }
            List <NewItem> items = new List <NewItem>();

            foreach (var x in v2.products)
            {
                double d;
                string ss = x.Value.price;
                if (v2.constants != null)
                {
                    foreach (var c in cst)
                    {
                        ss = ss.Replace(c.Key, c.Value.ToString());
                    }
                    ss = ss.Replace(",", ".");
                }
                Double.TryParse(new DataTable().Compute(ss, "").ToString(), out d);
                items.Add(new NewItem(x.Key, x.Value.name, d, x.Value.count));
            }
            Version3 v3 = new Version3("3", items);

            string res = JsonConvert.SerializeObject(v3, Formatting.Indented);

            res = res.Replace(".0,", ",");
            res = res.Replace("  ", "    ");
            return(res);
        }
Esempio n. 24
0
 public override int GetHashCode()
 {
     return(Version1.GetHashCode() * 13 + Version2.GetHashCode() * 17 + Version3.GetHashCode() * 19 + Version4.GetHashCode() * 23);
 }
Esempio n. 25
0
        internal static bool TestCase()
        {
            #region 序列化版本 0 的数据,手动传 SerializeConfig 参数仅用于测试模拟历史数据版本
            byte[] data0 = AutoCSer.BinarySerialize.Serializer.Serialize(new GlobalVersion {
                Value9 = 1
            }, new AutoCSer.BinarySerialize.SerializeConfig {
                GlobalVersion = 0
            });
            Version1 value1 = AutoCSer.BinarySerialize.DeSerializer.DeSerialize <Version1>(data0);
            if (value1 == null || value1.Value9 != 1)
            {
                return(false);
            }
            Version2 value2 = AutoCSer.BinarySerialize.DeSerializer.DeSerialize <Version2>(data0);
            if (value2 == null || value2.Value9 != 1)
            {
                return(false);
            }
            Version3 value3 = AutoCSer.BinarySerialize.DeSerializer.DeSerialize <Version3>(data0);
            if (value3 == null || value3.Value9 != 1)
            {
                return(false);
            }
            #endregion

            #region 序列化版本 1 的数据,手动传 SerializeConfig 参数仅用于测试模拟历史数据版本
            byte[] data1 = AutoCSer.BinarySerialize.Serializer.Serialize(new Version1 {
                Value9 = 1, Value8 = 2
            }, new AutoCSer.BinarySerialize.SerializeConfig {
                GlobalVersion = 1
            });
            value1 = AutoCSer.BinarySerialize.DeSerializer.DeSerialize <Version1>(data1);
            if (value1 == null || value1.Value9 != 1 || value1.Value8 != 2)
            {
                return(false);
            }
            value2 = AutoCSer.BinarySerialize.DeSerializer.DeSerialize <Version2>(data1);
            if (value2 == null || value2.Value9 != 1 || value2.Value8 != 2)
            {
                return(false);
            }
            value3 = AutoCSer.BinarySerialize.DeSerializer.DeSerialize <Version3>(data1);
            if (value3 == null || value3.Value9 != 1 || value3.Value8 != 2)
            {
                return(false);
            }
            #endregion

            #region 序列化版本 2 的数据,手动传 SerializeConfig 参数仅用于测试模拟历史数据版本
            byte[] data2 = AutoCSer.BinarySerialize.Serializer.Serialize(new Version2 {
                Value9 = 1, Value8 = 2, Value7 = 3
            }, new AutoCSer.BinarySerialize.SerializeConfig {
                GlobalVersion = 2
            });
            value2 = AutoCSer.BinarySerialize.DeSerializer.DeSerialize <Version2>(data2);
            if (value2 == null || value2.Value9 != 1 || value2.Value8 != 0 || value2.Value7 != 3)
            {
                return(false);
            }
            value3 = AutoCSer.BinarySerialize.DeSerializer.DeSerialize <Version3>(data2);
            if (value3 == null || value3.Value9 != 1 || value3.Value8 != 0)
            {
                return(false);
            }
            #endregion

            #region 序列化版本 3 的数据,手动传 SerializeConfig 参数仅用于测试模拟历史数据版本
            byte[] data3 = AutoCSer.BinarySerialize.Serializer.Serialize(new Version3 {
                Value9 = 1, Value8 = 2, Value6 = 4
            }, new AutoCSer.BinarySerialize.SerializeConfig {
                GlobalVersion = 3
            });
            value3 = AutoCSer.BinarySerialize.DeSerializer.DeSerialize <Version3>(data3);
            if (value3 == null || value3.Value9 != 1 || value3.Value8 != 0 || value3.Value6 != 4)
            {
                return(false);
            }
            #endregion

            return(true);
        }
Esempio n. 26
0
 static async Task Second()
 {
     Version2 version2 = new Version2();
 }