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

package org.bouncycastle.pqc.crypto.mlkem;

import org.bouncycastle.util.Arrays;

public class MLKEMPublicKeyParameters extends MLKEMKeyParameters
{
    final byte[] t;
    final byte[] rho;
    
    static byte[] getEncoded(final byte[] array, final byte[] array2) {
        return Arrays.concatenate(array, array2);
    }
    
    public MLKEMPublicKeyParameters(final MLKEMParameters mlkemParameters, final byte[] array, final byte[] array2) {
        super(false, mlkemParameters);
        final MLKEMEngine engine = mlkemParameters.getEngine();
        if (array.length != engine.getKyberPolyVecBytes()) {
            throw new IllegalArgumentException("'t' has invalid length");
        }
        if (array2.length != 32) {
            throw new IllegalArgumentException("'rho' has invalid length");
        }
        this.t = Arrays.clone(array);
        this.rho = Arrays.clone(array2);
        if (!engine.checkModulus(this.t)) {
            throw new IllegalArgumentException("Modulus check failed for ML-KEM public key");
        }
    }
    
    public MLKEMPublicKeyParameters(final MLKEMParameters mlkemParameters, final byte[] array) {
        super(false, mlkemParameters);
        final MLKEMEngine engine = mlkemParameters.getEngine();
        if (array.length != engine.getKyberIndCpaPublicKeyBytes()) {
            throw new IllegalArgumentException("'encoding' has invalid length");
        }
        this.t = Arrays.copyOfRange(array, 0, array.length - 32);
        this.rho = Arrays.copyOfRange(array, array.length - 32, array.length);
        if (!engine.checkModulus(this.t)) {
            throw new IllegalArgumentException("Modulus check failed for ML-KEM public key");
        }
    }
    
    public byte[] getEncoded() {
        return getEncoded(this.t, this.rho);
    }
    
    public byte[] getRho() {
        return Arrays.clone(this.rho);
    }
    
    public byte[] getT() {
        return Arrays.clone(this.t);
    }
}
