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); }
public static StreamCipherCsprngConfiguration CreateRandomConfiguration(CsPseudorandomNumberGenerator csprng) { var cipherEnum = csprng.ToString().ToEnum <StreamCipher>(); var config = new StreamCipherCsprngConfiguration { CipherName = csprng.ToString(), Key = new byte[Athena.Cryptography.StreamCiphers[cipherEnum].DefaultKeySizeBits / 8], Nonce = new byte[Athena.Cryptography.StreamCiphers[cipherEnum].DefaultNonceSizeBits / 8] }; StratCom.EntropySupplier.NextBytes(config.Key); StratCom.EntropySupplier.NextBytes(config.Nonce); return(config); }
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); }
/// <summary> /// Initialises the configuration for the specified module type with default settings. /// If fine-tuning is desired, use the specialised constructors. /// </summary> /// <param name="schemeEnum">Desired payload layout scheme.</param> /// <seealso cref="CreateSimple" /> /// <seealso cref="CreateFrameshiftVariable" /> public static PayloadConfiguration CreateDefault(PayloadLayoutScheme schemeEnum) { const CsPseudorandomNumberGenerator defaultCsprng = CsPseudorandomNumberGenerator.Rabbit; // Fast initialisation! switch (schemeEnum) { case PayloadLayoutScheme.Simple: return(CreateSimple(defaultCsprng)); case PayloadLayoutScheme.Frameshift: // Padding length is variable by default. return(CreateFrameshiftVariable(defaultCsprng, FrameshiftPayloadMux.MinimumPaddingLength, FrameshiftPayloadMux.MaximumPaddingLength)); #if INCLUDE_FABRIC case PayloadLayoutScheme.Fabric: // Stripe length is variable by default. return(CreateFabricVariable(defaultCsprng, FabricPayloadMux.MinimumStripeLength, FabricPayloadMux.MaximumStripeLength)); #endif } throw new NotSupportedException(); }
public static StreamCipherCsprngConfiguration CreateStreamCipherCsprngConfiguration (CsPseudorandomNumberGenerator cipherEnum) { return(StreamCsPrng.CreateRandomConfiguration(cipherEnum)); }