Beispiel #1
0
        private const int Iterations = 10000000;         // 10,000,000 (10 million)

        private static StreamCsPrng GetEngine(CsPseudorandomNumberGenerator cipher)
        {
            var config = CsPrngFactory.CreateStreamCipherCsprngConfiguration(cipher);
            var engine = CipherFactory.CreateStreamCipher(config.CipherName.ToEnum <StreamCipher>());

            return(new StreamCsPrng(engine, config.Key, config.Nonce));
        }
        public static PayloadConfiguration CreateSimple(CsPseudorandomNumberGenerator csprngEnum)
        {
            var config = new PayloadConfiguration {
                SchemeName        = PayloadLayoutScheme.Simple.ToString(),
                EntropyScheme     = PayloadMuxEntropyScheme.StreamCipherCsprng,
                EntropySchemeData = CsPrngFactory.CreateStreamCipherCsprngConfiguration(csprngEnum).SerialiseDto()
            };

            return(config);
        }
Beispiel #3
0
        public void SOSEMANUK()
        {
            var inputObj = CsPrngFactory.CreateStreamCipherCsprngConfiguration(CsPseudorandomNumberGenerator.Sosemanuk);

            var stream = SerialiseToMemory(inputObj);

            stream.Seek(0, SeekOrigin.Begin);
            var outputObj = DeserialiseFromMemory <StreamCipherCsprngConfiguration>(stream);

            bool equal = inputObj.Equals(outputObj);

            Assert.IsTrue(equal);
        }
        public static PayloadConfiguration CreateFabricVariable(CsPseudorandomNumberGenerator csprngEnum, int?minStripe = null,
                                                                int?maxStripe = null)
        {
            CheckFabricArgumentsValid(minStripe, maxStripe);

            var config = new PayloadConfiguration {
                SchemeName          = PayloadLayoutScheme.Fabric.ToString(),
                SchemeConfiguration = new RangeConfiguration {
                    Minimum = (minStripe == null ? FabricPayloadMux.MinimumStripeLength : minStripe.Value),
                    Maximum = (maxStripe == null ? FabricPayloadMux.MaximumStripeLength : maxStripe.Value)
                }.SerialiseDto(),
                EntropyScheme     = PayloadMuxEntropyScheme.StreamCipherCsprng,
                EntropySchemeData = CsPrngFactory.CreateStreamCipherCsprngConfiguration(csprngEnum).SerialiseDto()
            };

            return(config);
        }
        public static PayloadConfiguration CreateFrameshiftFixed(CsPseudorandomNumberGenerator csprngEnum, int?paddingSize = null)
        {
            int fixedSize = paddingSize == null ? FrameshiftPayloadMux.DefaultFixedPaddingLength : paddingSize.Value;

            if (fixedSize.IsBetween(FrameshiftPayloadMux.MinimumPaddingLength, FrameshiftPayloadMux.MaximumPaddingLength) == false)
            {
                throw new ArgumentOutOfRangeException("paddingSize", "Padding size not within specification.");
            }

            var config = new PayloadConfiguration {
                SchemeName          = PayloadLayoutScheme.Frameshift.ToString(),
                SchemeConfiguration = new RangeConfiguration {
                    Minimum = fixedSize,
                    Maximum = fixedSize,
                }.SerialiseDto(),
                EntropyScheme     = PayloadMuxEntropyScheme.StreamCipherCsprng,
                EntropySchemeData = CsPrngFactory.CreateStreamCipherCsprngConfiguration(csprngEnum).SerialiseDto()
            };

            return(config);
        }
Beispiel #6
0
        public void Fabric_Fixed()
        {
            var inputObj = new PayloadConfiguration()
            {
                SchemeName          = PayloadLayoutScheme.Fabric.ToString(),
                SchemeConfiguration = new RangeConfiguration {
                    Minimum = FabricPayloadMux.DefaultFixedStripeLength,
                    Maximum = FabricPayloadMux.DefaultFixedStripeLength
                }.SerialiseDto(),
                EntropyScheme     = PayloadMuxEntropyScheme.StreamCipherCsprng,
                EntropySchemeData = CsPrngFactory.CreateStreamCipherCsprngConfiguration(
                    CsPseudorandomNumberGenerator.Sosemanuk).SerialiseDto <StreamCipherCsprngConfiguration>()
            };

            var stream = SerialiseToMemory(inputObj);

            stream.Seek(0, SeekOrigin.Begin);
            var outputObj = DeserialiseFromMemory <PayloadConfiguration>(stream);

            bool equal = inputObj.Equals(outputObj);

            Assert.IsTrue(equal);
        }
Beispiel #7
0
 public StreamCipherCsprngMuxEntropySource(StreamCipherCsprngConfiguration config)
 {
     EntropySource = CsPrngFactory.CreateCsprng(config);
 }