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

package org.bouncycastle.pqc.crypto.bike;

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

public class BIKEKEMGenerator implements EncapsulatedSecretGenerator
{
    private final SecureRandom sr;
    
    public BIKEKEMGenerator(final SecureRandom sr) {
        this.sr = sr;
    }
    
    @Override
    public SecretWithEncapsulation generateEncapsulated(final AsymmetricKeyParameter asymmetricKeyParameter) {
        final BIKEPublicKeyParameters bikePublicKeyParameters = (BIKEPublicKeyParameters)asymmetricKeyParameter;
        final BIKEEngine engine = bikePublicKeyParameters.getParameters().getEngine();
        final byte[] array = new byte[bikePublicKeyParameters.getParameters().getLByte()];
        final byte[] array2 = new byte[bikePublicKeyParameters.getParameters().getRByte()];
        final byte[] array3 = new byte[bikePublicKeyParameters.getParameters().getLByte()];
        engine.encaps(array2, array3, array, bikePublicKeyParameters.publicKey, this.sr);
        return new SecretWithEncapsulationImpl(Arrays.copyOfRange(array, 0, bikePublicKeyParameters.getParameters().getSessionKeySize() / 8), Arrays.concatenate(array2, array3));
    }
}
