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

package org.bouncycastle.pqc.crypto.cmce;

import org.bouncycastle.util.Arrays;

public class CMCEPrivateKeyParameters extends CMCEKeyParameters
{
    private final byte[] privateKey;
    
    public byte[] getPrivateKey() {
        return Arrays.clone(this.privateKey);
    }
    
    public CMCEPrivateKeyParameters(final CMCEParameters cmceParameters, final byte[] array) {
        super(true, cmceParameters);
        this.privateKey = Arrays.clone(array);
    }
    
    public CMCEPrivateKeyParameters(final CMCEParameters cmceParameters, final byte[] array, final byte[] array2, final byte[] array3, final byte[] array4, final byte[] array5) {
        super(true, cmceParameters);
        this.privateKey = new byte[array.length + array2.length + array3.length + array4.length + array5.length];
        final int n = 0;
        System.arraycopy(array, 0, this.privateKey, n, array.length);
        final int n2 = n + array.length;
        System.arraycopy(array2, 0, this.privateKey, n2, array2.length);
        final int n3 = n2 + array2.length;
        System.arraycopy(array3, 0, this.privateKey, n3, array3.length);
        final int n4 = n3 + array3.length;
        System.arraycopy(array4, 0, this.privateKey, n4, array4.length);
        System.arraycopy(array5, 0, this.privateKey, n4 + array4.length, array5.length);
    }
    
    public byte[] reconstructPublicKey() {
        return this.getParameters().getEngine().generate_public_key_from_private_key(this.privateKey);
    }
    
    public byte[] getEncoded() {
        return Arrays.clone(this.privateKey);
    }
    
    public byte[] getDelta() {
        return Arrays.copyOfRange(this.privateKey, 0, 32);
    }
    
    public byte[] getC() {
        return Arrays.copyOfRange(this.privateKey, 32, 40);
    }
    
    public byte[] getG() {
        return Arrays.copyOfRange(this.privateKey, 40, 40 + this.getParameters().getT() * 2);
    }
    
    public byte[] getAlpha() {
        return Arrays.copyOfRange(this.privateKey, 40 + this.getParameters().getT() * 2, this.privateKey.length - 32);
    }
    
    public byte[] getS() {
        return Arrays.copyOfRange(this.privateKey, this.privateKey.length - 32, this.privateKey.length);
    }
}
