Desde el administrador de paquetes, instalé las bibliotecas de Nettle.libnettle7,libhogweed5,contenedor de ortigas, yortiga-dev, que parecen estar basados en Nettle 3.5.1. Estoy usando Ubuntu 20.04. Después de esto, pude escribir dos programas usando algoritmos AES y SHA, que funcionaron bien, así que sé que la ruta del encabezado es correcta.
Sin embargo, no pude llamar a funciones RSA sin recibir errores del compilador.
$ make rsa_test
/usr/bin/ld: /tmp/ccaqGeCe.o: in function `main':
rsa_test.cc:(.text+0x36): undefined reference to `nettle_rsa_public_key_init'
/usr/bin/ld: rsa_test.cc:(.text+0x42): undefined reference to `nettle_rsa_private_key_init'
collect2: error: ld returned 1 exit status
make: *** [Makefile:9: rsa_test] Error 1
Aquí hay un código mínimo que produce el error:
#include <stdlib.h>
#include <stdio.h>
#include <nettle/rsa.h>
using namespace std;
int main(int argc, char **argv) {
struct rsa_public_key pub;
struct rsa_private_key priv;
rsa_public_key_init(&pub);
rsa_private_key_init(&priv);
}
El archivo rsa.h está presente en /usr/include/nettle y contiene las funciones rsa_public_key_init y rsa_public_key_init. ¿Cómo puedo instalar las funciones RSA y llamarlas?