Skip to content

Commit b40175b

Browse files
committed
add: Tests unitaires pour ChaCha20_Analyzer
1 parent 0f14827 commit b40175b

1 file changed

Lines changed: 66 additions & 5 deletions

File tree

tests/test_analyzers.py

Lines changed: 66 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
from unittest import TestCase, main
2+
import os
23
import sys
3-
sys.path.append('.')
4-
sys.path.append('..')
4+
import hashlib
5+
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms
6+
7+
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
8+
sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..'))
9+
510
from src.analyzers.aes_cbc_analyzer import Aes_Cbc_Analyzer
11+
from src.analyzers.chacha20_analyzer import ChaCha20_Analyzer
612

7-
class AnalyzersTester(TestCase):
813

14+
class AesCbcAnalyzerTester(TestCase):
915
"""
10-
Cette classe est principalement destinée à recueillir toutes les fonctions de test des analyseurs d'algorithme
11-
de chiffrement.
16+
Cette classe est principalement destinée à recueillir toutes les fonctions de test des analyseurs d'algorithme
17+
de chiffrement.
1218
"""
1319

1420
def setUp(self):
@@ -40,6 +46,61 @@ def test_exception_dechiffrer(self):
4046

4147
with self.assertRaises(FileNotFoundError):
4248
self.analyser.dechiffrer("no_file_dohi.txt", premiere_cle)
49+
50+
class ChaCha20AnalyzerTester(TestCase):
51+
52+
def setUp(self):
53+
# Chemins pour ChaCha20_Analyzer
54+
self.wordlist = "keys/wordlist.txt"
55+
self.analyser_chacha = ChaCha20_Analyzer()
56+
57+
# Données de test pour ChaCha20
58+
self.cle_test_chacha = hashlib.sha256(b"cle_test").digest()
59+
self.nonce_test_chacha = b"\x00" * 12
60+
self.texte_clair_test_chacha = b"Bonjour le monde, ceci est un test de chiffrement ChaCha20"
61+
self.chemin_fichier_chacha_valide = "tests/fichiers_pour_tests/chacha20_valide.enc"
62+
self.chemin_fichier_chacha_invalide = "tests/fichiers_pour_tests/chacha20_invalide.enc"
4363

64+
# Générer un fichier chiffré valide pour les tests de ChaCha20
65+
cipher_chacha = Cipher(algorithms.ChaCha20(self.cle_test_chacha, self.nonce_test_chacha), mode=None)
66+
encryptor = cipher_chacha.encryptor()
67+
texte_chiffre_test = encryptor.update(self.texte_clair_test_chacha)
68+
with open(self.chemin_fichier_chacha_valide, "wb") as f:
69+
f.write(self.nonce_test_chacha)
70+
f.write(texte_chiffre_test)
71+
72+
# Ajout des tests pour ChaCha20_Analyzer
73+
def test_chacha20_identifier_algo(self):
74+
self.assertAlmostEqual(self.analyser_chacha.identifier_algo(self.chemin_fichier_chacha_valide), 1.0, 1)
75+
self.assertAlmostEqual(self.analyser_chacha.identifier_algo(self.chemin_fichier_chacha_invalide), 0.0, 1)
76+
77+
def test_chacha20_generer_cles_candidates(self):
78+
# Comme la fonction filtrer_dictionnaire_par_indices retourne toujours une liste vide,
79+
# generer_cles_candidates doit également retourner une liste vide.
80+
self.assertEqual(self.analyser_chacha.generer_cles_candidates(self.wordlist), [])
81+
82+
def test_chacha20_dechiffrer(self):
83+
# Test de déchiffrement avec une clé et un nonce valides
84+
resultat_dechiffrement = self.analyser_chacha.dechiffrer(self.chemin_fichier_chacha_valide, self.cle_test_chacha)
85+
self.assertEqual(resultat_dechiffrement, self.texte_clair_test_chacha)
86+
87+
# Test de déchiffrement avec une clé incorrecte
88+
cle_incorrecte = hashlib.sha256(b"mauvaise_cle").digest()
89+
resultat_incorrect = self.analyser_chacha.dechiffrer(self.chemin_fichier_chacha_valide, cle_incorrecte)
90+
self.assertNotEqual(resultat_incorrect, self.texte_clair_test_chacha)
91+
92+
def test_chacha20_dechiffrer_mauvaise_cle(self):
93+
# Test de l'exception pour une clé de taille incorrecte
94+
cle_mauvaise_taille = b"a" * 16 # La bonne taille est 32
95+
with self.assertRaises(ValueError):
96+
self.analyser_chacha.dechiffrer(self.chemin_fichier_chacha_valide, cle_mauvaise_taille)
97+
98+
def test_chacha20_dechiffrer_fichier_non_existant(self):
99+
# Test de l'exception si le fichier n'existe pas
100+
cle_valide = self.cle_test_chacha
101+
with self.assertRaises(FileNotFoundError):
102+
self.analyser_chacha.dechiffrer("chemin_invalide.enc", cle_valide)
103+
104+
44105
if __name__ == '__main__':
45106
main()

0 commit comments

Comments
 (0)