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

package org.bouncycastle.pqc.crypto.lms;

import java.util.HashMap;
import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import java.util.Map;

public class LMOtsParameters
{
    public static final int reserved = 0;
    public static final LMOtsParameters sha256_n32_w1;
    public static final LMOtsParameters sha256_n32_w2;
    public static final LMOtsParameters sha256_n32_w4;
    public static final LMOtsParameters sha256_n32_w8;
    public static final LMOtsParameters sha256_n24_w1;
    public static final LMOtsParameters sha256_n24_w2;
    public static final LMOtsParameters sha256_n24_w4;
    public static final LMOtsParameters sha256_n24_w8;
    public static final LMOtsParameters shake256_n32_w1;
    public static final LMOtsParameters shake256_n32_w2;
    public static final LMOtsParameters shake256_n32_w4;
    public static final LMOtsParameters shake256_n32_w8;
    public static final LMOtsParameters shake256_n24_w1;
    public static final LMOtsParameters shake256_n24_w2;
    public static final LMOtsParameters shake256_n24_w4;
    public static final LMOtsParameters shake256_n24_w8;
    private static final Map<Object, LMOtsParameters> suppliers;
    private final int type;
    private final int n;
    private final int w;
    private final int p;
    private final int ls;
    private final int sigLen;
    private final ASN1ObjectIdentifier digestOID;
    
    protected LMOtsParameters(final int type, final int n, final int w, final int p7, final int ls, final int sigLen, final ASN1ObjectIdentifier digestOID) {
        this.type = type;
        this.n = n;
        this.w = w;
        this.p = p7;
        this.ls = ls;
        this.sigLen = sigLen;
        this.digestOID = digestOID;
    }
    
    public int getType() {
        return this.type;
    }
    
    public int getN() {
        return this.n;
    }
    
    public int getW() {
        return this.w;
    }
    
    public int getP() {
        return this.p;
    }
    
    public int getLs() {
        return this.ls;
    }
    
    public int getSigLen() {
        return this.sigLen;
    }
    
    public ASN1ObjectIdentifier getDigestOID() {
        return this.digestOID;
    }
    
    public static LMOtsParameters getParametersForType(final int i) {
        return LMOtsParameters.suppliers.get(i);
    }
    
    static {
        sha256_n32_w1 = new LMOtsParameters(1, 32, 1, 265, 7, 8516, NISTObjectIdentifiers.id_sha256);
        sha256_n32_w2 = new LMOtsParameters(2, 32, 2, 133, 6, 4292, NISTObjectIdentifiers.id_sha256);
        sha256_n32_w4 = new LMOtsParameters(3, 32, 4, 67, 4, 2180, NISTObjectIdentifiers.id_sha256);
        sha256_n32_w8 = new LMOtsParameters(4, 32, 8, 34, 0, 1124, NISTObjectIdentifiers.id_sha256);
        sha256_n24_w1 = new LMOtsParameters(5, 24, 1, 200, 8, 5436, NISTObjectIdentifiers.id_sha256);
        sha256_n24_w2 = new LMOtsParameters(6, 24, 2, 101, 6, 2940, NISTObjectIdentifiers.id_sha256);
        sha256_n24_w4 = new LMOtsParameters(7, 24, 4, 51, 4, 1500, NISTObjectIdentifiers.id_sha256);
        sha256_n24_w8 = new LMOtsParameters(8, 24, 8, 26, 0, 1020, NISTObjectIdentifiers.id_sha256);
        shake256_n32_w1 = new LMOtsParameters(9, 32, 1, 265, 7, 8516, NISTObjectIdentifiers.id_shake256_len);
        shake256_n32_w2 = new LMOtsParameters(10, 32, 2, 133, 6, 4292, NISTObjectIdentifiers.id_shake256_len);
        shake256_n32_w4 = new LMOtsParameters(11, 32, 4, 67, 4, 2180, NISTObjectIdentifiers.id_shake256_len);
        shake256_n32_w8 = new LMOtsParameters(12, 32, 8, 34, 0, 1124, NISTObjectIdentifiers.id_shake256_len);
        shake256_n24_w1 = new LMOtsParameters(13, 24, 1, 200, 8, 5436, NISTObjectIdentifiers.id_shake256_len);
        shake256_n24_w2 = new LMOtsParameters(14, 24, 2, 101, 6, 2940, NISTObjectIdentifiers.id_shake256_len);
        shake256_n24_w4 = new LMOtsParameters(15, 24, 4, 51, 4, 1500, NISTObjectIdentifiers.id_shake256_len);
        shake256_n24_w8 = new LMOtsParameters(16, 24, 8, 26, 0, 1020, NISTObjectIdentifiers.id_shake256_len);
        suppliers = new HashMap<Object, LMOtsParameters>() {
            {
                ((HashMap<Integer, LMOtsParameters>)this).put(LMOtsParameters.sha256_n32_w1.type, LMOtsParameters.sha256_n32_w1);
                ((HashMap<Integer, LMOtsParameters>)this).put(LMOtsParameters.sha256_n32_w2.type, LMOtsParameters.sha256_n32_w2);
                ((HashMap<Integer, LMOtsParameters>)this).put(LMOtsParameters.sha256_n32_w4.type, LMOtsParameters.sha256_n32_w4);
                ((HashMap<Integer, LMOtsParameters>)this).put(LMOtsParameters.sha256_n32_w8.type, LMOtsParameters.sha256_n32_w8);
                ((HashMap<Integer, LMOtsParameters>)this).put(LMOtsParameters.sha256_n24_w1.type, LMOtsParameters.sha256_n24_w1);
                ((HashMap<Integer, LMOtsParameters>)this).put(LMOtsParameters.sha256_n24_w2.type, LMOtsParameters.sha256_n24_w2);
                ((HashMap<Integer, LMOtsParameters>)this).put(LMOtsParameters.sha256_n24_w4.type, LMOtsParameters.sha256_n24_w4);
                ((HashMap<Integer, LMOtsParameters>)this).put(LMOtsParameters.sha256_n24_w8.type, LMOtsParameters.sha256_n24_w8);
                ((HashMap<Integer, LMOtsParameters>)this).put(LMOtsParameters.shake256_n32_w1.type, LMOtsParameters.shake256_n32_w1);
                ((HashMap<Integer, LMOtsParameters>)this).put(LMOtsParameters.shake256_n32_w2.type, LMOtsParameters.shake256_n32_w2);
                ((HashMap<Integer, LMOtsParameters>)this).put(LMOtsParameters.shake256_n32_w4.type, LMOtsParameters.shake256_n32_w4);
                ((HashMap<Integer, LMOtsParameters>)this).put(LMOtsParameters.shake256_n32_w8.type, LMOtsParameters.shake256_n32_w8);
                ((HashMap<Integer, LMOtsParameters>)this).put(LMOtsParameters.shake256_n24_w1.type, LMOtsParameters.shake256_n24_w1);
                ((HashMap<Integer, LMOtsParameters>)this).put(LMOtsParameters.shake256_n24_w2.type, LMOtsParameters.shake256_n24_w2);
                ((HashMap<Integer, LMOtsParameters>)this).put(LMOtsParameters.shake256_n24_w4.type, LMOtsParameters.shake256_n24_w4);
                ((HashMap<Integer, LMOtsParameters>)this).put(LMOtsParameters.shake256_n24_w8.type, LMOtsParameters.shake256_n24_w8);
            }
        };
    }
}
