* Removing from provider imports from openedx * removed all uses of retire_dop_oauth2_models * Removing provider library from lms, common, and cms Created/copied function short_token(from django-oauth-provider) and create_hash256 to help with conversion
35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
"""
|
|
Utilities related to hashing
|
|
|
|
This duplicates functionality in django-oauth-provider,
|
|
specifically long_token and short token functions which was used to create
|
|
random tokens
|
|
"""
|
|
import hashlib
|
|
import shortuuid
|
|
from django.utils.encoding import force_bytes
|
|
from django.conf import settings
|
|
|
|
|
|
def create_hash256(max_length=None):
|
|
"""
|
|
Generate a hash that can be used as an application secret
|
|
Warning: this is not sufficiently secure for tasks like encription
|
|
Currently, this is just meant to create sufficiently random tokens
|
|
"""
|
|
hash_object = hashlib.sha256(force_bytes(shortuuid.uuid()))
|
|
hash_object.update(force_bytes(settings.SECRET_KEY))
|
|
output_hash = hash_object.hexdigest()
|
|
if max_length is not None and len(output_hash) > max_length:
|
|
return output_hash[:max_length]
|
|
return output_hash
|
|
|
|
|
|
def short_token():
|
|
"""
|
|
Generates a hash of length 32
|
|
Warning: this is not sufficiently secure for tasks like encription
|
|
Currently, this is just meant to create sufficiently random tokens
|
|
"""
|
|
return create_hash256(max_length=32)
|