// 
// Decompiled by Procyon v0.6.0
// 

package org.bouncycastle.pqc.crypto.snova;

public class SnovaParameters
{
    public static final SnovaParameters SNOVA_24_5_4_SSK;
    public static final SnovaParameters SNOVA_24_5_4_ESK;
    public static final SnovaParameters SNOVA_24_5_4_SHAKE_SSK;
    public static final SnovaParameters SNOVA_24_5_4_SHAKE_ESK;
    public static final SnovaParameters SNOVA_24_5_5_SSK;
    public static final SnovaParameters SNOVA_24_5_5_ESK;
    public static final SnovaParameters SNOVA_24_5_5_SHAKE_SSK;
    public static final SnovaParameters SNOVA_24_5_5_SHAKE_ESK;
    public static final SnovaParameters SNOVA_25_8_3_SSK;
    public static final SnovaParameters SNOVA_25_8_3_ESK;
    public static final SnovaParameters SNOVA_25_8_3_SHAKE_SSK;
    public static final SnovaParameters SNOVA_25_8_3_SHAKE_ESK;
    public static final SnovaParameters SNOVA_29_6_5_SSK;
    public static final SnovaParameters SNOVA_29_6_5_ESK;
    public static final SnovaParameters SNOVA_29_6_5_SHAKE_SSK;
    public static final SnovaParameters SNOVA_29_6_5_SHAKE_ESK;
    public static final SnovaParameters SNOVA_37_8_4_SSK;
    public static final SnovaParameters SNOVA_37_8_4_ESK;
    public static final SnovaParameters SNOVA_37_8_4_SHAKE_SSK;
    public static final SnovaParameters SNOVA_37_8_4_SHAKE_ESK;
    public static final SnovaParameters SNOVA_37_17_2_SSK;
    public static final SnovaParameters SNOVA_37_17_2_ESK;
    public static final SnovaParameters SNOVA_37_17_2_SHAKE_SSK;
    public static final SnovaParameters SNOVA_37_17_2_SHAKE_ESK;
    public static final SnovaParameters SNOVA_49_11_3_SSK;
    public static final SnovaParameters SNOVA_49_11_3_ESK;
    public static final SnovaParameters SNOVA_49_11_3_SHAKE_SSK;
    public static final SnovaParameters SNOVA_49_11_3_SHAKE_ESK;
    public static final SnovaParameters SNOVA_56_25_2_SSK;
    public static final SnovaParameters SNOVA_56_25_2_ESK;
    public static final SnovaParameters SNOVA_56_25_2_SHAKE_SSK;
    public static final SnovaParameters SNOVA_56_25_2_SHAKE_ESK;
    public static final SnovaParameters SNOVA_60_10_4_SSK;
    public static final SnovaParameters SNOVA_60_10_4_ESK;
    public static final SnovaParameters SNOVA_60_10_4_SHAKE_SSK;
    public static final SnovaParameters SNOVA_60_10_4_SHAKE_ESK;
    public static final SnovaParameters SNOVA_66_15_3_SSK;
    public static final SnovaParameters SNOVA_66_15_3_ESK;
    public static final SnovaParameters SNOVA_66_15_3_SHAKE_SSK;
    public static final SnovaParameters SNOVA_66_15_3_SHAKE_ESK;
    public static final SnovaParameters SNOVA_75_33_2_SSK;
    public static final SnovaParameters SNOVA_75_33_2_ESK;
    public static final SnovaParameters SNOVA_75_33_2_SHAKE_SSK;
    public static final SnovaParameters SNOVA_75_33_2_SHAKE_ESK;
    private final String name;
    private final int v;
    private final int o;
    private final int l;
    private final int lsq;
    private final int alpha;
    private final boolean skIsSeed;
    private final boolean pkExpandShake;
    
    private SnovaParameters(final String name, final int v, final int o, final int l, final boolean skIsSeed, final boolean pkExpandShake) {
        this.name = name;
        this.v = v;
        this.o = o;
        this.l = l;
        this.lsq = l * l;
        this.alpha = this.lsq + l;
        this.skIsSeed = skIsSeed;
        this.pkExpandShake = pkExpandShake;
    }
    
