2015-03-23 2 views
3

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

Я использую 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, предположительно, из-за недопустимого писать или что-то.

У кого-нибудь есть идея, где моя проблема может быть? Подсказка:

ответ

2

Доброе утро, пожалуйста, не забудьте указать заголовок 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 [email protected] $(LIBS) $^ $(CFLAGS) #put $(LIBS) into build command            

.PHONY: clean all                

clean:                   
→→→→rm -f *.o test.o run 
+0

Спасибо! #include похоже на трюк. – KakaduChat

+0

Нет проблем. Если у вас возникнут какие-либо другие вопросы, не стесняйтесь спрашивать! – Kaleb

Смежные вопросы