KMS encryption under Python 3 (#826)
This upgrades the KMS encrypt and decrypt endpoints to work under both Python 2 and 3
This commit is contained in:
parent
fd7b8e7c88
commit
53fbd7dca0
@ -3,6 +3,7 @@ from __future__ import unicode_literals
|
||||
import base64
|
||||
import json
|
||||
import re
|
||||
import six
|
||||
|
||||
from boto.exception import JSONResponseError
|
||||
from boto.kms.exceptions import AlreadyExistsException, NotFoundException
|
||||
@ -220,11 +221,14 @@ class KmsResponse(BaseResponse):
|
||||
decode it in decrypt().
|
||||
"""
|
||||
value = self.parameters.get("Plaintext")
|
||||
return json.dumps({"CiphertextBlob": base64.b64encode(value).encode("utf-8")})
|
||||
if isinstance(value, six.text_type):
|
||||
value = value.encode('utf-8')
|
||||
return json.dumps({"CiphertextBlob": base64.b64encode(value).decode("utf-8")})
|
||||
|
||||
def decrypt(self):
|
||||
value = self.parameters.get("CiphertextBlob")
|
||||
return json.dumps({"Plaintext": base64.b64decode(value).encode("utf-8")})
|
||||
print("value 3", value)
|
||||
return json.dumps({"Plaintext": base64.b64decode(value).decode("utf-8")})
|
||||
|
||||
|
||||
def _assert_valid_key_id(key_id):
|
||||
|
@ -1,6 +1,5 @@
|
||||
from __future__ import unicode_literals
|
||||
import re
|
||||
import six
|
||||
|
||||
import boto.kms
|
||||
from boto.exception import JSONResponseError
|
||||
@ -137,25 +136,22 @@ def test_disable_key_rotation():
|
||||
conn.get_key_rotation_status(key_id)['KeyRotationEnabled'].should.equal(False)
|
||||
|
||||
|
||||
# Scoping encryption/decryption to only Python 2 because our test suite
|
||||
# hardcodes a dependency on boto version 2.36.0 which is not compatible with
|
||||
# Python 3 (2.40+, however, passes these tests).
|
||||
if six.PY2:
|
||||
@mock_kms
|
||||
def test_encrypt():
|
||||
@mock_kms
|
||||
def test_encrypt():
|
||||
"""
|
||||
test_encrypt
|
||||
Using base64 encoding to merely test that the endpoint was called
|
||||
"""
|
||||
conn = boto.kms.connect_to_region("us-west-2")
|
||||
response = conn.encrypt('key_id', 'encryptme'.encode('utf-8'))
|
||||
response['CiphertextBlob'].should.equal('ZW5jcnlwdG1l')
|
||||
response['CiphertextBlob'].should.equal(b'ZW5jcnlwdG1l')
|
||||
|
||||
|
||||
@mock_kms
|
||||
def test_decrypt():
|
||||
@mock_kms
|
||||
def test_decrypt():
|
||||
conn = boto.kms.connect_to_region('us-west-2')
|
||||
response = conn.decrypt('ZW5jcnlwdG1l'.encode('utf-8'))
|
||||
response['Plaintext'].should.equal('encryptme')
|
||||
response['Plaintext'].should.equal(b'encryptme')
|
||||
|
||||
|
||||
@mock_kms
|
||||
|
Loading…
Reference in New Issue
Block a user