fix encoding of credentials

This commit is contained in:
Frédéric Péters 2020-07-28 13:40:51 +02:00
parent 94b1b91a03
commit 8812444da0
1 changed files with 5 additions and 4 deletions

View File

@ -22,7 +22,7 @@ from Crypto import Random
from django.db import models
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from django.utils.encoding import force_bytes
from django.utils.encoding import force_bytes, force_text
from jsonfield import JSONField
@ -58,10 +58,11 @@ class UserCredentials(models.Model):
password_field_name = get_password_field()
iv = Random.get_random_bytes(16)
cipher = self._get_cipher(iv)
password = self.locators.get(password_field_name, '').encode('utf-8')
password = force_bytes(self.locators.get(password_field_name, ''))
crypted = cipher.encrypt(password)
self.locators[password_field_name] = '%s$%s' % (base64.b64encode(iv),
base64.b64encode(crypted))
self.locators[password_field_name] = '%s$%s' % (
force_text(base64.b64encode(iv)),
force_text(base64.b64encode(crypted)))
return self.locators
def decrypt(self,):