This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
public BigInteger modPow(BigInteger exponent, BigInteger m)
First thing to note is that modPow is not a static method. This means that you call it on a specific BigInteger (in this case g.) It takes two BigIntegers (in this case d and p.) You don't need to convert to an int. This is good as you raise to exponents that are larger than can fit in an int. Finally, it returns a BigInteger (which you are storing in y.)