C ++ с использованием библиотеки Keccak - PullRequest
0 голосов
/ 04 декабря 2018

Я работаю над своей дипломной работой, и мне нужно протестировать некоторые постквантовые алгоритмы.Я скачал их из NIST.Но когда я попробовал DAGS: https://csrc.nist.gov/CSRC/media/Projects/Post-Quantum-Cryptography/documents/round-1/submissions/DAGS.zip и попытался «сделать» dags3 или dags5, я получил эту ошибку:

encapsulation.o: в функции encapsulation': encapsulation.c:(.text+0xeb): undefined reference to KangarooTwelve 'encapsulation.c :(. Text+ 0x13a): неопределенная ссылка на KangarooTwelve' encapsulation.c:(.text+0x2c9): undefined reference to KangarooTwelve 'encapsulation.c :(. Text + 0x478): неопределенная ссылка на KangarooTwelve' decapsulation.o: In function decapsulation': decapsulation.c :(. Text + 0x16e): неопределенная ссылка на KangarooTwelve' decapsulation.o:decapsulation.c:(.text+0x1bd): more undefined references to KangarooTwelve'follow collect2: error: ld вернул 1 состояние завершения Makefile: 22: рецепт для цели' PQCgenKAT_kem 'не выполнен make: *** [PQCgenKAT_kem] Ошибка 1

У меня установлена ​​библиотека keccak, и в этом алгоритме библиотека keccak имеетвключен.Есть идеи?Спасибо за любую помощь.

1 Ответ

0 голосов
/ 06 декабря 2018

В соответствии с комментариями у меня было время посмотреть на сборку сегодня вечером (также на Archlinux), у меня не было никаких проблем.Вот подробные шаги, которые я использовал.

Сначала общая информация о ядре и gcc:

$ uname -a
Linux valkyrie 4.19.4-arch1-1-ARCH #1 SMP PREEMPT 
Fri Nov 23 09:06:58 UTC 2018 x86_64 GNU/Linux

$ gcc --version
gcc (GCC) 8.2.1 20180831
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Клонирование KeccakCodePackage:

$ git clone https://github.com/gvanas/KeccakCodePackage

Я обычно стараюсь и делаюсборка вне исходного кода, особенно с git-репозиториями (просто привычка сборки TDE / KDE3), поэтому я просто создаю kbuild и копирую исходные файлы:

$ md kbuild
$ cp -a KeccakCodePackage/* kbuild/
$ cd kbuild

Теперь соберите необходимыестатическую библиотеку для файла Readme и скопируйте библиотеку и заголовки в / usr / local /, например:

$ make generic64/libkeccak.a

$ sudo cp -a bin/generic64/libkeccak.a /usr/local/lib
$ sudo cp -a bin/generic64/libkeccak.a.headers /usr/local/include

Теперь распакуйте и соберите DAGS PQCgenKAT_kem

$ cd ..
$ unzip DAGS.zip
$ cd DAGS/Optimized_Implementation/kem/dags5

$ make
gcc -c gf.c -o gf.o -march=native -mtune=native -c -Wall -I.
gcc -c poly.c -o poly.o -march=native -mtune=native -c -Wall -I.
gcc -c matrix.c -o matrix.o -march=native -mtune=native -c -Wall -I.
matrix.c: In function ‘matrix_multiplication’:
matrix.c:13:16: warning: ‘res’ may be used uninitialized in this function 
                [-Wmaybe-uninitialized]
        return res;
                ^~~
matrix.c: In function ‘matrix_multiplicaion_subfield’:
matrix.c:59:16: warning: ‘Res’ may be used uninitialized in this function 
                [-Wmaybe-uninitialized]
        return Res;
                ^~~
gcc -c fichier.c -o fichier.o -march=native -mtune=native -c -Wall -I.
gcc -c key_gen.c -o key_gen.o -march=native -mtune=native -c -Wall -I.
gcc -c encapsulation.c -o encapsulation.o -march=native -mtune=native -c -Wall -I.
gcc -c decapsulation.c -o decapsulation.o -march=native -mtune=native -c -Wall -I.
gcc -c util.c -o util.o -march=native -mtune=native -c -Wall -I.
gcc -c decoding.c -o decoding.o -march=native -mtune=native -c -Wall -I.
gcc -c kem.c -o kem.o -march=native -mtune=native -c -Wall -I.
gcc -c rng.c -o rng.o -march=native -mtune=native -c -Wall -I.
gcc -c PQCgenKAT_kem.c -o PQCgenKAT_kem.o -march=native -mtune=native -c -Wall -I.
gcc -O3 -march=native -mtune=native gf.o poly.o matrix.o fichier.o key_gen.o
    encapsulation.o decapsulation.o util.o decoding.o kem.o rng.o PQCgenKAT_kem.o 
    -o PQCgenKAT_kem -L/usr/lib -L. -lssl -lcrypto -lkeccak

Наконец запуститеитоговый исполняемый файл:

$ ./PQCgenKAT_kem
Starting iteration: 0

(все хорошо, понятия не имею, что он делает оттуда, но ошибок нет и все нормально запускается ...)

Итак, я не могупредложите «серебряную пулю» того, что пошло не так с вашей сборкой, но я могу подтвердить, что сборка, в соответствии с различными файлами Readme, продолжается в соответствии с объявлением и приводит к работоспособному исполняемому файлу.Дайте мне знать, если у вас есть дополнительные вопросы.

...