Estoy intentando firmar usando DSA desde OpenSSL. Tengo los archivos que contienen claves públicas y privadas.Firma DSA con OpenSSL
Antes que nada, hago una conexión de unidifusión y todo está bien. Después de eso necesito una conexión UDP de multidifusión y quiero firmar los paquetes. Estoy tratando de usar la función PEM_read_DSA_PUBKEY()
para cargar mi clave pública de mi certificado pero no funciona. Devuelve siempre NULL
en lugar de una estructura DSA.
Aquí tiene una versión simplista del código. Compilo de esta manera:
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()
{
FILE *DSA_cert_file = fopen("./certs/cert.pem", "r");
if (DSA_cert_file == NULL)
return 1;
printf("Certificate read\n");
DSA *dsa = DSA_new();
if((dsa = PEM_read_DSA_PUBKEY(DSA_cert_file, 0, 0, 0)) == NULL)
return 1;
printf("DSA public key read\n");
return 0;
}
También es posible pasar un puntero a una cadena terminada en nulo como el cuarto argumento – Hasturkun
@Hasturkun: verdad, gracias! Actualizado para mencionar. El hecho es que no veo ningún problema con su código (excepto una fuga de memoria innecesaria), así que supongo que su clave está protegida con contraseña y que no proporciona la contraseña correctamente. – jweyrich
No. He evitado usar una contraseña para simplificarla. – calamares