from SignatureBasique import SignatureBasique from SignatureHorodatee import SignatureHorodatee from SignatureLT import SignatureLT from SignatureLTA import SignatureLTA from Errors import * from GlobalVariables import docs, docs_archived class Document: def __init__(self, nom_fichier): fichier = open(nom_fichier, "r") self.__nom_fichier = nom_fichier fichier.close() self.__signature = "No signature" docs[nom_fichier] = self def sign_Basique(self, cle_privee, certificat): if self.__signature == "No signature": info = self.get_info() self.__signature = SignatureBasique(info, cle_privee, certificat) else: print("Erreur : Document comporte déjà une signature") raise SignError("Erreur : Document comporte déjà une signature") def sign_Horodatee(self, AH): if self.__signature.get_type() == "signature basique": new_signature = SignatureHorodatee(self.__signature, AH) self.__signature = new_signature else: print("Erreur : Document ne comporte pas la signature de classe précédente (signature basique)") raise SignError("Erreur : Document ne comporte pas la signature de classe précédente (signature basique)") def sign_LT(self, check = True): if self.__signature.get_type() == "signature horodatee": new_signature = SignatureLT(self.__signature, check) self.__signature = new_signature else: print("Erreur : Document ne comporte pas la signature de classe précédente (signature horodatée)") raise SignError("Erreur : Document ne comporte pas la signature de classe précédente (signature horodatée)") def sign_LTA(self, AH, check = True): if self.__signature.get_type() == "signature LT" or self.__signature.get_type() == "signature LTA": new_signature = SignatureLTA(self.__signature, AH, check) self.__signature = new_signature else: print("Erreur : Document ne comporte pas la signature de classe précédente (signature LT ou LTA) ") raise SignError("Erreur : Document ne comporte pas la signature de classe précédente (signature LT ou LTA)") def archive_doc(self, AH): if self.__signature == "No signature": raise ArchiveError("Ce système d'archivage n'accepte que des documents signés") elif self.__signature.get_type()== "signature basique": self.sign_Horodatee(AH) self.sign_LT(check=False) self.sign_LTA(AH,check=False) elif self.__signature.get_type()== "signature horodatee": self.sign_LT() self.sign_LTA(AH,check=False) elif self.__signature.get_type()== "signature LT": self.sign_LTA(AH) elif self.__signature.get_type()== "signature LTA": self.sign_LTA(AH) nom_fichier = self.__nom_fichier docs_archived[nom_fichier] = self del docs[nom_fichier] def get_info(self): fichier = open(self.__nom_fichier, "r") content = fichier.read() fichier.close() return content def get_signature(self): return self.__signature