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

package org.bouncycastle.pqc.crypto.cmce;

import org.bouncycastle.crypto.EncapsulatedSecretExtractor;

public class CMCEKEMExtractor implements EncapsulatedSecretExtractor
{
    private CMCEEngine engine;
    private CMCEKeyParameters key;
    
    public CMCEKEMExtractor(final CMCEPrivateKeyParameters key) {
        this.key = key;
        this.initCipher(this.key.getParameters());
    }
    
    private void initCipher(final CMCEParameters cmceParameters) {
        this.engine = cmceParameters.getEngine();
        final CMCEPrivateKeyParameters cmcePrivateKeyParameters = (CMCEPrivateKeyParameters)this.key;
        if (cmcePrivateKeyParameters.getPrivateKey().length < this.engine.getPrivateKeySize()) {
            this.key = new CMCEPrivateKeyParameters(cmcePrivateKeyParameters.getParameters(), this.engine.decompress_private_key(cmcePrivateKeyParameters.getPrivateKey()));
        }
    }
    
    @Override
    public byte[] extractSecret(final byte[] array) {
        return this.extractSecret(array, this.engine.getDefaultSessionKeySize());
    }
    
    public byte[] extractSecret(final byte[] array, final int n) {
        final byte[] array2 = new byte[n / 8];
        this.engine.kem_dec(array2, array, ((CMCEPrivateKeyParameters)this.key).getPrivateKey());
        return array2;
    }
    
    @Override
    public int getEncapsulationLength() {
        return this.engine.getCipherTextSize();
    }
}
