summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/check-qemu-install82
1 files changed, 82 insertions, 0 deletions
diff --git a/scripts/check-qemu-install b/scripts/check-qemu-install
index 53e1c74d..61880a23 100755
--- a/scripts/check-qemu-install
+++ b/scripts/check-qemu-install
@@ -754,6 +754,88 @@ try:
verify_config()
+ # Shutdown VM
+ shutdownVM(c, log, 'Shutdown VM for non-TPM backed test')
+
+ # Clear swtpm
+ from glob import glob
+ for f in glob(f'{tpm_folder}/*'):
+ os.remove(f)
+
+ # Shutdown kills swtpm
+ tpm_process.join()
+ tpm_process.close()
+ tpm_process = None
+
+ # Booting back into VM
+ log.info('Booting system without TPM')
+ cmd = get_qemu_cmd(qemu_name, args.uefi, args.disk, raid=diskname_raid, tpm=False, vnc_enabled=args.vnc)
+ log.debug(f'Executing command: {cmd}')
+ c = pexpect.spawn(cmd, logfile=stl)
+
+ try:
+ c.expect('The highlighted entry will be executed automatically in', timeout=10)
+ c.sendline('')
+ except pexpect.TIMEOUT:
+ log.warning('Did not find GRUB countdown window, ignoring')
+
+ loginVM(c, log)
+
+ # New recovery key
+ test_recovery_key = ''.join(choices(string.ascii_uppercase + string.digits, k=32))
+
+ log.info('Encrypting config')
+ c.sendline('encryption enable')
+ c.expect('Are you sure you want to proceed\?.*')
+ c.sendline('y')
+ c.expect('Enter key: ')
+ c.sendline(test_recovery_key)
+ c.expect('Enter size of encrypted config partition.*', timeout=30)
+ c.sendline('32')
+ c.expect('Encrypted config volume has been enabled', timeout=tpm_timeout)
+ c.expect('Backup the key in a safe place!')
+ c.expect(f'Key: {test_recovery_key}')
+ c.expect(op_mode_prompt)
+
+ verify_mount()
+
+ shutdownVM(c, log, 'Shutdown VM for non-TPM config load')
+
+ # Booting back into VM
+ log.info('Booting system without TPM')
+ cmd = get_qemu_cmd(qemu_name, args.uefi, args.disk, raid=diskname_raid, tpm=False, vnc_enabled=args.vnc)
+ log.debug(f'Executing command: {cmd}')
+ c = pexpect.spawn(cmd, logfile=stl)
+
+ try:
+ c.expect('The highlighted entry will be executed automatically in', timeout=10)
+ c.sendline('')
+ except pexpect.TIMEOUT:
+ log.warning('Did not find GRUB countdown window, ignoring')
+
+ c.expect('.*Encrypted config volume has not been mounted', timeout=120)
+
+ loginVM(c, log)
+
+ # Test loading config with recovery key
+ c.sendline('encryption load')
+ c.expect('Enter key: ')
+ c.sendline(test_recovery_key)
+ c.expect('Encrypted config volume has been mounted', timeout=120)
+ c.expect(op_mode_prompt)
+
+ verify_mount()
+
+ log.info('Loading encrypted config.boot')
+ c.sendline('configure')
+ c.expect(cfg_mode_prompt)
+ c.sendline('load /config/config.boot')
+ c.expect(cfg_mode_prompt)
+ c.sendline('commit')
+ c.expect(cfg_mode_prompt)
+ c.sendline('exit')
+ c.expect(op_mode_prompt)
+
elif args.raid:
# Verify RAID subsystem - by deleting a disk and re-create the array
# from scratch