$\text{First part of the proof is simple. I prove the second part. Suppose d is a vector of norm 1 and u} \\ \text{is a subgradient of f at x which is not} \ c \nabla f(x) \ \text{for some constant c (in that case} \\ \text{the proof is similar and simple)} \ \\ \text{By Taylor theorem we have:} \\
f(x + \epsilon d) = f(x) + \epsilon \langle\nabla f(x) , d\rangle + o(\epsilon) =\\
f(x) + \epsilon \langle\nabla f(x) , d\rangle + \epsilon \langle u , d\rangle - \epsilon \langle u , d\rangle + o(\epsilon)= \\
f(x) + \langle u,\epsilon d\rangle + \epsilon(\langle\nabla f(x) , d\rangle - \langle u,d\rangle + \frac{o(\epsilon)}{\epsilon}) \\
\text{We can find a vector d such that}\langle\nabla f(x) , d\rangle \,< 0 \, \text{and} \, \langle u,d\rangle \, > 0. \, \text{Now by choosing a very small positive} \, \epsilon \, \text{we have} \\ f(x + \epsilon d) < f(x) + \langle u , \epsilon d\rangle \, \text{which is a contradiction.}
$