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

package org.bouncycastle.pqc.crypto.hqc;

import org.bouncycastle.util.Arrays;
import org.bouncycastle.crypto.EncapsulatedSecretExtractor;

public class HQCKEMExtractor implements EncapsulatedSecretExtractor
{
    private HQCEngine engine;
    private final HQCKeyParameters key;
    
    public HQCKEMExtractor(final HQCPrivateKeyParameters key) {
        this.key = key;
        this.initCipher(this.key.getParameters());
    }
    
    private void initCipher(final HQCParameters hqcParameters) {
        this.engine = hqcParameters.getEngine();
    }
    
    @Override
    public byte[] extractSecret(final byte[] array) {
        final byte[] array2 = new byte[64];
        this.engine.decaps(array2, array, ((HQCPrivateKeyParameters)this.key).getPrivateKey());
        return Arrays.copyOfRange(array2, 0, 32);
    }
    
    @Override
    public int getEncapsulationLength() {
        return this.key.getParameters().getN_BYTES() + this.key.getParameters().getN1N2_BYTES() + 16;
    }
}
