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.
Merci d'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Partager