Error: "uso no válido de tipo incompleto‘ RSA {aka struct rsa_st} "en OpenSSL 1.1.0

Tengo un código antiguo que se escribió para vincular con una versión anterior de openssl. Parte de este código carga una clave de un archivo PEM e intenta comprender si esta clave es privada o pública, utilizando el siguiente código:

if( (prv->p==0 || prv->q==0) ) {
    // This is not a private key!
    throw error("No private key for decryption");
}

Con la última versión de openssl, esto (justificadamente) no compila:

crypto.cpp: In function ‘key* decrypt_header(file_t, RSA*)’:
crypto.cpp:158:13: error: invalid use of incomplete type ‘RSA {aka struct rsa_st}’
     if( (prv->p==0 || prv->q==0) ) {
             ^~

Entiendo que el acceso directo a los miembros privados de la estructura fue reemplazado por una función, pero estoy teniendo dificultades para determinar qué función es esa.

Respuestas a la pregunta(2)

Su respuesta a la pregunta