utils.py 655 B

123456789101112131415161718192021222324252627282930
  1. # -*- coding: utf-8 -*-
  2. """
  3. celery.security.utils
  4. ~~~~~~~~~~~~~~~~~~~~~
  5. Utilities used by the message signing serializer.
  6. """
  7. from __future__ import absolute_import
  8. import sys
  9. from contextlib import contextmanager
  10. from celery.exceptions import SecurityError
  11. try:
  12. from OpenSSL import crypto
  13. except ImportError: # pragma: no cover
  14. crypto = None # noqa
  15. @contextmanager
  16. def reraise_errors(msg='%r', errors=None):
  17. assert crypto is not None
  18. errors = (crypto.Error, ) if errors is None else errors
  19. try:
  20. yield
  21. except errors, exc:
  22. raise SecurityError, SecurityError(msg % (exc, )), sys.exc_info()[2]