comportement étrange de BIGNUM

comportement étrange de BIGNUM - C++ - Programmation

Marsh Posté le 18-04-2011 à 00:45:51    

Bonjour,
j'utilise la bibliothèque d'openssl pour manipuler des grands nombres : BIGNUM.
Quand j'execute le code ci-dessous, j'obtiens : len est nul alors que je m'attendais à un len est positif
Est ce que quelqu'un pourrait m'aider ? quand je debug avec gdb:
1) il m'affiche une taille du genre len = 140737488347920 juste avant l'appel BN_num_bytes(p). BN_num_bytes(p) retourne la taille en mémoire qu'occupe le grand nombre p.( http://www.openssl.org/docs/crypto/BN_num_bytes.html )
2) il m'affiche len = 0 juste après BN_num_bytes.
 
Mes questions :
a) quand on debug, pourquoi AVANT MEME d'executer BIGNUM *p = BN_new();, on peut déja obtenir la valeur de len = 140737488347920 ? O_o
b) pourquoi BN_num_bytes(p) retourne len = 0 . Ce qui serait à peu près logique pour moi c'est l'inverse... len = 0 avant d'arriver à BN_num_bytes(p) puis celle ci renvoie la taille > 0.
 

Code :
  1. #include <openssl/bn.h>
  2. #include <stdio.h>
  3. int main(){
  4.   BIGNUM *p = BN_new();
  5.    size_t len = BN_num_bytes(p);
  6.    char *buf = new char[len];
  7.   if(len>0)
  8.     printf("len est positif\n" );
  9.   else
  10.     if(len == 0)
  11.       printf("len est nul\n" );
  12.     else
  13.       printf("len est negatif\n" );
  14.   BN_free(p);
  15.   delete [] buf;
  16.   return 0;
  17. }


 
Merci d'avance pour votre aide.

Reply

Marsh Posté le 18-04-2011 à 00:45:51   

Reply

Marsh Posté le 18-04-2011 à 02:24:50    

Je tente une explication (sans connaître la lib OpenSSL plus que ça) :

 

1) Avant l'appel a BN_num_bytes, il est logique que tu aies une valeur de merde (car non initialisé). Le seul truc qui m'intrigue c'est que gdb t'affiche une valeur négative pour un size_t (qui de mémoire est un alias d'un unsigned int) [:transparency]

 

2) Quand tu fais un BN_new(), et que tu ne lui assignes pas de valeur, BN_num_bytes() doit considérer qu'il n'y a pas de nombre et que donc sa taille est nulle.


Message édité par WiiDS le 18-04-2011 à 02:26:46

---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed