mirror of
https://github.com/django-q2/django-q2.git
synced 2026-09-26 18:58:12 +08:00
41 lines
990 B
Python
41 lines
990 B
Python
"""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)
|