Hola!
Tengo un problema intentando firmar con DSA. He generado las claves pública y privada. Primero tengo una conexión unicast para la que utilizo las funciones preparadas de OpenSSL de más alto nivel y todo va bien.
Quiero utilizarlo también para firmar paquetes que van a ir por una conexión multicast sobre UDP. Así pues creo que la función que debería usar es PEM_read_DSA_PUBKEY() y la correspondiente para leer la clave privada, pero siempre devuelve NULL en vez de cargar la clave en el struct DSA.
Aquí va el código de una prueba simplificada. Compilo así:
gcc -Wall -g -lm prueba.c -o prueba -lcrypto
¿Alguna idea? Gracias!
#include <stdio.h>
#include <openssl/dsa.h>
#include <openssl/pem.h>
int main() {
printf("Opening public key file (certificate)...");
FILE *DSA_cert_file = fopen("./certs/cert.pem", "r");
if (DSA_cert_file == NULL)
diep("fopen");
printf("Done\n");
DSA *dsa = DSA_new();
printf("DSA created\n");
if((dsa = PEM_read_DSA_PUBKEY(DSA_cert_file, 0, 0, 0)) == NULL)
printf("DSA certificate NULL\n");;
else
printf("DSA certificate read\n");;
return 1;
} //end main