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

package org.bouncycastle.pqc.crypto.saber;

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 SABERKEMGenerator implements EncapsulatedSecretGenerator
{
    private final SecureRandom sr;
    
    public SABERKEMGenerator(final SecureRandom sr) {
        this.sr = sr;
    }
    
    @Override
    public SecretWithEncapsulation generateEncapsulated(final AsymmetricKeyParameter asymmetricKeyParameter) {
        final SABERPublicKeyParameters saberPublicKeyParameters = (SABERPublicKeyParameters)asymmetricKeyParameter;
        final SABEREngine engine = saberPublicKeyParameters.getParameters().getEngine();
        final byte[] array = new byte[engine.getCipherTextSize()];
        final byte[] array2 = new byte[engine.getSessionKeySize()];
        engine.crypto_kem_enc(array, array2, saberPublicKeyParameters.getPublicKey(), this.sr);
        return new SecretWithEncapsulationImpl(array2, array);
    }
}
