Step by step conceptual implementation of AUTHENTICATED Diffie-Hellman?
Both parties are pub-key holders, so let's call them A and B having their private keys $a$ and $b$.

DH conceptually goes (this is something you already may know):


A: computes $g_a = g^a \pmod p$ and sends it to B
B: computes $g_b = g^b \pmod p$ and sends it to A
A: computes key $K = g_b^a \pmod p = g^{ab} \pmod p$
B: computes key $K = g_a^b \pmod p = g^{ab} \pmod p$


and now there are several authentication schemes to validate they're really speaking to each other. You may check the X.1035 or SPKE, there are the complete step-by-step recommendations. 

Basically I found 2 methods: 


A and B send each other hash of the salt, their public keys, shared password and the computed secret key
DH parameters ($p$ or $g$) depend from the shared password