Merge "Fix decoding of encryption key passed to dmcrypt"

This commit is contained in:
Jenkins 2017-05-19 15:49:33 +00:00 committed by Gerrit Code Review
commit f60d848e09
2 changed files with 6 additions and 4 deletions

View File

@ -13,6 +13,7 @@
# License for the specific language governing permissions and limitations
# under the License.
import binascii
import mock
from oslo_concurrency import processutils
@ -29,8 +30,8 @@ class LibvirtDmcryptTestCase(test.NoDBTestCase):
self.NAME = 'disk'
self.TARGET = dmcrypt.volume_name(self.NAME)
self.PATH = '/dev/nova-lvm/instance_disk'
self.KEY = range(0, self.KEY_SIZE)
self.KEY_STR = ''.join(["%02x" % x for x in range(0, self.KEY_SIZE)])
self.KEY = bytes(bytearray(x for x in range(0, self.KEY_SIZE)))
self.KEY_STR = binascii.hexlify(self.KEY).decode('utf-8')
@mock.patch('nova.utils.execute')
def test_create_volume(self, mock_execute):

View File

@ -13,6 +13,7 @@
# License for the specific language governing permissions and limitations
# under the License.
import binascii
import os
from oslo_concurrency import processutils
@ -52,7 +53,7 @@ def create_volume(target, device, cipher, key_size, key):
:param device: underlying block device
:param cipher: encryption cipher string digestible by cryptsetup
:param key_size: encryption key size
:param key: encryption key as an array of unsigned bytes
:param key: encoded encryption key bytestring
"""
cmd = ('cryptsetup',
'create',
@ -61,7 +62,7 @@ def create_volume(target, device, cipher, key_size, key):
'--cipher=' + cipher,
'--key-size=' + str(key_size),
'--key-file=-')
key = ''.join(map(lambda byte: "%02x" % byte, key))
key = binascii.hexlify(key).decode('utf-8')
try:
utils.execute(*cmd, process_input=key, run_as_root=True)
except processutils.ProcessExecutionError as e: