public MicroRatchetContext(IServices services, MicroRatchetConfiguration config, Stream stateData) { Services = services ?? throw new ArgumentNullException(nameof(services)); Configuration = config ?? throw new ArgumentNullException(nameof(config)); KeyDerivation = new AesKdf(Services.AesFactory); LoadState(stateData); VerifyServices(); CheckMtu(); }
public MicroRatchetContext(IServices services, bool isClient, int?MaximumMessageSize = null, int?MinimumMessageSize = null, Stream stateData = null, byte[] stateBytes = null) { Services = services ?? throw new ArgumentNullException(nameof(services)); if (stateData != null && stateBytes != null) { throw new InvalidOperationException("stateData and stateBytes cannot both be specified"); } Configuration = new MicroRatchetConfiguration { IsClient = isClient }; if (MaximumMessageSize.HasValue) { Configuration.MaximumMessageSize = MaximumMessageSize.Value; } if (MinimumMessageSize.HasValue) { Configuration.MinimumMessageSize = MinimumMessageSize.Value; } if (stateData != null) { LoadState(stateData); } else if (stateBytes != null) { using var ms = new MemoryStream(stateBytes); LoadState(ms); } else { InitializeState(); } KeyDerivation = new AesKdf(Services.AesFactory); CheckMtu(); }