コード例 #1
0
    def sign_document_version(self,
                              document_version,
                              key,
                              passphrase=None,
                              user=None):
        temporary_file_object, temporary_filename = mkstemp()

        try:
            with document_version.open() as file_object:
                key.sign_file(binary=True,
                              file_object=file_object,
                              output=temporary_filename,
                              passphrase=passphrase)
        except Exception:
            raise
        else:
            # The result of key.sign_file does not contain the signtarure ID.
            # Verify the signed file to obtain the signature ID.
            with open(temporary_filename, mode='rb') as file_object:
                result = Key.objects.verify_file(file_object=file_object)

            with open(temporary_filename, mode='rb') as file_object:
                document_version.document.new_version(file_object=file_object,
                                                      _user=user)
            return self.get(signature_id=result.signature_id)
        finally:
            os.unlink(temporary_filename)
コード例 #2
0
    def sign_document_version(self,
                              document_version,
                              key,
                              passphrase=None,
                              user=None):
        temporary_file_object, temporary_filename = mkstemp()

        try:
            with document_version.open() as file_object:
                key.sign_file(binary=True,
                              file_object=file_object,
                              output=temporary_filename,
                              passphrase=passphrase)
        except Exception:
            raise
        else:
            with open(temporary_filename, mode='rb') as file_object:
                new_version = document_version.document.new_version(
                    file_object=file_object, _user=user)
            # This is a potential race condition but we have not way
            # to access the final signature at this point.
            signature = self.filter(document_version=new_version).first()
            return signature or self.none()
        finally:
            os.unlink(temporary_filename)
コード例 #3
0
    def sign_document_version(self,
                              document_version,
                              key,
                              passphrase=None,
                              user=None):
        temporary_file_object, temporary_filename = mkstemp()

        try:
            with document_version.open() as file_object:
                key.sign_file(binary=True,
                              detached=True,
                              file_object=file_object,
                              output=temporary_filename,
                              passphrase=passphrase)
        except Exception:
            raise
        else:
            return self.create(document_version=document_version,
                               signature_file=File(temporary_file_object))
        finally:
            os.unlink(temporary_filename)
コード例 #4
0
    def sign_document_version(self,
                              document_version,
                              key,
                              passphrase=None,
                              user=None):
        temporary_file_object, temporary_filename = mkstemp()

        try:
            with document_version.open() as file_object:
                key.sign_file(binary=True,
                              file_object=file_object,
                              output=temporary_filename,
                              passphrase=passphrase)
        except Exception:
            raise
        else:
            with open(temporary_filename, mode='rb') as file_object:
                new_version = document_version.document.new_version(
                    file_object=file_object, _user=user)
        finally:
            os.unlink(temporary_filename)

        return new_version