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

package org.bouncycastle.pqc.crypto.frodo;

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