public Pearson_Implementation(IPearsonConfig config) { if (config == null) { throw new ArgumentNullException(nameof(config)); } _config = config.Clone(); if (_config.Table == null) { throw new ArgumentException($"{nameof(config)}.{nameof(config.Table)} must be non-null.", $"{nameof(config)}.{nameof(config.Table)}"); } if (_config.Table.Count != 256 || _config.Table.Distinct().Count() != 256) { throw new ArgumentException($"{nameof(config)}.{nameof(config.Table)} must be a permutation of [0, 255].", $"{nameof(config)}.{nameof(config.Table)}"); } if (_config.HashSizeInBits <= 0 || _config.HashSizeInBits % 8 != 0) { throw new ArgumentOutOfRangeException($"{nameof(config)}.{nameof(config.HashSizeInBits)}", _config.HashSizeInBits, $"{nameof(config)}.{nameof(config.HashSizeInBits)} must be a positive integer that is divisible by 8."); } }
public BlockTransformer(IPearsonConfig config) : this() { _table = config.Table; _anyBytesProcessed = false; _hashValue = new byte[config.HashSizeInBits / 8]; }
/// <summary> /// Creates a new <see cref="IPearson"/> instance with the specified configuration. /// </summary> /// <param name="config">Configuration to use when constructing the instance.</param> /// <returns>A <see cref="IPearson"/> instance.</returns> public IPearson Create(IPearsonConfig config) { if (config == null) { throw new ArgumentNullException(nameof(config)); } return(new Pearson_Implementation(config)); }