VirtualBox

Changeset 54591 in vbox for trunk/src/VBox/Frontends


Ignore:
Timestamp:
Mar 2, 2015 7:55:29 PM (10 years ago)
Author:
vboxsync
Message:

Add support to supply passwords for disk encryption while the VM is running

Location:
trunk/src/VBox/Frontends/VBoxManage
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp

    r54525 r54591  
    16791679                break;
    16801680            }
    1681 
     1681        }
     1682        else if (!strcmp(a->argv[1], "addencpassword"))
     1683        {
     1684            if (   a->argc != 4
     1685                && a->argc != 6)
     1686            {
     1687                errorSyntax(USAGE_CONTROLVM, "Incorrect number of parameters");
     1688                break;
     1689            }
     1690
     1691            if (   strcmp(a->argv[4], "--removeonsuspend")
     1692                || (   strcmp(a->argv[5], "yes")
     1693                    && strcmp(a->argv[5], "no")))
     1694            {
     1695                errorSyntax(USAGE_CONTROLVM, "Invalid parameters");
     1696                break;
     1697            }
     1698
     1699            BOOL fRemoveOnSuspend = FALSE;
     1700            Bstr bstrPwId(a->argv[2]);
     1701            Bstr bstrPw(a->argv[3]);
     1702            if (   a->argc == 6
     1703                && !strcmp(a->argv[5], "yes"))
     1704                fRemoveOnSuspend = TRUE;
     1705
     1706            CHECK_ERROR_BREAK(console, AddDiskEncryptionPassword(bstrPwId.raw(), bstrPw.raw(), fRemoveOnSuspend));
     1707        }
     1708        else if (!strcmp(a->argv[1], "removeencpassword"))
     1709        {
     1710            if (a->argc != 3)
     1711            {
     1712                errorSyntax(USAGE_CONTROLVM, "Incorrect number of parameters");
     1713                break;
     1714            }
     1715            Bstr bstrPwId(a->argv[2]);
     1716            CHECK_ERROR_BREAK(console, RemoveDiskEncryptionPassword(bstrPwId.raw()));
     1717        }
     1718        else if (!strcmp(a->argv[1], "removeallencpasswords"))
     1719        {
     1720            CHECK_ERROR_BREAK(console, ClearAllDiskEncryptionPasswords());
    16821721        }
    16831722        else
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageDisk.cpp

    r54500 r54591  
    16411641static const RTGETOPTDEF g_aEncryptMediumOptions[] =
    16421642{
    1643     { "--newpassword",  'n', RTGETOPT_REQ_STRING },
    1644     { "--oldpassword",  'o', RTGETOPT_REQ_STRING },
    1645     { "--cipher",       'c', RTGETOPT_REQ_STRING }
     1643    { "--newpassword",   'n', RTGETOPT_REQ_STRING },
     1644    { "--oldpassword",   'o', RTGETOPT_REQ_STRING },
     1645    { "--cipher",        'c', RTGETOPT_REQ_STRING },
     1646    { "--newpasswordid", 'i', RTGETOPT_REQ_STRING }
    16461647};
    16471648
     
    16551656    const char *pszCipher = NULL;
    16561657    const char *pszFilenameOrUuid = NULL;
     1658    const char *pszNewPasswordId = NULL;
    16571659
    16581660    int c;
     
    16761678            case 'c':   // --cipher
    16771679                pszCipher = ValueUnion.psz;
     1680                break;
     1681
     1682            case 'i':   // --newpasswordid
     1683                pszNewPasswordId = ValueUnion.psz;
    16781684                break;
    16791685
     
    17081714        return errorSyntax(USAGE_ENCRYPTMEDIUM, "No password specified");
    17091715
     1716    if (   (pszPasswordNew && !pszNewPasswordId)
     1717        || (!pszPasswordNew && pszNewPasswordId))
     1718        return errorSyntax(USAGE_ENCRYPTMEDIUM, "A new password must always have a valid identifier set at the same time");
     1719
    17101720    /* Always open the medium if necessary, there is no other way. */
    17111721    rc = openMedium(a, pszFilenameOrUuid, DeviceType_HardDisk,
     
    17221732    ComPtr<IProgress> progress;
    17231733    CHECK_ERROR(hardDisk, ChangeEncryption(Bstr(pszPasswordNew).raw(), Bstr(pszPasswordOld).raw(),
    1724                                            Bstr(pszCipher).raw(), progress.asOutParam()));
     1734                                           Bstr(pszCipher).raw(), Bstr(pszNewPasswordId).raw(),
     1735                                           progress.asOutParam()));
    17251736    if (SUCCEEDED(rc))
    17261737        rc = showProgress(progress);
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp

    r54487 r54591  
    495495                     "                            cpuexecutioncap <1-100>\n"
    496496                     "                            webcam <attach [path [settings]]> | <detach [path]> | <list>\n"
     497                     "                            addencpassword <id>\n"
     498                     "                                           <password>\n"
     499                     "                                           [--removeonsuspend <yes|no>]\n"
     500                     "                            removeencpassword <id>\n"
     501                     "                            removeallencpasswords\n"
    497502                     "\n", SEP);
    498503    }
     
    637642                     "                            [--oldpassword <old password>]\n"
    638643                     "                            [--cipher <cipher identifier>]\n"
     644                     "                            [--newpasswordid <password identifier>]\n"
    639645                     "\n", SEP);
    640646
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette