Skip to content

Не работают элептические кривые :( #458

Description

@MrKribel

Что я делаю не так?

  1. Клонируем репозиторий с исходным кодом проекта
    git clone https://github.com/gost-engine/engine.git

  2. Переходим в директорию с проектом
    cd engine

  3. Инициализируем и обновляем подмодули
    git submodule update --init

  4. Создаем новую директорию для сборки проекта
    mkdir build

  5. Переходим в директорию сборки
    cd build

  6. Устанавливаем пакеты разработчика для OpenSSL, которые могут понадобиться для сборки проекта
    sudo apt-get install libssl-dev

  7. Запускаем CMake с указанием типа сборки (Release) и использованием родительской директории (..) в качестве корневого каталога проекта
    cmake -DCMAKE_BUILD_TYPE=Release ..

  8. Компилируем проект с использованием типа сборки Release
    cmake --build . --config Release

  9. Устанавливаем скомпилированный проект
    sudo cmake --build . --target install --config Release

  10. Проверяем версию OpenSSL и список доступных движков
    openssl version -e

  11. Выводим список файлов в директории /usr/lib/x86_64-linux-gnu/engines-3 и видим библиотеку gost.so
    ls /usr/lib/x86_64-linux-gnu/engines-3

Для использования сертификатов OpenSSL с алгоритмами ГОСТ необходимо также отредактировать файл конфигурации /etc/ssl/openssl.cnf:

Добавляем в начало файла:

openssl_conf = openssl_def

[openssl_def]
engines = engine_section

[engine_section]
gost = gost_section

[gost_section]
engine_id = gost
dynamic_path = /usr/lib/x86_64-linux-gnu/engines-3/gost.so
default_algorithms = ALL

Проверяем:

openssl ciphers -v 'GOST2001-GOST89-GOST89'

TLS_AES_256_GCM_SHA384         TLSv1.3 Kx=any      Au=any   Enc=AESGCM(256)            Mac=AEAD
TLS_CHACHA20_POLY1305_SHA256   TLSv1.3 Kx=any      Au=any   Enc=CHACHA20/POLY1305(256) Mac=AEAD
TLS_AES_128_GCM_SHA256         TLSv1.3 Kx=any      Au=any   Enc=AESGCM(128)            Mac=AEAD
GOST2001-GOST89-GOST89         TLSv1   Kx=GOST     Au=GOST01 Enc=GOST89(256)
user@pc:~/engine/build$ openssl genpkey -algorithm GOST2012 -pkeyopt digest:gost2012 -out private.key
Error initializing GOST2012 context
40A7C2668F7F0000:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported:../crypto/evp/evp_fetch.c:349:Global default library context, Algorithm (GOST2012 : 0), Properties (<null>)
user@pc:~/engine/build$ openssl ecparam -genkey -name gost2012_256 -out privatekey_gost2012_256.pem
unable to generate key
40877D4B7E7F0000:error:0800008D:elliptic curve routines:group_new_from_name:invalid curve:../crypto/ec/ec_lib.c:1490:
user@pc:~/engine/build$ openssl genpkey -algorithm gost2012-256 -out private_key_gost2012_256.pem
Error initializing gost2012-256 context
40E73C8B747F0000:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported:../crypto/evp/evp_fetch.c:349:Global default library context, Algorithm (gost2012-256 : 0), Properties (<null>)
user@pc:~/engine/build$ openssl ecparam -name gost2012_256 -genkey -out private_key_gost2012_256.pem
unable to generate key
40B7CDB0597F0000:error:0800008D:elliptic curve routines:group_new_from_name:invalid curve:../crypto/ec/ec_lib.c:1490:
user@pc:~/engine/build$ openssl genpkey -paramfile /etc/ssl/gost/gost2012_256.param -out private_key_gost2012_256.pem
Can't open parameter file /etc/ssl/gost/gost2012_256.param
40E730FA4F7F0000:error:80000002:system library:BIO_new_file:No such file or directory:../crypto/bio/bss_file.c:67:calling fopen(/etc/ssl/gost/gost2012_256.param, r)
40E730FA4F7F0000:error:10000080:BIO routines:BIO_new_file:no such file:../crypto/bio/bss_file.c:75:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions