• Страница:
  • 1
  • 2
  • 3

ТЕМА: XMLDSIG на Linux

Re: XMLDSIG на Linux 2 года, 8 мес. назад #2784

  • devops
  • Новый участник
  • Постов: 9
  • Репутация: 0
Есть проблемы при инициализации движка (с динамическими библиотеками).
Не подскажете, как можно решить?
Пример работает, если брать движок по id "gost".

Код:
#include <stdlib.h>
#include <stdio.h>
#include <openssl/engine.h>
#include <openssl/ssl.h>

int main() {
    ENGINE_load_builtin_engines();

    int rc = 0, digest_len, i;
    unsigned long err = 0;
    EVP_MD_CTX *ctx;
    const EVP_MD *md;
    ENGINE *eng = ENGINE_by_id("kncagost");

    rc = ENGINE_init(eng);
    if (0 == rc) {
        fprintf(stderr, "ENGINE_set_default failed, err = 0x%lx\n", err);
        abort();
    }
    ENGINE_set_default_digests(eng);

    return 0;
}


Команда компиляции:
gcc -g -o example example.c  -I/home/user/Linux/dynamic/x64/include -L/home/Linux/dynamic/x64 -lcrypto -lssl -ldl -lz -L/home/Linux/dynamic/x64/engines -lkncagost


Устанавливаю содержимое $LD_LIBRARY_PATH командой:
export LD_LIBRARY_PATH=/home/user/Linux/dynamic/x64:/home/user/Linux/dynamic/x64/engines:$LD_LIBRARY_PATH


Вывод:
./example 
ENGINE_set_default failed, err = 0x0
Aborted (core dumped)
Изменено: 2 года, 8 мес. назад от devops.

Re: XMLDSIG на Linux 2 года, 8 мес. назад #2786

  • ugotbug
  • Завсегдатай
  • Постов: 225
  • Репутация: 14
1) Команда export работает только на текущую сессию, в вашем случае в текущем терминале. Учтите этот момент.
2 Если у вас 64 битная ОС Linux, то попробуйте указать переменную окружения LD_LIBRARY_PATH_64.
Могущественный обладатель кольца Знаний
Спасибо сказали: devops

Re: XMLDSIG на Linux 2 года, 8 мес. назад #2788

  • devops
  • Новый участник
  • Постов: 9
  • Репутация: 0
Спасибо, попробовал. Установка LD_LIBRARY_PATH_64 не помогла
Изменено: 2 года, 8 мес. назад от devops.

Re: XMLDSIG на Linux 2 года, 8 мес. назад #2790

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
Здравствуйте!

Добавьте эти строки в самом начале:
ENGINE_load_openssl();
ENGINE_load_gost();
OpenSSL_add_all_algorithms();
ENGINE_register_all_pkey_asn1_meths();
Модератор

Re: XMLDSIG на Linux 2 года, 8 мес. назад #2796

  • devops
  • Новый участник
  • Постов: 9
  • Репутация: 0
Спасибо за ответ, попробовал добавить эти строки.
Входные данные:

Код (убрал лишнее из предыдущего примера):
#include <stdlib.h>
#include <stdio.h>
#include <openssl/engine.h>
#include <openssl/ssl.h>

int main() {
    ENGINE_load_openssl();
    ENGINE_load_gost();
    OpenSSL_add_all_algorithms();
    ENGINE_register_all_pkey_asn1_meths();

    ENGINE *eng = ENGINE_by_id("kncagost");
    int rc = 0;

    rc = ENGINE_init(eng);
    if (0 == rc) {
        printf("ENGINE_init failed\n");
        abort();
    }

    return 0;
}


Параметры окружения настраиваю командами:
export LD_LIBRARY_PATH=/home/user/Linux/dynamic/x64:/home/user/Linux/dynamic/x64/engines:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH_64=/home/user/Linux/dynamic/x64:/home/user/Linux/dynamic/x64/engines:$LD_LIBRARY_PATH_64


Компилирую командой:
$ gcc -g -o example example.c  -I/home/user/Linux/dynamic/x64/include -L/home/user/Linux/dynamic/x64 -lcrypto -lssl -ldl -lz -L/home/user/Linux/dynamic/x64/engines -lkncagost


Результат компиляции:
/tmp/ccO7hg6C.o: In function `main':
/home/user/Linux/dynamic/x64/example.c:8: undefined reference to `ENGINE_load_gost'
collect2: error: ld returned 1 exit status

Re: XMLDSIG на Linux 2 года, 8 мес. назад #2800

  • devops
  • Новый участник
  • Постов: 9
  • Репутация: 0
Проверил таблицу символов библиотек (динамические, Linux x64):

Команда:
nm -D libcrypto.so | grep -i engine_load

Результат:
00000000000d5740 T ENGINE_load_builtin_engines
00000000000d7b90 T ENGINE_load_cryptodev
00000000000d7ac0 T ENGINE_load_dynamic
00000000000d6a10 T ENGINE_load_openssl
00000000000d4e20 T ENGINE_load_private_key
00000000000d4f80 T ENGINE_load_public_key
00000000000d94a0 T ENGINE_load_rdrand
00000000000d92f0 T ENGINE_load_rsax
00000000000d50e0 T ENGINE_load_ssl_client_cert


Команда:
nm -D libssl.so | grep -i engine_load

Результат:
                 U ENGINE_load_ssl_client_cert


Команда:
nm -D engines/libkncagost.so | grep -i engine_load

Результатов поиска нет

На мой взгляд, функции ENGINE_load_gost() в динамических библиотеках нет
Изменено: 2 года, 8 мес. назад от devops.
  • Страница:
  • 1
  • 2
  • 3
FaLang translation system by Faboba