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

package org.bouncycastle.crypto.params;

import org.bouncycastle.util.BigIntegers;
import java.security.SecureRandom;
import java.math.BigInteger;

public class SAKKEPrivateKeyParameters extends AsymmetricKeyParameter
{
    private static final BigInteger qMinOne;
    private final SAKKEPublicKeyParameters publicParams;
    private final BigInteger z;
    
    public SAKKEPrivateKeyParameters(final BigInteger z, final SAKKEPublicKeyParameters publicParams) {
        super(true);
        this.z = z;
        this.publicParams = publicParams;
        if (!publicParams.getPoint().multiply(z).normalize().equals(publicParams.getZ())) {
            throw new IllegalStateException("public key and private key of SAKKE do not match");
        }
    }
    
    public SAKKEPrivateKeyParameters(final SecureRandom secureRandom) {
        super(true);
        this.z = BigIntegers.createRandomInRange(BigIntegers.TWO, SAKKEPrivateKeyParameters.qMinOne, secureRandom);
        this.publicParams = new SAKKEPublicKeyParameters(BigIntegers.createRandomInRange(BigIntegers.TWO, SAKKEPrivateKeyParameters.qMinOne, secureRandom), SAKKEPublicKeyParameters.P.multiply(this.z).normalize());
    }
    
    public SAKKEPublicKeyParameters getPublicParams() {
        return this.publicParams;
    }
    
    public BigInteger getMasterSecret() {
        return this.z;
    }
    
    static {
        qMinOne = SAKKEPublicKeyParameters.q.subtract(BigInteger.ONE);
    }
}
