Fix import certificate private key encoding (#434)

When importing a certificate, the private key is passed to the
import/upload process from the UI as a str object. In Python3 this
raises two issues when processing the private key - the private key
validation fails and database insert of the certificate fails.

The fix in both cases is to correctly encode the private key as a bytes
object.
This commit is contained in:
Charles Hendrie
2016-10-08 19:04:54 -05:00
committed by kevgliss
parent 6cac2838e3
commit 3ad7a37f95
4 changed files with 47 additions and 2 deletions

View File

@ -1,5 +1,6 @@
import arrow, re
import arrow
import re
from flask import current_app
from marshmallow.exceptions import ValidationError
@ -33,7 +34,10 @@ def private_key(key):
:return: :raise ValueError:
"""
try:
serialization.load_pem_private_key(bytes(key), None, backend=default_backend())
if isinstance(key, bytes):
serialization.load_pem_private_key(key, None, backend=default_backend())
else:
serialization.load_pem_private_key(key.encode('utf-8'), None, backend=default_backend())
except Exception:
raise ValidationError('Private key presented is not valid.')