summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Lehman <dlehman@redhat.com>2008-02-01 12:35:41 -0600
committerDavid Lehman <dlehman@redhat.com>2008-02-05 10:41:23 -0600
commitba4b03ba98cf009b41c576e2b0151821288972f8 (patch)
tree21e01e81067951a28b7b895b961d5c75c18dbe13
parentcb2fef4829797c37a5784cd3f033734eb19eb128 (diff)
downloadanaconda-ba4b03ba98cf009b41c576e2b0151821288972f8.tar.gz
anaconda-ba4b03ba98cf009b41c576e2b0151821288972f8.tar.xz
anaconda-ba4b03ba98cf009b41c576e2b0151821288972f8.zip
Add dialogs to prompt for passphrases of existing encrypted partitions.
As a convenience, a checkbox allows the user to indicate that the passphrase they are entering should also be used to access all subsequently discovered encrypted devices.
-rw-r--r--text.py45
-rw-r--r--ui/lukspassphrase.glade141
2 files changed, 186 insertions, 0 deletions
diff --git a/text.py b/text.py
index 6238be458..000c4d836 100644
--- a/text.py
+++ b/text.py
@@ -269,6 +269,45 @@ class MainExceptionWindow:
self.screen.popWindow()
self.screen.refresh()
+class PassphraseEntryWindow:
+ def __init__(self, screen, device):
+ self.screen = screen
+ self.txt = _("Partition %s is encrypted. In order to "
+ "access the partition's contents during "
+ "installation you must enter the device's "
+ "passphrase below.") % (device,)
+ self.rc = None
+
+ def run(self):
+ toplevel = GridForm(self.screen, _("Passphrase"), 1, 4)
+
+ txt = TextboxReflowed(65, self.txt)
+ toplevel.add(txt, 0, 0)
+
+ passphraseentry = Entry(128, password = 1)
+ toplevel.add(passphraseentry, 0, 1, (0,0,0,1))
+
+ globalcheckbox = Checkbox(_("This is a global passphrase"))
+ toplevel.add(globalcheckbox, 0, 2)
+
+ buttons = ButtonBar(self.screen, [TEXT_OK_BUTTON, TEXT_CANCEL_BUTTON])
+ toplevel.add(buttons, 0, 3, growx=1)
+
+ rc = toplevel.run()
+ res = buttons.buttonPressed(rc)
+
+ passphrase = None
+ isglobal = False
+ if res == TEXT_OK_CHECK:
+ passphrase = passphraseentry.value().strip()
+ isglobal = globalcheckbox.selected()
+
+ self.rc = (passphrase, isglobal)
+ return self.rc
+
+ def pop(self):
+ self.screen.popWindow()
+
class InstallInterface:
def helpWindow(self, screen, key):
if key == "helponhelp":
@@ -409,6 +448,12 @@ class InstallInterface:
r.strip()
return r
+ def passphraseEntryWindow(self, device):
+ w = PassphraseEntryWindow(self.screen, device)
+ (passphrase, isglobal) = w.run()
+ w.pop()
+ return (passphrase, isglobal)
+
def getInstallKey(self, anaconda, key = ""):
ic = anaconda.id.instClass
keyname = _(ic.instkeyname)
diff --git a/ui/lukspassphrase.glade b/ui/lukspassphrase.glade
index 38631d4f5..31f08b3fd 100644
--- a/ui/lukspassphrase.glade
+++ b/ui/lukspassphrase.glade
@@ -220,4 +220,145 @@
</child>
</widget>
+<widget class="GtkDialog" id="passphraseEntryDialog">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">Passphrase</property>
+ <property name="type">GTK_WINDOW_POPUP</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="modal">True</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <property name="has_separator">True</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog2-vbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog2-action_area1">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="cancelbutton2">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-6</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="okbutton2">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-ok</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-5</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="passphraseLabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">label1</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="passphraseEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">False</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">•</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCheckButton" id="globalcheckbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">This is a global passphrase</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
</glade-interface>