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

package org.bouncycastle.pqc.crypto.cmce;

import org.bouncycastle.pqc.crypto.util.SecretWithEncapsulationImpl;
import org.bouncycastle.crypto.SecretWithEncapsulation;
import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
import java.security.SecureRandom;
import org.bouncycastle.crypto.EncapsulatedSecretGenerator;

public class CMCEKEMGenerator implements EncapsulatedSecretGenerator
{
    private final SecureRandom sr;
    
    public CMCEKEMGenerator(final SecureRandom sr) {
        this.sr = sr;
    }
    
    @Override
    public SecretWithEncapsulation generateEncapsulated(final AsymmetricKeyParameter asymmetricKeyParameter) {
        return this.generateEncapsulated(asymmetricKeyParameter, ((CMCEPublicKeyParameters)asymmetricKeyParameter).getParameters().getEngine().getDefaultSessionKeySize());
    }
    
    public SecretWithEncapsulation generateEncapsulated(final AsymmetricKeyParameter asymmetricKeyParameter, final int n) {
        final CMCEPublicKeyParameters cmcePublicKeyParameters = (CMCEPublicKeyParameters)asymmetricKeyParameter;
        final CMCEEngine engine = cmcePublicKeyParameters.getParameters().getEngine();
        final byte[] array = new byte[engine.getCipherTextSize()];
        final byte[] array2 = new byte[n / 8];
        engine.kem_enc(array, array2, cmcePublicKeyParameters.getPublicKey(), this.sr);
        return new SecretWithEncapsulationImpl(array2, array);
    }
}
