/* * info-614, * entêtes pour le tp2 */ #ifndef _TP2_H #define _TP2_H /* bibliothèques qui peuvent servir... */ #include #include #include #include /* grands entiers */ #include /* gestion des arguments optionels de la ligne de commandes */ #include /* pour initialiser la graine pour générer des nombres aléatoires */ /* * écriture d'une clé (privée ou publique) dans un fichier * Le format du fichier est simplement : * - première ligne : base de la clé en base 62 * - seconde ligne : clé (d ou e) en base 62 * * Attention, le fichier est écrasé s'il existait. */ void ecrire_cle(char *fichier, mpz_t base, mpz_t cle_e) ; /* * lecture d'une clé (base et clé) dans un fichier. * Le format du fichier est simplement : * - première ligne : base de la clé en base 62 * - seconde ligne : clé en base 62 */ void lire_cle(char *fichier, mpz_t base, mpz_t cle_e) ; /* * génère une paire de clés privée / publique. * - "taille_base" est la taille, en bits, de la base (second argument) * - base est la base (c'est le produit des nombres p et q générés * temporairement dans la fonction) * - cle_d et cle_e sont la clé privée et publique */ void genere_cles(unsigned taille_base, mpz_t base, mpz_t cle_d, mpz_t cle_e) ; /* * écrit "t" limbs du nombre "n" dans le fichier. Si l'entier est trop petit, * complète par des 0. */ int mpz_fwrite(mpz_t bloc, int nb_limbs, FILE *fichier) ; /* * lit au plus "nb_limbs" limbs dans un fichier et les met dans un grand entier. */ int mpz_fread(mpz_t bloc, int nb_limbs, FILE *fichier) ; /* codage d'un fichier */ int coder_RSA(mpz_t base, mpz_t cle_e, FILE *fichier_clair, FILE *fichier_crypte); /* décodage d'un fichier */ int decoder_RSA(mpz_t base, mpz_t cle_d, FILE *fichier_crypte, FILE *fichier_clair); #endif /* _TP2_H */