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

package org.bouncycastle.pqc.crypto.rainbow;

import org.bouncycastle.crypto.AsymmetricCipherKeyPair;
import org.bouncycastle.crypto.KeyGenerationParameters;
import org.bouncycastle.crypto.AsymmetricCipherKeyPairGenerator;

public class RainbowKeyPairGenerator implements AsymmetricCipherKeyPairGenerator
{
    private RainbowKeyComputation rkc;
    private Version version;
    
    private void initialize(final KeyGenerationParameters keyGenerationParameters) {
        final RainbowParameters parameters = ((RainbowKeyGenerationParameters)keyGenerationParameters).getParameters();
        this.rkc = new RainbowKeyComputation(parameters, keyGenerationParameters.getRandom());
        this.version = parameters.getVersion();
    }
    
    @Override
    public void init(final KeyGenerationParameters keyGenerationParameters) {
        this.initialize(keyGenerationParameters);
    }
    
    @Override
    public AsymmetricCipherKeyPair generateKeyPair() {
        switch (this.version) {
            case CLASSIC: {
                return this.rkc.genKeyPairClassical();
            }
            case CIRCUMZENITHAL: {
                return this.rkc.genKeyPairCircumzenithal();
            }
            case COMPRESSED: {
                return this.rkc.genKeyPairCompressed();
            }
            default: {
                throw new IllegalArgumentException("No valid version. Please choose one of the following: classic, circumzenithal, compressed");
            }
        }
    }
}
