Hello,
i have created the following code to test the use of RSA (signautre):

*#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <openssl/engine.h>
#include <openssl/err.h>
#include <openssl/rsa.h>
#include <openssl/rand.h>
#include <openssl/sha.h>

main ()
{

long erreur = 0;
char *message="vatos locos para siempre";
char *encrypt, *decrypt, *sign,
hash[SHA_DIGEST_LENGTH],hash1[SHA_DIGEST_LENGTH];
int longmsg,i,random,ok;
int siglong;
RSA *rsa;

         random= RAND_load_file("/dev/urandom ",1024);//seeding the Pseudo
random generator

         rsa = RSA_generate_key(128,13,NULL,NULL);//generating a key having
a 128 bits modulus

         SHA1(message,strlen(message),hash);    //computing a digest using
SHA1
         for(i=0; i<20; ++i){
                     printf("%x",hash[i]);}
                             printf("\n");

         sign=(unsigned char*)malloc(RSA_size(rsa));
         ok= 
RSA_sign(NID_sha1,hash,strlen(hash),sign,&siglong,rsa);**//generating
the signature using RSA*
*         erreur= ERR_get_error();
         printf("signature = %d \n",ok);
         printf("signature length =%d \n",siglong);
         printf("erreur =%d \n",erreur);
         printf("PRNG random =%d \n",random);
         printf("strlen(hash) =%d \n",strlen(hash));
RSA_free(rsa);
free(sign);

}
*
After i compiled it using: *gcc rsa.c -o rsa -lssl
*And i received the following results:
*
ffffff9c6bffffffdd1c5dffffff915ffffffff7ffffffdbffffff93ffffffab3c23ffffffe5ffffffb344ffffff8b49632
signature = 0
**signature length** =-1209806408
erreur =67588208
PRNG random =0
strlen(hash) =20
*
here are my questions:
1- why RSA_sign returned a 0 (signautre = 0) which means the failure of the
key generation?
2- why the signautre has a negative value unstead of having 20 bytes length?
3- why the function RAND_load_file returned zero unstead of returning the
number of bytes obtained after seeding the PRNG?

Thank you for your help.
have a nice day.
-- 
Aymen

Reply via email to