diff options
Diffstat (limited to 'OpenPGP-Keychain')
-rw-r--r-- | OpenPGP-Keychain/AndroidManifest.xml | 10 | ||||
-rw-r--r-- | OpenPGP-Keychain/res/layout/key_view.xml | 110 | ||||
-rw-r--r-- | OpenPGP-Keychain/res/values/strings.xml | 7 | ||||
-rw-r--r-- | OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyDetailsActivity.java | 90 |
4 files changed, 215 insertions, 2 deletions
diff --git a/OpenPGP-Keychain/AndroidManifest.xml b/OpenPGP-Keychain/AndroidManifest.xml index ca203c1f2..36b835266 100644 --- a/OpenPGP-Keychain/AndroidManifest.xml +++ b/OpenPGP-Keychain/AndroidManifest.xml @@ -124,6 +124,16 @@ android:uiOptions="splitActionBarWhenNarrow" android:windowSoftInputMode="stateHidden" /> <activity + android:name=".ui.KeyDetailsActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_keyDetails" + android:parentActivityName=".ui.KeyListPublicActivity" + android:uiOptions="splitActionBarWhenNarrow" > + <meta-data + android:name="android.support.PARENT_ACTIVITY" + android:value=".ui.KeyListPublicActivity" /> + </activity> + <activity android:name=".ui.SelectPublicKeyActivity" android:configChanges="orientation|screenSize|keyboardHidden|keyboard" android:label="@string/title_select_recipients" diff --git a/OpenPGP-Keychain/res/layout/key_view.xml b/OpenPGP-Keychain/res/layout/key_view.xml new file mode 100644 index 000000000..5649fe338 --- /dev/null +++ b/OpenPGP-Keychain/res/layout/key_view.xml @@ -0,0 +1,110 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:layout_marginRight="?android:attr/scrollbarSize" + android:orientation="vertical" + android:paddingLeft="16dp" + android:paddingRight="16dp" > + + <TextView + style="@style/SectionHeader" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="4dp" + android:text="@string/section_master_key" /> + + <TableLayout + android:layout_width="wrap_content" + android:layout_height="0dp" + android:layout_weight="1" + android:stretchColumns="1" > + + <TableRow> + + <TextView + android:id="@+id/label_keyId" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:paddingRight="10dip" + android:text="@string/label_key_id" /> + + <TextView + android:id="@+id/fingerprint" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingRight="5dip" + android:text="0000 0000" + android:typeface="monospace" /> + </TableRow> + + <TableRow> + + <TextView + android:id="@+id/label_algorithm" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:paddingRight="10dip" + android:text="@string/label_algorithm" /> + + <TextView + android:id="@+id/algorithm" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingRight="5dip" + android:text="Name" /> + </TableRow> + + <TableRow> + + <TextView + android:id="@+id/label_creation" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:paddingRight="10dip" + android:text="@string/label_creation" /> + + <TextView + android:id="@+id/creation" + android:layout_width="fill_parent" + android:layout_height="wrap_content" /> + </TableRow> + + <TableRow> + + <TextView + android:id="@+id/label_expiry" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:paddingRight="10dip" + android:text="@string/label_expiry" /> + + <TextView + android:id="@+id/expiry" + android:layout_width="fill_parent" + android:layout_height="wrap_content" /> + </TableRow> + </TableLayout> + + <TextView + style="@style/SectionHeader" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="4dp" + android:text="@string/section_user_ids" /> + + <ListView android:id="@+id/user_ids" + android:layout_width="wrap_content" + android:layout_height="wrap_content"></ListView> + + <TextView + style="@style/SectionHeader" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="4dp" + android:text="@string/section_keys" /> + +</LinearLayout>
\ No newline at end of file diff --git a/OpenPGP-Keychain/res/values/strings.xml b/OpenPGP-Keychain/res/values/strings.xml index 63f267277..9909292d3 100644 --- a/OpenPGP-Keychain/res/values/strings.xml +++ b/OpenPGP-Keychain/res/values/strings.xml @@ -44,6 +44,7 @@ <string name="title_send_key">Export to Key Server</string> <string name="title_unknown_signature_key">Unknown Signature Key</string> <string name="title_sign_key">Sign Key</string> + <string name="title_keyDetails">Key Details</string> <string name="title_help">Help</string> <string name="title_share_by_nfc">Share key with NFC</string> @@ -53,6 +54,7 @@ <string name="section_general">General</string> <string name="section_defaults">Defaults</string> <string name="section_advanced">Advanced</string> + <string name="section_master_key">Master Key</string> <!-- button --> <string name="btn_sign_to_clipboard">Sign (Clipboard)</string> @@ -142,6 +144,8 @@ <string name="n_key_servers">%s key server(s)</string> <string name="fingerprint">Fingerprint:</string> <string name="secret_key">Secret Key:</string> + <string name="notValid">not valid</string> + <string name="secretKeyring">Secret Keyring</string> <!-- choice --> <string name="choice_none">None</string> @@ -340,5 +344,4 @@ <!-- Share --> <string name="share_qr_code_dialog_start">Go through all QR Codes using \'Next\', and scan them one by one.</string> <string name="share_qr_code_dialog_progress">QR Code %1$d of %2$d</string> - -</resources>
\ No newline at end of file +</resources> diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyDetailsActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyDetailsActivity.java new file mode 100644 index 000000000..652b8a89b --- /dev/null +++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyDetailsActivity.java @@ -0,0 +1,90 @@ +package org.sufficientlysecure.keychain.ui; + +import java.util.Date; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.spongycastle.openpgp.PGPPublicKey; +import org.sufficientlysecure.keychain.R; +import org.sufficientlysecure.keychain.pgp.PgpKeyHelper; +import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings; +import org.sufficientlysecure.keychain.provider.ProviderHelper; +import org.sufficientlysecure.keychain.util.Log; + +import android.os.Bundle; +import android.text.format.DateFormat; +import android.widget.TextView; + +import com.actionbarsherlock.app.SherlockActivity; + +public class KeyDetailsActivity extends SherlockActivity { + + private PGPPublicKey publicKey; + private TextView mAlgorithm; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + Bundle extras = getIntent().getExtras(); + setContentView(R.layout.key_view); + if (extras == null) { + return; + } + + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setHomeButtonEnabled(true); + + long key = extras.getLong("key"); + + KeyRings.buildPublicKeyRingsByMasterKeyIdUri(key + ""); + String[] projection = new String[]{""}; + + this.publicKey = ProviderHelper.getPGPPublicKeyByKeyId( + getApplicationContext(), key); + + TextView fingerprint = (TextView) this.findViewById(R.id.fingerprint); + fingerprint.setText(PgpKeyHelper.shortifyFingerprint(PgpKeyHelper.getFingerPrint(getApplicationContext(), key))); + String[] mainUserId = splitUserId(""); + + TextView expiry = (TextView) this.findViewById(R.id.expiry); + Date expiryDate = PgpKeyHelper.getExpiryDate(publicKey); + if (expiryDate == null) { + expiry.setText(""); + } else { + expiry.setText(DateFormat.getDateFormat(getApplicationContext()) + .format(expiryDate)); + } + + TextView creation = (TextView) this.findViewById(R.id.creation); + creation.setText(DateFormat.getDateFormat(getApplicationContext()) + .format(PgpKeyHelper.getCreationDate(publicKey))); + mAlgorithm = (TextView) this.findViewById(R.id.algorithm); + mAlgorithm.setText(PgpKeyHelper.getAlgorithmInfo(publicKey)); + + } + + private String[] splitUserId(String userId) { + + String[] result = new String[]{"", "", ""}; + Log.v("UserID", userId); + + Pattern withComment = Pattern.compile("^(.*) [(](.*)[)] <(.*)>$"); + Matcher matcher = withComment.matcher(userId); + if (matcher.matches()) { + result[0] = matcher.group(1); + result[1] = matcher.group(2); + result[2] = matcher.group(3); + return result; + } + + Pattern withoutComment = Pattern.compile("^(.*) <(.*)>$"); + matcher = withoutComment.matcher(userId); + if (matcher.matches()) { + result[0] = matcher.group(1); + result[1] = matcher.group(2); + return result; + } + return result; + } +} |