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

package org.bouncycastle.pqc.crypto.xwing;

import org.bouncycastle.util.Arrays;
import org.bouncycastle.crypto.params.X25519PublicKeyParameters;
import org.bouncycastle.pqc.crypto.mlkem.MLKEMPublicKeyParameters;
import org.bouncycastle.crypto.params.X25519PrivateKeyParameters;
import org.bouncycastle.pqc.crypto.mlkem.MLKEMPrivateKeyParameters;

public class XWingPrivateKeyParameters extends XWingKeyParameters
{
    private final transient byte[] seed;
    private final transient MLKEMPrivateKeyParameters kyberPrivateKey;
    private final transient X25519PrivateKeyParameters xdhPrivateKey;
    private final transient MLKEMPublicKeyParameters kyberPublicKey;
    private final transient X25519PublicKeyParameters xdhPublicKey;
    
    public XWingPrivateKeyParameters(final byte[] array, final MLKEMPrivateKeyParameters kyberPrivateKey, final X25519PrivateKeyParameters xdhPrivateKey, final MLKEMPublicKeyParameters kyberPublicKey, final X25519PublicKeyParameters xdhPublicKey) {
        super(true);
        this.seed = Arrays.clone(array);
        this.kyberPrivateKey = kyberPrivateKey;
        this.xdhPrivateKey = xdhPrivateKey;
        this.kyberPublicKey = kyberPublicKey;
        this.xdhPublicKey = xdhPublicKey;
    }
    
    public XWingPrivateKeyParameters(final byte[] array) {
        super(true);
        final XWingPrivateKeyParameters xWingPrivateKeyParameters = (XWingPrivateKeyParameters)XWingKeyPairGenerator.genKeyPair(array).getPrivate();
        this.seed = xWingPrivateKeyParameters.seed;
        this.kyberPrivateKey = xWingPrivateKeyParameters.kyberPrivateKey;
        this.xdhPrivateKey = xWingPrivateKeyParameters.xdhPrivateKey;
        this.kyberPublicKey = xWingPrivateKeyParameters.kyberPublicKey;
        this.xdhPublicKey = xWingPrivateKeyParameters.xdhPublicKey;
    }
    
    public byte[] getSeed() {
        return Arrays.clone(this.seed);
    }
    
    MLKEMPrivateKeyParameters getKyberPrivateKey() {
        return this.kyberPrivateKey;
    }
    
    MLKEMPublicKeyParameters getKyberPublicKey() {
        return this.kyberPublicKey;
    }
    
    X25519PrivateKeyParameters getXDHPrivateKey() {
        return this.xdhPrivateKey;
    }
    
    X25519PublicKeyParameters getXDHPublicKey() {
        return this.xdhPublicKey;
    }
    
    public byte[] getEncoded() {
        return Arrays.clone(this.seed);
    }
}
