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

package org.bouncycastle.pqc.crypto.crystals.dilithium;

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 DilithiumKeyPairGenerator implements AsymmetricCipherKeyPairGenerator
{
    private DilithiumParameters dilithiumParams;
    private SecureRandom random;
    
    private void initialize(final KeyGenerationParameters keyGenerationParameters) {
        this.dilithiumParams = ((DilithiumKeyGenerationParameters)keyGenerationParameters).getParameters();
        this.random = keyGenerationParameters.getRandom();
    }
    
    private AsymmetricCipherKeyPair genKeyPair() {
        final byte[][] generateKeyPair = this.dilithiumParams.getEngine(this.random).generateKeyPair();
        return new AsymmetricCipherKeyPair(new DilithiumPublicKeyParameters(this.dilithiumParams, generateKeyPair[0], generateKeyPair[6]), new DilithiumPrivateKeyParameters(this.dilithiumParams, generateKeyPair[0], generateKeyPair[1], generateKeyPair[2], generateKeyPair[3], generateKeyPair[4], generateKeyPair[5], generateKeyPair[6]));
    }
    
    @Override
    public void init(final KeyGenerationParameters keyGenerationParameters) {
        this.initialize(keyGenerationParameters);
    }
    
    @Override
    public AsymmetricCipherKeyPair generateKeyPair() {
        return this.genKeyPair();
    }
    
    public AsymmetricCipherKeyPair internalGenerateKeyPair(final byte[] array) {
        final byte[][] generateKeyPairInternal = this.dilithiumParams.getEngine(this.random).generateKeyPairInternal(array);
        return new AsymmetricCipherKeyPair(new DilithiumPublicKeyParameters(this.dilithiumParams, generateKeyPairInternal[0], generateKeyPairInternal[6]), new DilithiumPrivateKeyParameters(this.dilithiumParams, generateKeyPairInternal[0], generateKeyPairInternal[1], generateKeyPairInternal[2], generateKeyPairInternal[3], generateKeyPairInternal[4], generateKeyPairInternal[5], generateKeyPairInternal[6]));
    }
}
