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

package org.bouncycastle.crypto.agreement;

import java.math.BigInteger;
import org.bouncycastle.util.BigIntegers;
import org.bouncycastle.crypto.params.DHUPublicParameters;
import org.bouncycastle.crypto.CryptoServicesRegistrar;
import org.bouncycastle.crypto.params.DHKeyParameters;
import org.bouncycastle.crypto.CipherParameters;
import org.bouncycastle.crypto.params.DHUPrivateParameters;

public class DHUnifiedAgreement
{
    private DHUPrivateParameters privParams;
    
    public void init(final CipherParameters cipherParameters) {
        this.privParams = (DHUPrivateParameters)cipherParameters;
        CryptoServicesRegistrar.checkConstraints(Utils.getDefaultProperties("DHU", this.privParams.getStaticPrivateKey()));
    }
    
    public int getFieldSize() {
        return (this.privParams.getStaticPrivateKey().getParameters().getP().bitLength() + 7) / 8;
    }
    
    public byte[] calculateAgreement(final CipherParameters cipherParameters) {
        final DHUPublicParameters dhuPublicParameters = (DHUPublicParameters)cipherParameters;
        final DHBasicAgreement dhBasicAgreement = new DHBasicAgreement();
        final DHBasicAgreement dhBasicAgreement2 = new DHBasicAgreement();
        dhBasicAgreement.init(this.privParams.getStaticPrivateKey());
        final BigInteger calculateAgreement = dhBasicAgreement.calculateAgreement(dhuPublicParameters.getStaticPublicKey());
        dhBasicAgreement2.init(this.privParams.getEphemeralPrivateKey());
        final BigInteger calculateAgreement2 = dhBasicAgreement2.calculateAgreement(dhuPublicParameters.getEphemeralPublicKey());
        final int fieldSize = this.getFieldSize();
        final byte[] array = new byte[fieldSize * 2];
        BigIntegers.asUnsignedByteArray(calculateAgreement2, array, 0, fieldSize);
        BigIntegers.asUnsignedByteArray(calculateAgreement, array, fieldSize, fieldSize);
        return array;
    }
}
