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

package org.bouncycastle.pqc.crypto.mlkem;

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 MLKEMKeyPairGenerator implements AsymmetricCipherKeyPairGenerator
{
    private MLKEMParameters mlkemParams;
    private SecureRandom random;
    
    private void initialize(final KeyGenerationParameters keyGenerationParameters) {
        this.mlkemParams = ((MLKEMKeyGenerationParameters)keyGenerationParameters).getParameters();
        this.random = keyGenerationParameters.getRandom();
    }
    
    private AsymmetricCipherKeyPair genKeyPair() {
        final MLKEMEngine engine = this.mlkemParams.getEngine();
        engine.init(this.random);
        final byte[][] generateKemKeyPair = engine.generateKemKeyPair();
        return new AsymmetricCipherKeyPair(new MLKEMPublicKeyParameters(this.mlkemParams, generateKemKeyPair[0], generateKemKeyPair[1]), new MLKEMPrivateKeyParameters(this.mlkemParams, generateKemKeyPair[2], generateKemKeyPair[3], generateKemKeyPair[4], generateKemKeyPair[0], generateKemKeyPair[1], generateKemKeyPair[5]));
    }
    
    @Override
    public void init(final KeyGenerationParameters keyGenerationParameters) {
        this.initialize(keyGenerationParameters);
    }
    
    @Override
    public AsymmetricCipherKeyPair generateKeyPair() {
        return this.genKeyPair();
    }
}
