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

package org.bouncycastle.pqc.crypto.lms;

import org.bouncycastle.crypto.Digest;

class LMOtsPrivateKey
{
    private final LMOtsParameters parameter;
    private final byte[] I;
    private final int q;
    private final byte[] masterSecret;
    
    LMOtsPrivateKey(final LMOtsParameters parameter, final byte[] i, final int q, final byte[] masterSecret) {
        this.parameter = parameter;
        this.I = i;
        this.q = q;
        this.masterSecret = masterSecret;
    }
    
    LMSContext getSignatureContext(final LMSigParameters lmSigParameters, final byte[][] array) {
        final byte[] array2 = new byte[this.parameter.getN()];
        final SeedDerive derivationFunction = this.getDerivationFunction();
        derivationFunction.setJ(-3);
        derivationFunction.deriveSeed(array2, false);
        final Digest digest = DigestUtil.getDigest(this.parameter);
        LmsUtils.byteArray(this.getI(), digest);
        LmsUtils.u32str(this.getQ(), digest);
        LmsUtils.u16str((short)(-32383), digest);
        LmsUtils.byteArray(array2, digest);
        return new LMSContext(this, lmSigParameters, digest, array2, array);
    }
    
    SeedDerive getDerivationFunction() {
        final SeedDerive seedDerive = new SeedDerive(this.I, this.masterSecret, DigestUtil.getDigest(this.parameter));
        seedDerive.setQ(this.q);
        return seedDerive;
    }
    
    public LMOtsParameters getParameter() {
        return this.parameter;
    }
    
    public byte[] getI() {
        return this.I;
    }
    
    public int getQ() {
        return this.q;
    }
    
    public byte[] getMasterSecret() {
        return this.masterSecret;
    }
}
