comportement étrange de BIGNUM
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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #include <openssl/bn.h>
#include <stdio.h>
int main(){
BIGNUM *p = BN_new();
size_t len = BN_num_bytes(p);
char *buf = new char[len];
if(len>0)
printf("len est positif\n");
else
if(len == 0)
printf("len est nul\n");
else
printf("len est negatif\n");
BN_free(p);
delete [] buf;
return 0;
} |
Merci d'avance pour votre aide.