Modification du source d'AODV (sous ns2)

exmortix -  
 exmortix -
Bonjour,

j'essaie d'implémenter la solution de Mr Guerero Zapata sous NS2.33(http://lptools1.amsl.com/html/draft-guerrero-manet-sakm-00) pour implémenter un nouveau système de gestion de clé cryptographique.
je voudrais dériver une adresse IP a partir d'une clé publique dans le fichier aodv.cc . pour ce faire, il faut modifier la valeur de la variable index dans le constructeur AODV::AODV(nsaddr_t id) : Agent(PT_AODV),
btimer(this), htimer(this), ntimer(this),
rtimer(this), lrtimer(this), rqueue() {... etc
mais l'appel de la fonction deriverip(pubkey) (celle-ci est déclarée comme suit: nsaddr_t deriverip(pubkey) dans un fichier secure.h inclus dans le fichier aodv.cc)
noter bien que je n'ai pas de problèmes dans la compilation, juste une erreur :erreur de segmentation.
merci beaucoup.

( ubuntu 8.04, programmation C )
Configuration: Windows Vista
Firefox 2.0.0.14

2 réponses

  1. exmortix
     
    désolé.
    l'appel de la fonction deriverip() ne fonctionne pas correctement à l'intérieur du constructeur AODV::AODV(nsaddr_t id).

    AODV::AODV(nsaddr_t id) : Agent(PT_AODV),
    btimer(this), htimer(this), ntimer(this),
    rtimer(this), lrtimer(this), rqueue() {

    unsigned char * pubkey;

    id=deriverip(pubkey);
    ....
    et voici le corp de la fonction :
    //dérrivation des ip
    nsaddr_t deriverip(unsigned char * pubkey)
    {
    nsaddr_t ip;int t;
    unsigned char * signature;
    RSA* my_key;
    pubkey=(unsigned char *)RSAPublicKey_dup(my_key);

    int mess_lent= sizeof (pubkey);

    EVP_MD_CTX digest_ctx;
    unsigned char digest[EVP_MAX_MD_SIZE];
    unsigned int size_digest,size_sign;

    EVP_DigestInit(&digest_ctx, EVP_sha ());
    EVP_DigestUpdate(&digest_ctx,( unsigned char *)pubkey,(unsigned int)mess_lent);
    EVP_DigestFinal(&digest_ctx, (unsigned char *)digest, & size_digest);

    //reserver de l'espace memoire pour le champ resevé à la signature par rapport à la clé
    signature = (unsigned char *) malloc (RSA_size(my_key));
    RSA_sign(NID_sha1, pubkey,size_digest,signature,&size_sign,my_key);

    t=8;
    t<<=24;
    t+= (int) pubkey;
    ip=(nsaddr_t ) t;

    return ip;
    }
    1
  2. bob031 Messages postés 8228 Statut Membre 473
     
    bonjour,

    peux-tu clarifier ceci :

    mais l'appel de la fonction deriverip(pubkey) (celle-ci est déclarée comme suit: nsaddr_t deriverip(pubkey) dans un fichier secure.h inclus dans le fichier aodv.cc)

    je n'ai pas compris cette phrase.

    globalement, je n'ai pas compris quel est le souci exactement ...
    0