GMP + courbes elliptiques [Résolu]

Signaler
Messages postés
15
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
25 octobre 2006
-
Messages postés
6
Date d'inscription
samedi 23 octobre 2004
Statut
Membre
Dernière intervention
17 janvier 2007
-
Salut tous,

<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>








 






J’aimerais savoir si qqn de vous aurait déjà travailler avec la librairie GMP (Gnu Multiple Précision)  a réussi à compiler l’exemple  ‘ecdsa.c’ fourni dans ecc-lib-2.0 dans visual studio (6 ou .net.)






 






J’ai des erreurs malgré les références vers les dossiers ‘include’ et ‘lib’ de ecc-lib-2.0.






 






Rq : J’ai déjà installé la librairie GMP et j’ai pu compiler qq exemples qui utilisent des fonctions de cette dernière.






      





Merci d’avance.

6 réponses

Messages postés
15
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
25 octobre 2006

En fin j'ai réussi exécuter l'exemple de signature numerique avec les courbes elliptiques «ECDSA», il m’a fallait juste un peu de temps pour s'adapter au C++.



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




A+. 
Messages postés
15
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
25 octobre 2006

Apparemment je n’ai pas bien expliqué mon sujet, en fait j’aimerai utiliser la cryptographie avec les courbes elliptiques. J’ai téléchargé  la librairie ecc-lib-2.0 http://www.ceid.upatras.gr/faculty/zaro/software/ecc-lib/ qui est une librairie pour la cryptographie avec les courbes elliptiques écrite en C et elle utilise la librairie Gnu Multiple Précision (GMP)  pour l’arithmétique des nombres flottants haute-précision :<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>






 







Le dossier ecc-lib-2.0 contient les dossiers : ‘include’, ‘lib’ et un fichier de test ecdsa.c, j’ai essayé plusieurs méthodes (mettre le contenu des dossiers dans le projet ou les référencés dans le projet…) pour compilé cette source sous Visual Studio 6 mais j’ai tjrs des erreurs de ‘Linking’ :






 







 






Linking...





ecdsa.obj : error LNK2001: unresolved external symbol ___gmpz_clear





ecdsa.obj : error LNK2001: unresolved external symbol _file_create_signature





ecdsa.obj : error LNK2001: unresolved external symbol _create_priv_and_public





ecdsa.obj : error LNK2001: unresolved external symbol _domain_parameters





ecdsa.obj : error LNK2001: unresolved external symbol _CMmethod





ecdsa.obj : error LNK2001: unresolved external symbol ___gmp_randseed





ecdsa.obj : error LNK2001: unresolved external symbol ___gmpz_set_ui





ecdsa.obj : error LNK2001: unresolved external symbol ___gmpz_init





Debug/ECDSA.exe : fatal error LNK1120: 8 unresolved externals





Error executing link.exe.       






 





Je suis nouveau dans Visual Studio 6 et je pense que le problème est que je n’arrive pas utilisé les sources que j’ai convenablement .

Merci
Messages postés
1
Date d'inscription
vendredi 16 juin 2006
Statut
Membre
Dernière intervention
23 octobre 2006

Hello

J'ai le meme probleme de linkage alors j'aurai aimé savoir comment tu l'as résolu ! :)

Merci
Messages postés
15
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
25 octobre 2006

Salut, désolé pour le retard
Bon je détail comment j’avais bidouiller mais c’est peut être pas la meilleure solution :<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>













J’ai téléchargé le fichier ‘gmp-dynamic-vc-4.1.2.zip’ dans laquel se trouve gmp.dll, gmpDebug.dll, gmp.lib et gmpDebug.lib.








J'ai ajouter gmp.dll et gmpDebug.dll dans le dossier system32 de WINDOWS 








J'ai téléchargé  fichier ‘ecc-lib-2.0.zip’ où se trouvent les codes sources de l’exemple ECDSA.






 






J’ai ajouter tous les codes sources dans Visual studio .Net (ou Visual studio 6.0)






 






Dans la classe ‘ecdsa.c’ j’ai ajouté :






 






#pragma

comment
(
lib
,
"gmpDebug.lib"
) ou
#pragma
comment
(
lib
,
"gmp.lib"
)


 










 






Tu peux aussi mettre en commentaire la directive
//#include











 






Quand j’ai exécuter l’exemple j’avait des erreurs dans ‘protocols.c’ a cause de la fonction
mpz_out_str(stdout,10,r/s) j’ai juste mi 0 a la place stdout je sai pas pourquoi.






 






Aussi la fonction mpz_out_str(fpo,10,r/s) qui permet d'ecrire la signature(les valeurs de r et s) generée dans un fichier ‘signature’ :






 






Voila ce que j’avait fait pour afficher le resultat dans le console et l’ecrire dans le fichier ‘signature’ :






 
dans protocols.c






char
*
buffr;






     
char
* buffs;





.





.





.






 






buffr = malloc(sizeof(r));






      buffs = malloc(sizeof(s));






      mpz_out_str(0, 10, r);






      mpz_get_str(buffr,10,r);






      fprintf(fpo,"%s",buffr);






      fputc(' ', fpo);






      printf(" ");






      mpz_out_str(0, 10, s);






      mpz_get_str(buffs,10,s);






     

fprintf(fpo,"%s",buffs);    

 






je sai pa si c la bonne solution parce qe ça prend environ 4 ou 5 second pour générer la signature du fichier 'README' fourni dans ecc-lib-2.0 (6 ko).

j'espere qe ce qe j'avais ecrit peut t'aider a resoudre ton probleme.

bon courage.   
Messages postés
15
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
25 octobre 2006

ah j'ai oublier il faut aussi ajouter gmp.h qui se trouve dans 'gmp-dynamic-vc-4.1.2' dans VS.

a+.
Messages postés
6
Date d'inscription
samedi 23 octobre 2004
Statut
Membre
Dernière intervention
17 janvier 2007

j'ai travaillé sur le GMP mais avec Builder C++ et C sur l'environement Windows et tout est marcher avec une exception sur quelque opérations qui plante les processeurs de type Puntium mais c'est excelent pour les AMD.

OULDDAH