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

package org.bouncycastle.pqc.crypto.bike;

import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
import org.bouncycastle.crypto.AsymmetricCipherKeyPair;
import org.bouncycastle.crypto.KeyGenerationParameters;
import java.security.SecureRandom;
import org.bouncycastle.crypto.AsymmetricCipherKeyPairGenerator;

public class BIKEKeyPairGenerator implements AsymmetricCipherKeyPairGenerator
{
    private SecureRandom random;
    private int r;
    private int l;
    private int L_BYTE;
    private int R_BYTE;
    private BIKEKeyGenerationParameters bikeKeyGenerationParameters;
    
    @Override
    public void init(final KeyGenerationParameters keyGenerationParameters) {
        this.bikeKeyGenerationParameters = (BIKEKeyGenerationParameters)keyGenerationParameters;
        this.random = keyGenerationParameters.getRandom();
        this.r = this.bikeKeyGenerationParameters.getParameters().getR();
        this.l = this.bikeKeyGenerationParameters.getParameters().getL();
        this.L_BYTE = this.l / 8;
        this.R_BYTE = (this.r + 7) / 8;
    }
    
    private AsymmetricCipherKeyPair genKeyPair() {
        final BIKEEngine engine = this.bikeKeyGenerationParameters.getParameters().getEngine();
        final byte[] array = new byte[this.R_BYTE];
        final byte[] array2 = new byte[this.R_BYTE];
        final byte[] array3 = new byte[this.R_BYTE];
        final byte[] array4 = new byte[this.L_BYTE];
        engine.genKeyPair(array, array2, array4, array3, this.random);
        return new AsymmetricCipherKeyPair(new BIKEPublicKeyParameters(this.bikeKeyGenerationParameters.getParameters(), array3), new BIKEPrivateKeyParameters(this.bikeKeyGenerationParameters.getParameters(), array, array2, array4));
    }
    
    @Override
    public AsymmetricCipherKeyPair generateKeyPair() {
        return this.genKeyPair();
    }
}
