Python django.utils.encoding.force_bytes() Examples
The following are 30
code examples of django.utils.encoding.force_bytes().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
django.utils.encoding
, or try the search function
.
Example #1
Source File: base.py From GTDWeb with GNU General Public License v2.0 | 7 votes |
def decode(self, session_data): encoded_data = base64.b64decode(force_bytes(session_data)) try: # could produce ValueError if there is no ':' hash, serialized = encoded_data.split(b':', 1) expected_hash = self._hash(serialized) if not constant_time_compare(hash.decode(), expected_hash): raise SuspiciousSession("Session data corrupted") else: return self.serializer().loads(serialized) except Exception as e: # ValueError, SuspiciousOperation, unpickling exceptions. If any of # these happen, just return an empty dictionary (an empty session). if isinstance(e, SuspiciousOperation): logger = logging.getLogger('django.security.%s' % e.__class__.__name__) logger.warning(force_text(e)) return {}
Example #2
Source File: base.py From GTDWeb with GNU General Public License v2.0 | 6 votes |
def _check_query(self, query, country=False, city=False, city_or_country=False): "Helper routine for checking the query and database availability." # Making sure a string was passed in for the query. if not isinstance(query, six.string_types): raise TypeError('GeoIP query must be a string, not type %s' % type(query).__name__) # Extra checks for the existence of country and city databases. if city_or_country and not (self._country or self._city): raise GeoIPException('Invalid GeoIP country and city data files.') elif country and not self._country: raise GeoIPException('Invalid GeoIP country data file: %s' % self._country_file) elif city and not self._city: raise GeoIPException('Invalid GeoIP city data file: %s' % self._city_file) # Return the query string back to the caller. GeoIP only takes bytestrings. return force_bytes(query)
Example #3
Source File: modwsgi.py From GTDWeb with GNU General Public License v2.0 | 6 votes |
def groups_for_user(environ, username): """ Authorizes a user based on groups """ UserModel = auth.get_user_model() db.reset_queries() try: try: user = UserModel._default_manager.get_by_natural_key(username) except UserModel.DoesNotExist: return [] if not user.is_active: return [] return [force_bytes(group.name) for group in user.groups.all()] finally: db.close_old_connections()
Example #4
Source File: crypto.py From django-cryptography with BSD 3-Clause "New" or "Revised" License | 6 votes |
def pbkdf2(password, salt, iterations, dklen=0, digest=None): """ Implements PBKDF2 with the same API as Django's existing implementation, using cryptography. :type password: any :type salt: any :type iterations: int :type dklen: int :type digest: cryptography.hazmat.primitives.hashes.HashAlgorithm """ if digest is None: digest = settings.CRYPTOGRAPHY_DIGEST if not dklen: dklen = digest.digest_size password = force_bytes(password) salt = force_bytes(salt) kdf = PBKDF2HMAC( algorithm=digest, length=dklen, salt=salt, iterations=iterations, backend=settings.CRYPTOGRAPHY_BACKEND) return kdf.derive(password)
Example #5
Source File: password_reset_serializer.py From kobo-predict with BSD 2-Clause "Simplified" License | 6 votes |
def get_password_reset_email(user, reset_url, subject_template_name='registration/password_reset_subject.txt', # noqa email_template_name='api_password_reset_email.html', # noqa token_generator=default_token_generator): """Creates the subject and email body for password reset email.""" result = urlparse(reset_url) site_name = domain = result.hostname c = { 'email': user.email, 'domain': domain, 'path': result.path, 'site_name': site_name, 'uid': urlsafe_base64_encode(force_bytes(user.pk)), 'username': user.username, 'encoded_username': urlsafe_base64_encode(user.username), 'token': token_generator.make_token(user), 'protocol': result.scheme if result.scheme != '' else 'http', } subject = loader.render_to_string(subject_template_name, c) # Email subject *must not* contain newlines subject = ''.join(subject.splitlines()) email = loader.render_to_string(email_template_name, c) return subject, email
Example #6
Source File: test_connect_viewset.py From kobo-predict with BSD 2-Clause "Simplified" License | 6 votes |
def test_reset_user_password(self): # set user.last_login, ensures we get same/valid token # https://code.djangoproject.com/ticket/10265 self.user.last_login = now() self.user.save() token = default_token_generator.make_token(self.user) new_password = "bobbob1" data = {'token': token, 'new_password': new_password} # missing uid, should fail request = self.factory.post('/', data=data) response = self.view(request) self.assertEqual(response.status_code, 400) data['uid'] = urlsafe_base64_encode(force_bytes(self.user.pk)) # with uid, should be successful request = self.factory.post('/', data=data) response = self.view(request) self.assertEqual(response.status_code, 204) user = User.objects.get(email=self.user.email) self.assertTrue(user.check_password(new_password)) request = self.factory.post('/', data=data) response = self.view(request) self.assertEqual(response.status_code, 400)
Example #7
Source File: client.py From GTDWeb with GNU General Public License v2.0 | 6 votes |
def encode_file(boundary, key, file): to_bytes = lambda s: force_bytes(s, settings.DEFAULT_CHARSET) filename = os.path.basename(file.name) if hasattr(file, 'name') else '' if hasattr(file, 'content_type'): content_type = file.content_type elif filename: content_type = mimetypes.guess_type(filename)[0] else: content_type = None if content_type is None: content_type = 'application/octet-stream' if not filename: filename = key return [ to_bytes('--%s' % boundary), to_bytes('Content-Disposition: form-data; name="%s"; filename="%s"' % (key, filename)), to_bytes('Content-Type: %s' % content_type), b'', to_bytes(file.read()) ]
Example #8
Source File: hashers.py From GTDWeb with GNU General Public License v2.0 | 6 votes |
def verify(self, password, encoded): algorithm, data = encoded.split('$', 1) assert algorithm == self.algorithm bcrypt = self._load_library() # Hash the password prior to using bcrypt to prevent password truncation # See: https://code.djangoproject.com/ticket/20138 if self.digest is not None: # We use binascii.hexlify here because Python3 decided that a hex encoded # bytestring is somehow a unicode. password = binascii.hexlify(self.digest(force_bytes(password)).digest()) else: password = force_bytes(password) # Ensure that our data is a bytestring data = force_bytes(data) # force_bytes() necessary for py-bcrypt compatibility hashpw = force_bytes(bcrypt.hashpw(password, data)) return constant_time_compare(data, hashpw)
Example #9
Source File: crypto.py From bioforum with MIT License | 6 votes |
def salted_hmac(key_salt, value, secret=None): """ Return the HMAC-SHA1 of 'value', using a key generated from key_salt and a secret (which defaults to settings.SECRET_KEY). A different key_salt should be passed in for every application of HMAC. """ if secret is None: secret = settings.SECRET_KEY key_salt = force_bytes(key_salt) secret = force_bytes(secret) # We need to generate a derived key from our base key. We can do this by # passing the key_salt and our base key through a pseudo-random function and # SHA1 works nicely. key = hashlib.sha1(key_salt + secret).digest() # If len(key_salt + secret) > sha_constructor().block_size, the above # line is redundant and could be replaced by key = key_salt + secret, since # the hmac module does the same thing for keys longer than the block size. # However, we need to ensure that we *always* do this. return hmac.new(key, msg=force_bytes(value), digestmod=hashlib.sha1)
Example #10
Source File: signing.py From django-cryptography with BSD 3-Clause "New" or "Revised" License | 6 votes |
def loads(s, key=None, salt='django.core.signing', serializer=JSONSerializer, max_age=None): """ Reverse of dumps(), raises BadSignature if signature fails. The serializer is expected to accept a bytestring. """ # TimestampSigner.unsign always returns unicode but base64 and zlib # compression operate on bytes. base64d = force_bytes( TimestampSigner(key, salt=salt).unsign(s, max_age=max_age)) decompress = False if base64d[:1] == b'.': # It's compressed; uncompress it first base64d = base64d[1:] decompress = True data = b64_decode(base64d) if decompress: data = zlib.decompress(data) return serializer().loads(data)
Example #11
Source File: crypto.py From GTDWeb with GNU General Public License v2.0 | 6 votes |
def pbkdf2(password, salt, iterations, dklen=0, digest=None): """ Implements PBKDF2 with the same API as Django's existing implementation, using the stdlib. This is used in Python 2.7.8+ and 3.4+. """ if digest is None: digest = hashlib.sha256 if not dklen: dklen = None password = force_bytes(password) salt = force_bytes(salt) return hashlib.pbkdf2_hmac( digest().name, password, salt, iterations, dklen)
Example #12
Source File: crypto.py From bioforum with MIT License | 6 votes |
def pbkdf2(password, salt, iterations, dklen=0, digest=None): """Return the hash of password using pbkdf2.""" if digest is None: digest = hashlib.sha256 if not dklen: dklen = None password = force_bytes(password) salt = force_bytes(salt) return hashlib.pbkdf2_hmac(digest().name, password, salt, iterations, dklen)
Example #13
Source File: crypto.py From GTDWeb with GNU General Public License v2.0 | 6 votes |
def salted_hmac(key_salt, value, secret=None): """ Returns the HMAC-SHA1 of 'value', using a key generated from key_salt and a secret (which defaults to settings.SECRET_KEY). A different key_salt should be passed in for every application of HMAC. """ if secret is None: secret = settings.SECRET_KEY key_salt = force_bytes(key_salt) secret = force_bytes(secret) # We need to generate a derived key from our base key. We can do this by # passing the key_salt and our base key through a pseudo-random function and # SHA1 works nicely. key = hashlib.sha1(key_salt + secret).digest() # If len(key_salt + secret) > sha_constructor().block_size, the above # line is redundant and could be replaced by key = key_salt + secret, since # the hmac module does the same thing for keys longer than the block size. # However, we need to ensure that we *always* do this. return hmac.new(key, msg=force_bytes(value), digestmod=hashlib.sha1)
Example #14
Source File: hashers.py From GTDWeb with GNU General Public License v2.0 | 6 votes |
def encode(self, password, salt): bcrypt = self._load_library() # Need to reevaluate the force_bytes call once bcrypt is supported on # Python 3 # Hash the password prior to using bcrypt to prevent password truncation # See: https://code.djangoproject.com/ticket/20138 if self.digest is not None: # We use binascii.hexlify here because Python3 decided that a hex encoded # bytestring is somehow a unicode. password = binascii.hexlify(self.digest(force_bytes(password)).digest()) else: password = force_bytes(password) data = bcrypt.hashpw(password, salt) return "%s$%s" % (self.algorithm, force_text(data))
Example #15
Source File: signing.py From GTDWeb with GNU General Public License v2.0 | 6 votes |
def loads(s, key=None, salt='django.core.signing', serializer=JSONSerializer, max_age=None): """ Reverse of dumps(), raises BadSignature if signature fails. The serializer is expected to accept a bytestring. """ # TimestampSigner.unsign always returns unicode but base64 and zlib # compression operate on bytes. base64d = force_bytes(TimestampSigner(key, salt=salt).unsign(s, max_age=max_age)) decompress = False if base64d[:1] == b'.': # It's compressed; uncompress it first base64d = base64d[1:] decompress = True data = b64_decode(base64d) if decompress: data = zlib.decompress(data) return serializer().loads(data)
Example #16
Source File: response.py From bioforum with MIT License | 6 votes |
def make_bytes(self, value): """Turn a value into a bytestring encoded in the output charset.""" # Per PEP 3333, this response body must be bytes. To avoid returning # an instance of a subclass, this function returns `bytes(value)`. # This doesn't make a copy when `value` already contains bytes. # Handle string types -- we can't rely on force_bytes here because: # - Python attempts str conversion first # - when self._charset != 'utf-8' it re-encodes the content if isinstance(value, bytes): return bytes(value) if isinstance(value, str): return bytes(value.encode(self.charset)) # Handle non-string types (#16494) return force_bytes(value, self.charset) # These methods partially implement the file-like object interface. # See https://docs.python.org/3/library/io.html#io.IOBase # The WSGI server must call this method upon completion of the request. # See http://blog.dscpl.com.au/2012/10/obligations-for-calling-close-on.html
Example #17
Source File: utils.py From django-oidc-rp with MIT License | 6 votes |
def validate_and_return_id_token(jws, nonce=None, validate_nonce=True): """ Validates the id_token according to the OpenID Connect specification. """ shared_key = oidc_rp_settings.CLIENT_SECRET \ if oidc_rp_settings.PROVIDER_SIGNATURE_ALG == 'HS256' \ else oidc_rp_settings.PROVIDER_SIGNATURE_KEY # RS256 try: # Decodes the JSON Web Token and raise an error if the signature is invalid. id_token = JWS().verify_compact(force_bytes(jws), _get_jwks_keys(shared_key)) except JWKESTException: return # Validates the claims embedded in the id_token. _validate_claims(id_token, nonce=nonce, validate_nonce=validate_nonce) return id_token
Example #18
Source File: http.py From bioforum with MIT License | 5 votes |
def urlsafe_base64_decode(s): """ Decode a base64 encoded string. Add back any trailing equal signs that might have been stripped. """ s = force_bytes(s) try: return base64.urlsafe_b64decode(s.ljust(len(s) + len(s) % 4, b'=')) except (LookupError, BinasciiError) as e: raise ValueError(e)
Example #19
Source File: signing.py From django-cryptography with BSD 3-Clause "New" or "Revised" License | 5 votes |
def signature(self, value): """ :type value: any :rtype: HMAC """ h = HMAC(self.key, self.digest, backend=settings.CRYPTOGRAPHY_BACKEND) h.update(force_bytes(value)) return h
Example #20
Source File: cache.py From bioforum with MIT License | 5 votes |
def _generate_cache_key(request, method, headerlist, key_prefix): """Return a cache key from the headers given in the header list.""" ctx = hashlib.md5() for header in headerlist: value = request.META.get(header) if value is not None: ctx.update(force_bytes(value)) url = hashlib.md5(force_bytes(iri_to_uri(request.build_absolute_uri()))) cache_key = 'views.decorators.cache.cache_page.%s.%s.%s.%s' % ( key_prefix, method, url.hexdigest(), ctx.hexdigest()) return _i18n_cache_key_suffix(request, cache_key)
Example #21
Source File: crypto.py From django-cryptography with BSD 3-Clause "New" or "Revised" License | 5 votes |
def constant_time_compare(val1, val2): """ :type val1: any :type val2: any :rtype: bool """ return constant_time.bytes_eq(force_bytes(val1), force_bytes(val2))
Example #22
Source File: fields.py From django-cryptography with BSD 3-Clause "New" or "Revised" License | 5 votes |
def from_db_value(self, value, *args, **kwargs): if value is not None: return self._load(force_bytes(value)) return value
Example #23
Source File: fields.py From django-cryptography with BSD 3-Clause "New" or "Revised" License | 5 votes |
def to_python(self, value): # If it's a string, it should be base64-encoded data if isinstance(value, str): return self._load(b64decode(force_bytes(value))) return value
Example #24
Source File: fields.py From django-cryptography with BSD 3-Clause "New" or "Revised" License | 5 votes |
def from_db_value(self, value, *args, **kwargs): if value is not None: return self._load(force_bytes(value)) return value
Example #25
Source File: conf.py From django-cryptography with BSD 3-Clause "New" or "Revised" License | 5 votes |
def configure(self): backend = self.configured_data['BACKEND'] digest = self.configured_data['DIGEST'] salt = self.configured_data['SALT'] # Key Derivation Function kdf = pbkdf2.PBKDF2HMAC( algorithm=digest, length=digest.digest_size, salt=salt, iterations=30000, backend=backend, ) self.configured_data['KEY'] = kdf.derive( force_bytes(self.configured_data['KEY'] or settings.SECRET_KEY)) return self.configured_data
Example #26
Source File: conf.py From django-cryptography with BSD 3-Clause "New" or "Revised" License | 5 votes |
def configure_salt(self, value): return force_bytes(value)
Example #27
Source File: db.py From GTDWeb with GNU General Public License v2.0 | 5 votes |
def get(self, key, default=None, version=None): key = self.make_key(key, version=version) self.validate_key(key) db = router.db_for_read(self.cache_model_class) table = connections[db].ops.quote_name(self._table) with connections[db].cursor() as cursor: cursor.execute("SELECT cache_key, value, expires FROM %s " "WHERE cache_key = %%s" % table, [key]) row = cursor.fetchone() if row is None: return default now = timezone.now() expires = row[2] if connections[db].features.needs_datetime_string_cast and not isinstance(expires, datetime): # Note: typecasting is needed by some 3rd party database backends. # All core backends work without typecasting, so be careful about # changes here - test suite will NOT pick regressions here. expires = typecast_timestamp(str(expires)) if expires < now: db = router.db_for_write(self.cache_model_class) with connections[db].cursor() as cursor: cursor.execute("DELETE FROM %s " "WHERE cache_key = %%s" % table, [key]) return default value = connections[db].ops.process_clob(row[1]) return pickle.loads(base64.b64decode(force_bytes(value)))
Example #28
Source File: filebased.py From GTDWeb with GNU General Public License v2.0 | 5 votes |
def _key_to_file(self, key, version=None): """ Convert a key into a cache file path. Basically this is the root cache path joined with the md5sum of the key and a suffix. """ key = self.make_key(key, version=version) self.validate_key(key) return os.path.join(self._dir, ''.join( [hashlib.md5(force_bytes(key)).hexdigest(), self.cache_suffix]))
Example #29
Source File: signing.py From GTDWeb with GNU General Public License v2.0 | 5 votes |
def get_cookie_signer(salt='django.core.signing.get_cookie_signer'): Signer = import_string(settings.SIGNING_BACKEND) key = force_bytes(settings.SECRET_KEY) return Signer(b'django.http.cookies' + key, salt=salt)
Example #30
Source File: utils.py From GTDWeb with GNU General Public License v2.0 | 5 votes |
def parse_rst(text, default_reference_context, thing_being_parsed=None): """ Convert the string from reST to an XHTML fragment. """ overrides = { 'doctitle_xform': True, 'inital_header_level': 3, "default_reference_context": default_reference_context, "link_base": reverse('django-admindocs-docroot').rstrip('/'), 'raw_enabled': False, 'file_insertion_enabled': False, } if thing_being_parsed: thing_being_parsed = force_bytes("<%s>" % thing_being_parsed) # Wrap ``text`` in some reST that sets the default role to ``cmsreference``, # then restores it. source = """ .. default-role:: cmsreference %s .. default-role:: """ parts = docutils.core.publish_parts(source % text, source_path=thing_being_parsed, destination_path=None, writer_name='html', settings_overrides=overrides) return mark_safe(parts['fragment']) # # reST roles #