Adds "REQUIRES PRIVATE KEY" callback

In some situations the private key is not directly available via
filesystem (for example, when stored on a smartcard or directly in memory).
If this is the case, the user can set the private key filepath to NULL and
expect this callback reason to set the key directly via openSSL
library calls.