33import sys
44import hashlib
55from cryptography .hazmat .primitives .ciphers .aead import ChaCha20Poly1305
6-
6+ from cryptography .hazmat .primitives .ciphers .aead import AESGCM
7+ from pathlib import Path
78sys .path .append (os .path .join (os .path .dirname (__file__ ), '..' ))
89sys .path .append (os .path .join (os .path .dirname (__file__ ), '..' , '..' ))
910
1011from src .analyzers .aes_cbc_analyzer import Aes_Cbc_Analyzer
1112from src .analyzers .chacha20_analyzer import ChaCha20_Analyzer
13+ from src .analyzers .aes_gcm_analyzer import Aes_Gcm_Analyzer
1214
1315
1416class AesCbcAnalyzerTester (TestCase ):
@@ -104,6 +106,42 @@ def test_chacha20_dechiffrer_fichier_non_existant(self):
104106 with self .assertRaises (FileNotFoundError ):
105107 self .analyser_chacha .dechiffrer ("chemin_invalide.enc" , cle_valide )
106108
107-
109+ class AesGcmTester (TestCase ) :
110+ _wordlist = "keys/wordlist.txt"
111+ _analyzer = Aes_Gcm_Analyzer ()
112+ _fichier = "data/mission3.enc"
113+ _fichier_test = Path ('tests/fichiers_pour_tests' ) / 'aes_gcm_invalide.enc'
114+ _texte_test = b"Test effectue pour AesGcm, encore. Nous en sommes a la.fin"
115+
116+
117+ def setUp (self ):
118+ """
119+ Crée un fchier de test crypté en AESGCM pour les tests unitaires
120+ """
121+ key = AESGCM .generate_key (128 )
122+ nonce = os .urandom (12 )
123+ aad = os .urandom (16 )
124+ texte_chiffre = AESGCM (key ).encrypt (nonce , self ._texte_test , aad )
125+ with open (self ._fichier_test , '+wb' ) as f :
126+ f .write (nonce )
127+ f .write (texte_chiffre )
128+ f .close ()
129+
130+ def test_aesgcm_generer_cles_candidates (self ):
131+ #Vérifie que les clés candidates générés par cet algorithme sont une liste de bytes
132+ with self .assertRaises (ValueError ):
133+ self .assertIsInstance (self ._analyzer .generer_cles_candidates (self ._wordlist ), list [bytes ])
134+
135+ def test_aes_gcm_identifier_algo (self ):
136+ #Vérifie que la probabilité retournée pour le fichier mission3.enc est un float et élevée
137+ with self .assertRaises (ValueError ):
138+ self .assertIsInstance (self ._analyzer .identifier_algo (self ._fichier_test ), float )
139+ self .assertAlmostEqual (self ._analyzer .identifier_algo (self ._fichier_test , 0 ))
140+
141+ def test_aes_gcm_dechiffrer (self ):
142+ self .assertIsInstance (self ._analyzer .dechiffrer (self ._fichier_test ), bytes )
143+
144+
145+
108146if __name__ == '__main__' :
109147 main ()
0 commit comments