Ошибка сегментации при использовании CyaSSL Keygen

Я пытаюсь заставить функцию Keygen CyaSSL работать, используя пример в разделе 7.7 отсюда: http://www.yassl.com/yaSSL/Docs-cyassl-manual-7-keys-and-certificates.html

Я использую CyaSSL 3.2.0 с параметром --enable-keygen, но не смог заставить его работать и с 3.1.0.

Это код:

#include <stdio.h>
#include <cyassl/ctaocrypt/asn.h>
#include <cyassl/ctaocrypt/rsa.h>

int main() {
        RsaKey genKey;
        RNG rng;
        int ret;

        printf("%d\n",InitRng(&rng));
        printf("%d\n",InitRsaKey(&genKey, 0));
        ret = MakeRsaKey(&genKey, 1024, 65537, &rng);

        printf("ret: %d\n",ret);

        return 0;
}

Я получаю ошибку сегментации в строке с InitRsaKey, предположительно из-за неправильной записи или чего-то еще.

Кто-нибудь понял, где может быть моя проблема? Любая помощь приветствуется

1 ответ

Решение

Доброе утро, пожалуйста, не забудьте включить заголовок options.h. Это гарантирует, что вы получите правильные параметры конфигурации в вашем проекте, например, если вы настроите CyaSSL с помощью --enable-keygen, то просмотрите cyassl/options.h, вы увидите строку #undef CYASSL_KEY_GEN с последующим #define CYASSL_KEY_GEN, Также в вашем make-файле не забудьте включить библиотеку cyassl. Это может быть достигнуто с помощью -lcyassl в вашей линии сборки. Смотрите код ниже для справки:

#include <stdio.h>
#include <cyassl/options.h> //pull in the define for CYASSL_KEY_GEN
#include <cyassl/ctaocrypt/asn.h>
#include <cyassl/ctaocrypt/rsa.h>

int main() {
        RsaKey genKey;
        RNG rng;
        int ret;

        printf("%d\n",InitRng(&rng));
        printf("%d\n",InitRsaKey(&genKey, 0));
        ret = MakeRsaKey(&genKey, 1024, 65537, &rng);

        printf("ret: %d\n",ret);

        return 0;
}

Makefile:

 CC=gcc       #you can use clang or other instead of gcc                                                                   
 CFLAGS=-Wall                                                                    
 LIBS=-lpthread -lcyassl #must have -lcyassl in makefile                                                         

 all: run                                                                        

 #NOTE: arrows denote a hard tab, replace them with hard tab in makefile                                                                             
 run: test.o                                                                     
 →→→→$(CC) -o $@ $(LIBS) $^ $(CFLAGS) #put $(LIBS) into build command                                            

 .PHONY: clean all                                                               

 clean:                                                                          
 →→→→rm -f *.o test.o run 
Другие вопросы по тегам