BikeParameters
using Org.BouncyCastle.Crypto;
namespace Org.BouncyCastle.Pqc.Crypto.Bike
{
    public sealed class BikeParameters : ICipherParameters
    {
        public static BikeParameters bike128 = new BikeParameters("bike128", 12323, 142, 134, 256, 5, 3, 128);
        public static BikeParameters bike192 = new BikeParameters("bike192", 24659, 206, 199, 256, 5, 3, 192);
        public static BikeParameters bike256 = new BikeParameters("bike256", 40973, 274, 264, 256, 5, 3, 256);
        private readonly string name;
        private readonly int r;
        private readonly int w;
        private readonly int t;
        private readonly int l;
        private readonly int nbIter;
        private readonly int tau;
        private readonly int defaultKeySize;
        private readonly BikeEngine bikeEngine;
        public int R => r;
        public int RByte => (r + 7) / 8;
        public int LByte => l / 8;
        public int W => w;
        public int T => t;
        public int L => l;
        public int NbIter => nbIter;
        public int Tau => tau;
        public string Name => name;
        public int DefaultKeySize => defaultKeySize;
        internal BikeEngine BikeEngine => bikeEngine;
        private BikeParameters(string name, int r, int w, int t, int l, int nbIter, int tau, int defaultKeySize)
        {
            this.name = name;
            this.r = r;
            this.w = w;
            this.t = t;
            this.l = l;
            this.nbIter = nbIter;
            this.tau = tau;
            this.defaultKeySize = defaultKeySize;
            bikeEngine = new BikeEngine(r, w, t, l, nbIter, tau);
        }
    }
}