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 : 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;
}
Merci d'avance pour votre aide.