Подписание DSA с помощью OpenSSL

Я пытаюсь подписать с помощью DSA из OpenSSL. У меня есть файлы, содержащие открытый и закрытый ключи.

Прежде всего, я устанавливаю одноадресное соединение, и все в порядке. После этого мне нужно многоадресное UDP-соединение, и я хочу подписывать пакеты. Я пытаюсь использовать функцию PEM_read_DSA_PUBKEY () , чтобы загрузить свой открытый ключ из моего сертификата, но это не работает. Он всегда возвращает NULL вместо структуры DSA.

Здесь у вас есть упрощенная версия кода. Я компилирую так:

gcc -Wall -g -lm prueba.c -o prueba -lcrypto

Есть идеи? Спасибо!

#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;
}
7
задан jww 29 June 2016 в 19:42
поделиться