File: //lib/python3/dist-packages/django_q/signing.py
"""Package signing."""
import pickle
from django_q import core_signing as signing
from django_q.conf import Conf
BadSignature = signing.BadSignature
class SignedPackage:
"""Wraps Django's signing module with custom Pickle serializer."""
@staticmethod
def dumps(obj, compressed: bool = Conf.COMPRESSED) -> str:
return signing.dumps(
obj,
key=Conf.SECRET_KEY,
salt=Conf.PREFIX,
compress=compressed,
serializer=PickleSerializer,
)
@staticmethod
def loads(obj) -> any:
return signing.loads(
obj, key=Conf.SECRET_KEY, salt=Conf.PREFIX, serializer=PickleSerializer
)
class PickleSerializer:
"""Simple wrapper around Pickle for signing.dumps and signing.loads."""
@staticmethod
def dumps(obj) -> bytes:
return pickle.dumps(obj, protocol=pickle.HIGHEST_PROTOCOL)
@staticmethod
def loads(data) -> any:
return pickle.loads(data)