Skip to content
Extraits de code Groupes Projets
Document.py 3,22 ko
Newer Older
  • Learn to ignore specific revisions
  • 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