diff options
Diffstat (limited to 'OpenKeychain/src/main/res')
14 files changed, 351 insertions, 22 deletions
diff --git a/OpenKeychain/src/main/res/drawable-hdpi/yubi_icon.png b/OpenKeychain/src/main/res/drawable-hdpi/yubi_icon.png Binary files differnew file mode 100644 index 000000000..428ad6fad --- /dev/null +++ b/OpenKeychain/src/main/res/drawable-hdpi/yubi_icon.png diff --git a/OpenKeychain/src/main/res/drawable-hdpi/yubi_icon_24dp.png b/OpenKeychain/src/main/res/drawable-hdpi/yubi_icon_24dp.png Binary files differnew file mode 100644 index 000000000..6fb41223d --- /dev/null +++ b/OpenKeychain/src/main/res/drawable-hdpi/yubi_icon_24dp.png diff --git a/OpenKeychain/src/main/res/drawable-mdpi/yubi_icon.png b/OpenKeychain/src/main/res/drawable-mdpi/yubi_icon.png Binary files differnew file mode 100644 index 000000000..05c21c052 --- /dev/null +++ b/OpenKeychain/src/main/res/drawable-mdpi/yubi_icon.png diff --git a/OpenKeychain/src/main/res/drawable-mdpi/yubi_icon_24dp.png b/OpenKeychain/src/main/res/drawable-mdpi/yubi_icon_24dp.png Binary files differnew file mode 100644 index 000000000..753f22607 --- /dev/null +++ b/OpenKeychain/src/main/res/drawable-mdpi/yubi_icon_24dp.png diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/yubi_icon.png b/OpenKeychain/src/main/res/drawable-xhdpi/yubi_icon.png Binary files differnew file mode 100644 index 000000000..cfa799e74 --- /dev/null +++ b/OpenKeychain/src/main/res/drawable-xhdpi/yubi_icon.png diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/yubi_icon_24dp.png b/OpenKeychain/src/main/res/drawable-xhdpi/yubi_icon_24dp.png Binary files differnew file mode 100644 index 000000000..05c21c052 --- /dev/null +++ b/OpenKeychain/src/main/res/drawable-xhdpi/yubi_icon_24dp.png diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/yubi_icon.png b/OpenKeychain/src/main/res/drawable-xxhdpi/yubi_icon.png Binary files differnew file mode 100644 index 000000000..f20f562ec --- /dev/null +++ b/OpenKeychain/src/main/res/drawable-xxhdpi/yubi_icon.png diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/yubi_icon_24dp.png b/OpenKeychain/src/main/res/drawable-xxhdpi/yubi_icon_24dp.png Binary files differnew file mode 100644 index 000000000..9bae15a02 --- /dev/null +++ b/OpenKeychain/src/main/res/drawable-xxhdpi/yubi_icon_24dp.png diff --git a/OpenKeychain/src/main/res/drawable-xxxhdpi/yubi_icon_24dp.png b/OpenKeychain/src/main/res/drawable-xxxhdpi/yubi_icon_24dp.png Binary files differnew file mode 100644 index 000000000..cfa799e74 --- /dev/null +++ b/OpenKeychain/src/main/res/drawable-xxxhdpi/yubi_icon_24dp.png diff --git a/OpenKeychain/src/main/res/layout/create_key_start_fragment.xml b/OpenKeychain/src/main/res/layout/create_key_start_fragment.xml index 79ffe58b1..2db147475 100644 --- a/OpenKeychain/src/main/res/layout/create_key_start_fragment.xml +++ b/OpenKeychain/src/main/res/layout/create_key_start_fragment.xml @@ -50,22 +50,22 @@ android:clickable="true" style="?android:attr/borderlessButtonStyle" /> - <!--<TextView--> - <!--android:id="@+id/create_key_yubikey_button"--> - <!--android:paddingLeft="16dp"--> - <!--android:paddingRight="16dp"--> - <!--android:textAppearance="?android:attr/textAppearanceMedium"--> - <!--android:layout_width="match_parent"--> - <!--android:layout_height="wrap_content"--> - <!--android:layout_weight="1"--> - <!--android:text="@string/first_time_yubikey"--> - <!--android:textAllCaps="true"--> - <!--android:minHeight="?android:attr/listPreferredItemHeight"--> - <!--android:drawableRight="@drawable/ic_chevron_right_grey_24dp"--> - <!--android:drawablePadding="8dp"--> - <!--android:gravity="right|center_vertical"--> - <!--android:clickable="true"--> - <!--style="?android:attr/borderlessButtonStyle" />--> + <TextView + android:id="@+id/create_key_yubikey_button" + android:paddingLeft="16dp" + android:paddingRight="16dp" + android:textAppearance="?android:attr/textAppearanceMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="@string/first_time_yubikey" + android:textAllCaps="true" + android:minHeight="?android:attr/listPreferredItemHeight" + android:drawableRight="@drawable/ic_chevron_right_grey_24dp" + android:drawablePadding="8dp" + android:gravity="right|center_vertical" + android:clickable="true" + style="?android:attr/borderlessButtonStyle" /> <TextView android:id="@+id/create_key_import_button" @@ -101,4 +101,4 @@ android:clickable="true" style="?android:attr/borderlessButtonStyle" /> </LinearLayout> -</RelativeLayout>
\ No newline at end of file +</RelativeLayout> diff --git a/OpenKeychain/src/main/res/layout/create_yubikey_import_fragment.xml b/OpenKeychain/src/main/res/layout/create_yubikey_import_fragment.xml new file mode 100644 index 000000000..e70188e49 --- /dev/null +++ b/OpenKeychain/src/main/res/layout/create_yubikey_import_fragment.xml @@ -0,0 +1,126 @@ +<?xml version="1.0" encoding="UTF-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:padding="4dp" + android:orientation="horizontal" + android:id="@+id/yubikey_status_layout" > + + <ImageView + android:layout_margin="14dp" + android:layout_width="32dp" + android:layout_height="32dp" + android:scaleType="centerCrop" + android:src="@drawable/yubi_icon"/> + + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:layout_weight="1" + android:orientation="vertical"> + + <TextView + android:id="@+id/yubikey_serno" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:text="Yubikey #" + /> + + <TextView + android:id="@+id/yubikey_userid" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:text="User ID" + /> + + <TextView + android:id="@+id/yubikey_status" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:text="Unknown key, hit next to import" + /> + + </LinearLayout> + + <ImageButton + android:id="@+id/button_search" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:padding="8dp" + android:src="@drawable/ic_search_grey_24dp" + android:layout_gravity="center_vertical" + android:background="?android:selectableItemBackground" /> + + </LinearLayout> + + <View + android:layout_width="match_parent" + android:layout_marginTop="4dp" + android:layout_height="1dip" + android:layout_below="@id/yubikey_status_layout" + android:background="?android:attr/listDivider" /> + + <FrameLayout + android:id="@+id/yubikey_import_fragment" + android:layout_marginTop="8dp" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:layout_below="@id/yubikey_status_layout" + android:layout_above="@id/create_key_buttons" + /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_alignParentBottom="true" + android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" + android:background="@color/holo_gray_bright" + android:id="@+id/create_key_buttons"> + + <TextView + android:id="@+id/create_key_back_button" + android:paddingLeft="16dp" + android:paddingRight="16dp" + android:textAppearance="?android:attr/textAppearanceMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="@string/btn_back" + android:textAllCaps="true" + android:minHeight="?android:attr/listPreferredItemHeight" + android:drawableLeft="@drawable/ic_chevron_left_grey_24dp" + android:drawablePadding="8dp" + android:gravity="left|center_vertical" + android:clickable="true" + style="?android:attr/borderlessButtonStyle" /> + + <TextView + android:id="@+id/create_key_next_button" + android:paddingLeft="16dp" + android:paddingRight="16dp" + android:textAppearance="?android:attr/textAppearanceMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="@string/btn_import" + android:textAllCaps="true" + android:minHeight="?android:attr/listPreferredItemHeight" + android:drawableRight="@drawable/ic_key_plus_grey600_24dp" + android:drawablePadding="8dp" + android:gravity="right|center_vertical" + android:clickable="true" + style="?android:attr/borderlessButtonStyle" /> + + </LinearLayout> + +</RelativeLayout>
\ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/create_yubikey_wait_fragment.xml b/OpenKeychain/src/main/res/layout/create_yubikey_wait_fragment.xml new file mode 100644 index 000000000..c7f9821eb --- /dev/null +++ b/OpenKeychain/src/main/res/layout/create_yubikey_wait_fragment.xml @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="UTF-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <ScrollView + android:layout_width="match_parent" + android:layout_height="match_parent" + android:fillViewport="true" + android:layout_above="@+id/create_key_buttons"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingLeft="10dp" + android:paddingRight="10dp" + android:orientation="vertical"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:layout_marginLeft="8dp" + android:textAppearance="?android:attr/textAppearanceMedium" + android:text="Hold Yubikey against device dawg" + /> + + <ImageView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:src="@drawable/yubikey_phone" /> + + </LinearLayout> + + </ScrollView> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_alignParentBottom="true" + android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" + android:background="@color/holo_gray_bright" + android:id="@+id/create_key_buttons"> + + <TextView + android:id="@+id/create_key_back_button" + android:paddingLeft="16dp" + android:paddingRight="16dp" + android:textAppearance="?android:attr/textAppearanceMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="@string/btn_back" + android:textAllCaps="true" + android:minHeight="?android:attr/listPreferredItemHeight" + android:drawableLeft="@drawable/ic_chevron_left_grey_24dp" + android:drawablePadding="8dp" + android:gravity="left|center_vertical" + android:clickable="true" + style="?android:attr/borderlessButtonStyle" /> + + <TextView + android:id="@+id/create_key_next_button" + android:paddingLeft="16dp" + android:paddingRight="16dp" + android:textAppearance="?android:attr/textAppearanceMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="@string/btn_next" + android:textAllCaps="true" + android:minHeight="?android:attr/listPreferredItemHeight" + android:drawableRight="@drawable/yubi_icon_24dp" + android:drawablePadding="16dp" + android:gravity="right|center_vertical" + android:clickable="false" + style="?android:attr/borderlessButtonStyle" /> + + </LinearLayout> + +</RelativeLayout>
\ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/view_key_yubikey.xml b/OpenKeychain/src/main/res/layout/view_key_yubikey.xml new file mode 100644 index 000000000..83272ef4e --- /dev/null +++ b/OpenKeychain/src/main/res/layout/view_key_yubikey.xml @@ -0,0 +1,103 @@ +<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:card_view="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingTop="16dp" + android:paddingBottom="16dp" + android:paddingLeft="16dp" + android:paddingRight="16dp"> + + <android.support.v7.widget.CardView + android:id="@+id/card_view" + android:layout_gravity="center" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:transitionName="card" + card_view:cardBackgroundColor="@android:color/white" + card_view:cardElevation="2dp" + card_view:cardUseCompatPadding="true" + card_view:cardCornerRadius="4dp" + android:animateLayoutChanges="true"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <TextView + style="@style/CardViewHeader" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/section_yubikey"/> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingTop="4dp" + android:paddingBottom="4dp" + android:orientation="horizontal"> + + <ImageView + android:layout_margin="14dp" + android:layout_width="32dp" + android:layout_height="32dp" + android:scaleType="centerCrop" + android:src="@drawable/yubi_icon"/> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:orientation="vertical"> + + <TextView + android:id="@+id/yubikey_serno" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:text="Yubikey #" + /> + + <TextView + android:id="@+id/yubikey_userid" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:text="User ID" + /> + + <TextView + android:id="@+id/yubikey_status" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:text="Key matches!" + /> + + </LinearLayout> + + </LinearLayout> + + <Button + android:id="@+id/button_bind" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="right|end" + android:text="@string/button_bind_key" + android:textColor="@color/link_text_material_light" + style="?android:attr/borderlessButtonStyle" + android:visibility="gone" + /> + + </LinearLayout> + + </android.support.v7.widget.CardView> + + </LinearLayout> + +</ScrollView> diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index 8c4fe2a33..f6fbd132c 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -42,6 +42,7 @@ <!-- section --> <string name="section_user_ids">"Identities"</string> + <string name="section_yubikey">"Yubikey"</string> <string name="section_linked_system_contact">"Linked System Contact"</string> <string name="section_should_you_trust">"Should you trust this key?"</string> <string name="section_proof_details">Proof verification</string> @@ -885,6 +886,7 @@ <!-- modifySecretKeyRing --> <string name="msg_mr">"Modifying keyring %s"</string> + <string name="msg_mf_divert">"Will divert to card/nfc for crypto operations"</string> <string name="msg_mf_error_divert_serial">"The serial number of a divert-to-card key must be 16 bytes! This is a programming error, please file a bug report!"</string> <string name="msg_mf_error_encode">"Encoding exception!"</string> <string name="msg_mf_error_fingerprint">"Actual key fingerprint does not match the expected one!"</string> @@ -896,9 +898,11 @@ <string name="msg_mf_error_restricted">"Tried to execute restricted operation without passphrase! This is a programming error, please file a bug report!"</string> <string name="msg_mf_error_revoked_primary">"Revoked user IDs cannot be primary!"</string> <string name="msg_mf_error_null_expiry">"Expiry time cannot be "same as before" on subkey creation. This is a programming error, please file a bug report!"</string> + <string name="msg_mf_error_noop">"Nothing to do!"</string> <string name="msg_mf_error_passphrase_master">"Fatal error decrypting master key! This is likely a programming error, please file a bug report!"</string> <string name="msg_mf_error_pgp">"Internal OpenPGP error!"</string> <string name="msg_mf_error_sig">"Signature exception!"</string> + <string name="msg_mf_error_subkey_missing">"Tried to operate on missing subkey %s!"</string> <string name="msg_mf_master">"Modifying master certifications"</string> <string name="msg_mf_notation_empty">"Adding empty notation packet"</string> <string name="msg_mf_notation_pin">"Adding PIN notation packet"</string> @@ -908,8 +912,10 @@ <string name="msg_mf_passphrase_fail">"Passphrase for subkey could not be changed! (Does it have a different one from the other keys?)"</string> <string name="msg_mf_primary_replace_old">"Replacing certificate of previous primary user ID"</string> <string name="msg_mf_primary_new">"Generating new certificate for new primary user ID"</string> + <string name="msg_mf_restricted_mode">"Changing to restricted operation mode"</string> <string name="msg_mf_subkey_change">"Modifying subkey %s"</string> - <string name="msg_mf_error_subkey_missing">"Tried to operate on missing subkey %s!"</string> + <string name="msg_mf_require_divert">"Diverting to card/nfc for crypto operations"</string> + <string name="msg_mf_require_passphrase">"Passphrase required for operations"</string> <string name="msg_mf_subkey_new">"Adding new subkey of type %s"</string> <string name="msg_mf_subkey_new_id">"New subkey ID: %s"</string> <string name="msg_mf_error_past_expiry">"Expiry date cannot be in the past!"</string> @@ -969,13 +975,11 @@ <!-- Promote key --> <string name="msg_pr">"Promoting public key to secret key"</string> - <string name="msg_pr_error_already_secret">"Key is already a secret key!"</string> <string name="msg_pr_error_key_not_found">"Key not found!"</string> <string name="msg_pr_fetching">"Fetching key to modify (%s)"</string> <string name="msg_pr_success">"Key successfully promoted"</string> <!-- Other messages used in OperationLogs --> - <string name="msg_ek_error_divert">"Editing of NFC keys is not (yet) supported!"</string> <string name="msg_ek_error_dummy">"Cannot edit keyring with stripped master key!"</string> <string name="msg_ek_error_not_found">"Key not found!"</string> @@ -1087,9 +1091,9 @@ <string name="msg_crt_error_master_not_found">"Master key not found!"</string> <string name="msg_crt_error_nothing">"No keys certified!"</string> <string name="msg_crt_error_unlock">"Error unlocking master key!"</string> - <string name="msg_crt_error_divert">"Certification with NFC is not (yet) supported!"</string> <string name="msg_crt">"Certifying keyrings"</string> <string name="msg_crt_master_fetch">"Fetching certifying master key"</string> + <string name="msg_crt_nfc_return">"Returning for NFC input"</string> <string name="msg_crt_save">"Saving certified key %s"</string> <string name="msg_crt_saving">"Saving keyrings"</string> <string name="msg_crt_unlock">"Unlocking master key"</string> @@ -1107,7 +1111,7 @@ <string name="msg_import_fetch_error_decode">"Error decoding retrieved keyring!"</string> <string name="msg_import_fetch_error">"Key could not be retrieved! (Network problems?)"</string> <string name="msg_import_fetch_keybase">"Retrieving from keybase.io: %s"</string> - <string name="msg_import_fetch_keyserver_error">"Could not retrieve key from keybase!"</string> + <string name="msg_import_fetch_keyserver_error">"Could not retrieve key from keyservers: %s"</string> <string name="msg_import_fetch_keyserver">"Retrieving from keyserver: %s"</string> <string name="msg_import_fetch_keyserver_ok">"Key retrieval successful"</string> <string name="msg_import_keyserver">"Using keyserver %s"</string> @@ -1250,5 +1254,18 @@ <string name="nfc_write_succesful">Successfully written on NFC tag</string> <string name="unlocked">Unlocked</string> <string name="nfc_settings">Settings</string> + <string name="snack_yubikey_view">"View"</string> + <string name="snack_yubikey_import">"Import"</string> + <string name="button_bind_key">"Bind Key"</string> + <string name="yubikey_serno">"Serial No: %s"</string> + <string name="yubikey_key_holder">"Key holder: "</string> + <string name="yubikey_key_holder_unset">"Key holder: <unset>"</string> + <string name="yubikey_status_bound">"Yubikey matches and is bound to key"</string> + <string name="yubikey_status_unbound">"Yubikey matches, can be bound to key"</string> + <string name="yubikey_status_partly">"Yubikey matches, partly bound to key"</string> + <string name="btn_import">"Import"</string> + <string name="snack_yubi_other">Different key stored on Yubikey!</string> + <string name="error_nfc">"NFC Error: %s"</string> + <string name="error_pin_nodefault">Default PIN was rejected!</string> </resources> |