b1e24664de
Introduces new configuration options PasswordPolicy and PasswordPolicyErrorMessage. PasswordPolicy takes a regular expression. When set, it only accepts passwords that match that regular expression. PasswordPolicyErrorMessage is the label displayed when the password does not meet the PasswordPolicy. In the ideal case, it should contain an explainer of the PasswordPolicy, so the user is aware of the requirements. Save with password dialog had maximum password length enforcing bits depending on the requirements of the saved file format. These are still applicable in combination with the password policy. Also introduces a visual password meter under the password entries. If the password policy isn't satisfied the password strength meter is capped at 70%. The entropy bits to password quality is taken as a linear range. Where the range of [0, 112] entropy bits is mapped to percentage [0, 100]. Entropy bits ≥ 112 are mapped to 100% since, according to KeePass' info page, ≥ 112 entropy bits correspond to a strong password: <https://keepass.info/help/kb/pw_quality_est.html> Change-Id: I2e70adacf271916661219f702dfc217292a1b59f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158453 Tested-by: Jenkins Reviewed-by: Sarper Akdemir <sarper.akdemir.extern@allotropia.de>
469 lines
27 KiB
XML
469 lines
27 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!-- Generated with glade 3.38.2 -->
|
|
<interface domain="cui">
|
|
<requires lib="gtk+" version="3.20"/>
|
|
<object class="GtkDialog" id="PasswordDialog">
|
|
<property name="can-focus">False</property>
|
|
<property name="border-width">6</property>
|
|
<property name="title" translatable="yes" context="password|PasswordDialog">Set Password</property>
|
|
<property name="modal">True</property>
|
|
<property name="window-position">center</property>
|
|
<property name="default-width">0</property>
|
|
<property name="default-height">0</property>
|
|
<property name="type-hint">normal</property>
|
|
<child internal-child="vbox">
|
|
<object class="GtkBox" id="dialog-vbox1">
|
|
<property name="can-focus">False</property>
|
|
<property name="orientation">vertical</property>
|
|
<property name="spacing">12</property>
|
|
<child internal-child="action_area">
|
|
<object class="GtkButtonBox" id="dialog-action_area1">
|
|
<property name="can-focus">False</property>
|
|
<property name="layout-style">end</property>
|
|
<child>
|
|
<object class="GtkButton" id="ok">
|
|
<property name="label" translatable="yes" context="stock">_OK</property>
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">True</property>
|
|
<property name="can-default">True</property>
|
|
<property name="has-default">True</property>
|
|
<property name="receives-default">True</property>
|
|
<property name="use-underline">True</property>
|
|
</object>
|
|
<packing>
|
|
<property name="expand">False</property>
|
|
<property name="fill">True</property>
|
|
<property name="position">0</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkButton" id="cancel">
|
|
<property name="label" translatable="yes" context="stock">_Cancel</property>
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">True</property>
|
|
<property name="receives-default">True</property>
|
|
<property name="use-underline">True</property>
|
|
</object>
|
|
<packing>
|
|
<property name="expand">False</property>
|
|
<property name="fill">True</property>
|
|
<property name="position">1</property>
|
|
</packing>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="expand">False</property>
|
|
<property name="fill">True</property>
|
|
<property name="pack-type">end</property>
|
|
<property name="position">0</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkBox" id="box1">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
<property name="hexpand">True</property>
|
|
<property name="orientation">vertical</property>
|
|
<property name="spacing">12</property>
|
|
<child>
|
|
<object class="GtkFrame" id="frame2">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
<property name="hexpand">True</property>
|
|
<property name="label-xalign">0</property>
|
|
<property name="shadow-type">none</property>
|
|
<child>
|
|
<!-- n-columns=1 n-rows=7 -->
|
|
<object class="GtkGrid" id="grid1">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
<property name="margin-start">12</property>
|
|
<property name="margin-top">6</property>
|
|
<property name="hexpand">True</property>
|
|
<property name="row-spacing">6</property>
|
|
<property name="column-spacing">12</property>
|
|
<child>
|
|
<object class="GtkLabel" id="label1">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
<property name="label" translatable="yes" context="password|label1">Note: After a password has been set, the document will only open with the password. Should you lose the password, there will be no way to recover the document. Please also note that this password is case-sensitive.</property>
|
|
<property name="wrap">True</property>
|
|
<property name="max-width-chars">60</property>
|
|
<property name="xalign">0</property>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">0</property>
|
|
<property name="top-attach">5</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkExpander" id="expander">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">True</property>
|
|
<property name="resize-toplevel">True</property>
|
|
<child>
|
|
<object class="GtkFrame" id="frame1">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
<property name="margin-top">12</property>
|
|
<property name="label-xalign">0</property>
|
|
<property name="shadow-type">none</property>
|
|
<child>
|
|
<!-- n-columns=1 n-rows=6 -->
|
|
<object class="GtkGrid" id="grid3">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
<property name="margin-start">12</property>
|
|
<property name="margin-top">6</property>
|
|
<property name="row-spacing">6</property>
|
|
<child>
|
|
<object class="GtkCheckButton" id="readonly">
|
|
<property name="label" translatable="yes" context="password|readonly">Open file read-only</property>
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">True</property>
|
|
<property name="receives-default">False</property>
|
|
<property name="use-underline">True</property>
|
|
<property name="draw-indicator">True</property>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">0</property>
|
|
<property name="top-attach">0</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkEntry" id="newpassroEntry">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">True</property>
|
|
<property name="hexpand">True</property>
|
|
<property name="visibility">False</property>
|
|
<property name="activates-default">True</property>
|
|
<property name="truncate-multiline">True</property>
|
|
<property name="input-purpose">password</property>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">0</property>
|
|
<property name="top-attach">2</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkEntry" id="confirmropassEntry">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">True</property>
|
|
<property name="hexpand">True</property>
|
|
<property name="visibility">False</property>
|
|
<property name="activates-default">True</property>
|
|
<property name="truncate-multiline">True</property>
|
|
<property name="input-purpose">password</property>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">0</property>
|
|
<property name="top-attach">5</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<!-- n-columns=2 n-rows=1 -->
|
|
<object class="GtkGrid">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
<property name="column-spacing">12</property>
|
|
<child>
|
|
<object class="GtkLabel" id="label7">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
<property name="label" translatable="yes" context="password|label7">Enter password to allow editing</property>
|
|
<property name="use-underline">True</property>
|
|
<property name="mnemonic-widget">newpassroEntry</property>
|
|
<property name="xalign">0</property>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">0</property>
|
|
<property name="top-attach">0</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkLabel" id="newpassroIndicator">
|
|
<property name="can-focus">False</property>
|
|
<property name="no-show-all">True</property>
|
|
<property name="halign">end</property>
|
|
<property name="hexpand">True</property>
|
|
<property name="wrap">True</property>
|
|
<property name="xalign">0</property>
|
|
<child internal-child="accessible">
|
|
<object class="AtkObject" id="newpassroIndicator-atkobject">
|
|
<property name="AtkObject::accessible-role">static</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">1</property>
|
|
<property name="top-attach">0</property>
|
|
</packing>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">0</property>
|
|
<property name="top-attach">1</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<!-- n-columns=2 n-rows=1 -->
|
|
<object class="GtkGrid">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
<property name="column-spacing">6</property>
|
|
<child>
|
|
<object class="GtkLabel" id="label8">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
<property name="label" translatable="yes" context="password|label8">Confirm password</property>
|
|
<property name="use-underline">True</property>
|
|
<property name="mnemonic-widget">confirmropassEntry</property>
|
|
<property name="xalign">0</property>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">0</property>
|
|
<property name="top-attach">0</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkLabel" id="confirmropassIndicator">
|
|
<property name="can-focus">False</property>
|
|
<property name="no-show-all">True</property>
|
|
<property name="halign">end</property>
|
|
<property name="hexpand">True</property>
|
|
<property name="xalign">0</property>
|
|
<child internal-child="accessible">
|
|
<object class="AtkObject" id="confirmropassIndicator-atkobject">
|
|
<property name="AtkObject::accessible-role">static</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">1</property>
|
|
<property name="top-attach">0</property>
|
|
</packing>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">0</property>
|
|
<property name="top-attach">4</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkLevelBar" id="ropasslevelbar">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">0</property>
|
|
<property name="top-attach">3</property>
|
|
</packing>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child type="label">
|
|
<object class="GtkLabel" id="label6">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
<property name="label" translatable="yes" context="password|label6">File Sharing Password</property>
|
|
<attributes>
|
|
<attribute name="weight" value="bold"/>
|
|
</attributes>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child type="label">
|
|
<object class="GtkLabel" id="label3">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
<property name="label" translatable="yes" context="password|label3">_Options</property>
|
|
<property name="use-underline">True</property>
|
|
</object>
|
|
</child>
|
|
<child internal-child="accessible">
|
|
<object class="AtkObject" id="expander-atkobject">
|
|
<property name="AtkObject::accessible-description" translatable="yes" context="password|extended_tip|expander">Click to show or hide the file sharing password options.</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">0</property>
|
|
<property name="top-attach">6</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<!-- n-columns=2 n-rows=1 -->
|
|
<object class="GtkGrid">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
<property name="column-spacing">12</property>
|
|
<child>
|
|
<object class="GtkLabel" id="label4">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
<property name="label" translatable="yes" context="password|label4">_Enter password to open</property>
|
|
<property name="use-underline">True</property>
|
|
<property name="mnemonic-widget">newpassEntry</property>
|
|
<property name="xalign">0</property>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">0</property>
|
|
<property name="top-attach">0</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkLabel" id="newpassIndicator">
|
|
<property name="can-focus">False</property>
|
|
<property name="no-show-all">True</property>
|
|
<property name="halign">end</property>
|
|
<property name="hexpand">True</property>
|
|
<property name="wrap">True</property>
|
|
<property name="xalign">0</property>
|
|
<child internal-child="accessible">
|
|
<object class="AtkObject" id="newpassIndicator-atkobject">
|
|
<property name="AtkObject::accessible-role">static</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">1</property>
|
|
<property name="top-attach">0</property>
|
|
</packing>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">0</property>
|
|
<property name="top-attach">0</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<!-- n-columns=2 n-rows=1 -->
|
|
<object class="GtkGrid">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
<property name="column-spacing">6</property>
|
|
<child>
|
|
<object class="GtkLabel" id="label5">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
<property name="label" translatable="yes" context="password|label5">Confirm password</property>
|
|
<property name="use-underline">True</property>
|
|
<property name="mnemonic-widget">confirmpassEntry</property>
|
|
<property name="xalign">0</property>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">0</property>
|
|
<property name="top-attach">0</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkLabel" id="confirmpassIndicator">
|
|
<property name="can-focus">False</property>
|
|
<property name="no-show-all">True</property>
|
|
<property name="halign">end</property>
|
|
<property name="hexpand">True</property>
|
|
<property name="xalign">0</property>
|
|
<child internal-child="accessible">
|
|
<object class="AtkObject" id="confirmpassIndicator-atkobject">
|
|
<property name="AtkObject::accessible-role">static</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">1</property>
|
|
<property name="top-attach">0</property>
|
|
</packing>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">0</property>
|
|
<property name="top-attach">3</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkEntry" id="confirmpassEntry">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">True</property>
|
|
<property name="hexpand">True</property>
|
|
<property name="visibility">False</property>
|
|
<property name="activates-default">True</property>
|
|
<property name="truncate-multiline">True</property>
|
|
<property name="input-purpose">password</property>
|
|
<child internal-child="accessible">
|
|
<object class="AtkObject" id="confirmpassEntry-atkobject">
|
|
<property name="AtkObject::accessible-description" translatable="yes" context="password|extended_tip|confirmpassEntry">Re-enter the password.</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">0</property>
|
|
<property name="top-attach">4</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkEntry" id="newpassEntry">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">True</property>
|
|
<property name="hexpand">True</property>
|
|
<property name="visibility">False</property>
|
|
<property name="activates-default">True</property>
|
|
<property name="width-chars">50</property>
|
|
<property name="truncate-multiline">True</property>
|
|
<property name="input-purpose">password</property>
|
|
<child internal-child="accessible">
|
|
<object class="AtkObject" id="newpassEntry-atkobject">
|
|
<property name="AtkObject::accessible-description" translatable="yes" context="password|extended_tip|newpassEntry">Type a password. A password is case sensitive.</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">0</property>
|
|
<property name="top-attach">1</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkLevelBar" id="passlevelbar">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
</object>
|
|
<packing>
|
|
<property name="left-attach">0</property>
|
|
<property name="top-attach">2</property>
|
|
</packing>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child type="label">
|
|
<object class="GtkLabel" id="label2">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
<property name="label" translatable="yes" context="password|label2">File Encryption Password</property>
|
|
<attributes>
|
|
<attribute name="weight" value="bold"/>
|
|
</attributes>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="expand">False</property>
|
|
<property name="fill">True</property>
|
|
<property name="position">1</property>
|
|
</packing>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="expand">False</property>
|
|
<property name="fill">True</property>
|
|
<property name="position">1</property>
|
|
</packing>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<action-widgets>
|
|
<action-widget response="-5">ok</action-widget>
|
|
<action-widget response="-6">cancel</action-widget>
|
|
</action-widgets>
|
|
</object>
|
|
<object class="GtkSizeGroup" id="sizegroup1"/>
|
|
</interface>
|