    public String getName() {
        return this.name;
    }
    
    public int getV() {
        return this.v;
    }
    
    public int getO() {
        return this.o;
    }
    
    public int getL() {
        return this.l;
    }
    
    public boolean isSkIsSeed() {
        return this.skIsSeed;
    }
    
    public boolean isPkExpandShake() {
        return this.pkExpandShake;
    }
    
    public int getM() {
        return this.o;
    }
    
    public int getAlpha() {
        return this.alpha;
    }
    
    public int getPublicKeyLength() {
        return 16 + (this.o * this.o * this.o * this.lsq + 1 >>> 1);
    }
    
    public int getPrivateKeyLength() {
        return (this.lsq * (4 * this.o * this.alpha + this.o * (this.v * this.v + this.v * this.o + this.o * this.v) + this.v * this.o) + 1 >> 1) + 32 + 16;
    }
    
    public int getN() {
        return this.v + this.o;
    }
    
    public int getLsq() {
        return this.lsq;
    }
    
    public int getSaltLength() {
        return 16;
    }
    
    static {
        SNOVA_24_5_4_SSK = new SnovaParameters("SNOVA_24_5_4_SSK", 24, 5, 4, true, false);
        SNOVA_24_5_4_ESK = new SnovaParameters("SNOVA_24_5_4_ESK", 24, 5, 4, false, false);
        SNOVA_24_5_4_SHAKE_SSK = new SnovaParameters("SNOVA_24_5_4_SHAKE_SSK", 24, 5, 4, true, true);
        SNOVA_24_5_4_SHAKE_ESK = new SnovaParameters("SNOVA_24_5_4_SHAKE_ESK", 24, 5, 4, false, true);
        SNOVA_24_5_5_SSK = new SnovaParameters("SNOVA_24_5_5_SSK", 24, 5, 5, true, false);
        SNOVA_24_5_5_ESK = new SnovaParameters("SNOVA_24_5_5_ESK", 24, 5, 5, false, false);
        SNOVA_24_5_5_SHAKE_SSK = new SnovaParameters("SNOVA_24_5_5_SHAKE_SSK", 24, 5, 5, true, true);
        SNOVA_24_5_5_SHAKE_ESK = new SnovaParameters("SNOVA_24_5_5_SHAKE_ESK", 24, 5, 5, false, true);
        SNOVA_25_8_3_SSK = new SnovaParameters("SNOVA_25_8_3_SSK", 25, 8, 3, true, false);
        SNOVA_25_8_3_ESK = new SnovaParameters("SNOVA_25_8_3_ESK", 25, 8, 3, false, false);
        SNOVA_25_8_3_SHAKE_SSK = new SnovaParameters("SNOVA_25_8_3_SHAKE_SSK", 25, 8, 3, true, true);
        SNOVA_25_8_3_SHAKE_ESK = new SnovaParameters("SNOVA_25_8_3_SHAKE_ESK", 25, 8, 3, false, true);
        SNOVA_29_6_5_SSK = new SnovaParameters("SNOVA_29_6_5_SSK", 29, 6, 5, true, false);
        SNOVA_29_6_5_ESK = new SnovaParameters("SNOVA_29_6_5_ESK", 29, 6, 5, false, false);
        SNOVA_29_6_5_SHAKE_SSK = new SnovaParameters("SNOVA_29_6_5_SHAKE_SSK", 29, 6, 5, true, true);
        SNOVA_29_6_5_SHAKE_ESK = new SnovaParameters("SNOVA_29_6_5_SHAKE_ESK", 29, 6, 5, false, true);
        SNOVA_37_8_4_SSK = new SnovaParameters("SNOVA_37_8_4_SSK", 37, 8, 4, true, false);
        SNOVA_37_8_4_ESK = new SnovaParameters("SNOVA_37_8_4_ESK", 37, 8, 4, false, false);
        SNOVA_37_8_4_SHAKE_SSK = new SnovaParameters("SNOVA_37_8_4_SHAKE_SSK", 37, 8, 4, true, true);
        SNOVA_37_8_4_SHAKE_ESK = new SnovaParameters("SNOVA_37_8_4_SHAKE_ESK", 37, 8, 4, false, true);
        SNOVA_37_17_2_SSK = new SnovaParameters("SNOVA_37_17_2_SSK", 37, 17, 2, true, false);
        SNOVA_37_17_2_ESK = new SnovaParameters("SNOVA_37_17_2_ESK", 37, 17, 2, false, false);
        SNOVA_37_17_2_SHAKE_SSK = new SnovaParameters("SNOVA_37_17_2_SHAKE_SSK", 37, 17, 2, true, true);
        SNOVA_37_17_2_SHAKE_ESK = new SnovaParameters("SNOVA_37_17_2_SHAKE_ESK", 37, 17, 2, false, true);
        SNOVA_49_11_3_SSK = new SnovaParameters("SNOVA_49_11_3_SSK", 49, 11, 3, true, false);
        SNOVA_49_11_3_ESK = new SnovaParameters("SNOVA_49_11_3_ESK", 49, 11, 3, false, false);
        SNOVA_49_11_3_SHAKE_SSK = new SnovaParameters("SNOVA_49_11_3_SHAKE_SSK", 49, 11, 3, true, true);
        SNOVA_49_11_3_SHAKE_ESK = new SnovaParameters("SNOVA_49_11_3_SHAKE_ESK", 49, 11, 3, false, true);
        SNOVA_56_25_2_SSK = new SnovaParameters("SNOVA_56_25_2_SSK", 56, 25, 2, true, false);
        SNOVA_56_25_2_ESK = new SnovaParameters("SNOVA_56_25_2_ESK", 56, 25, 2, false, false);
        SNOVA_56_25_2_SHAKE_SSK = new SnovaParameters("SNOVA_56_25_2_SHAKE_SSK", 56, 25, 2, true, true);
        SNOVA_56_25_2_SHAKE_ESK = new SnovaParameters("SNOVA_56_25_2_SHAKE_ESK", 56, 25, 2, false, true);
        SNOVA_60_10_4_SSK = new SnovaParameters("SNOVA_60_10_4_SSK", 60, 10, 4, true, false);
        SNOVA_60_10_4_ESK = new SnovaParameters("SNOVA_60_10_4_ESK", 60, 10, 4, false, false);
        SNOVA_60_10_4_SHAKE_SSK = new SnovaParameters("SNOVA_60_10_4_SHAKE_SSK", 60, 10, 4, true, true);
        SNOVA_60_10_4_SHAKE_ESK = new SnovaParameters("SNOVA_60_10_4_SHAKE_ESK", 60, 10, 4, false, true);
        SNOVA_66_15_3_SSK = new SnovaParameters("SNOVA_66_15_3_SSK", 66, 15, 3, true, false);
        SNOVA_66_15_3_ESK = new SnovaParameters("SNOVA_66_15_3_ESK", 66, 15, 3, false, false);
        SNOVA_66_15_3_SHAKE_SSK = new SnovaParameters("SNOVA_66_15_3_SHAKE_SSK", 66, 15, 3, true, true);
        SNOVA_66_15_3_SHAKE_ESK = new SnovaParameters("SNOVA_66_15_3_SHAKE_ESK", 66, 15, 3, false, true);
        SNOVA_75_33_2_SSK = new SnovaParameters("SNOVA_75_33_2_SSK", 75, 33, 2, true, false);
        SNOVA_75_33_2_ESK = new SnovaParameters("SNOVA_75_33_2_ESK", 75, 33, 2, false, false);
        SNOVA_75_33_2_SHAKE_SSK = new SnovaParameters("SNOVA_75_33_2_SHAKE_SSK", 75, 33, 2, true, true);
        SNOVA_75_33_2_SHAKE_ESK = new SnovaParameters("SNOVA_75_33_2_SHAKE_ESK", 75, 33, 2, false, true);
    }
}
