diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java index 87a50af2e..7a90c5609 100644 --- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java +++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java @@ -28,12 +28,9 @@ import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.GregorianCalendar; -import java.util.List; -import org.spongycastle.openpgp.PGPKeyRing; import org.spongycastle.openpgp.PGPPublicKeyRing; import org.spongycastle.openpgp.PGPSecretKey; -import org.spongycastle.openpgp.PGPSecretKeyRing; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.Id; import org.sufficientlysecure.keychain.R; @@ -48,10 +45,8 @@ import org.sufficientlysecure.keychain.pgp.PgpOperation; import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException; import org.sufficientlysecure.keychain.provider.KeychainContract.DataStream; import org.sufficientlysecure.keychain.provider.ProviderHelper; -import org.sufficientlysecure.keychain.ui.adapter.ImportKeysListEntry; import org.sufficientlysecure.keychain.util.HkpKeyServer; import org.sufficientlysecure.keychain.util.InputData; -import org.sufficientlysecure.keychain.util.KeyServer.KeyInfo; import org.sufficientlysecure.keychain.util.Log; import org.sufficientlysecure.keychain.util.ProgressDialogUpdater; @@ -144,8 +139,6 @@ public class KeychainIntentService extends IntentService implements ProgressDial public static final String DELETE_FILE = "deleteFile"; // import key - public static final String IMPORT_INPUT_STREAM = "import_input_stream"; - public static final String IMPORT_FILENAME = "import_filename"; public static final String IMPORT_BYTES = "import_bytes"; public static final String IMPORT_KEY_LIST = "import_key_list"; @@ -161,8 +154,6 @@ public class KeychainIntentService extends IntentService implements ProgressDial // query key public static final String QUERY_KEY_SERVER = "query_key_server"; - public static final String QUERY_KEY_TYPE = "query_key_type"; - public static final String QUERY_KEY_STRING = "query_key_string"; public static final String QUERY_KEY_ID = "query_key_id"; // sign key @@ -762,25 +753,25 @@ public class KeychainIntentService extends IntentService implements ProgressDial try { /* Input */ - int queryType = data.getInt(QUERY_KEY_TYPE); +// int queryType = data.getInt(QUERY_KEY_TYPE); String keyServer = data.getString(QUERY_KEY_SERVER); - String queryString = data.getString(QUERY_KEY_STRING); +// String queryString = data.getString(QUERY_KEY_STRING); long keyId = data.getLong(QUERY_KEY_ID); /* Operation */ Bundle resultData = new Bundle(); HkpKeyServer server = new HkpKeyServer(keyServer); - if (queryType == Id.keyserver.search) { - ArrayList searchResult = server.search(queryString); - - resultData.putParcelableArrayList(RESULT_QUERY_KEY_SEARCH_RESULT, searchResult); - } else if (queryType == Id.keyserver.get) { +// if (queryType == Id.keyserver.search) { +// ArrayList searchResult = server.search(queryString); +// +// resultData.putParcelableArrayList(RESULT_QUERY_KEY_SEARCH_RESULT, searchResult); +// } else if (queryType == Id.keyserver.get) { String keyData = server.get(keyId); resultData.putString(RESULT_QUERY_KEY_DATA, keyData); - } +// } sendMessageToHandler(KeychainIntentServiceHandler.MESSAGE_OKAY, resultData); } catch (Exception e) { diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java index aee894ab7..1d26c071a 100644 --- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java +++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java @@ -179,9 +179,6 @@ public class ImportKeysActivity extends DrawerActivity implements OnNavigationLi Bundle args = new Bundle(); args.putString(ImportKeysServerFragment.ARG_QUERY, query); loadFragment(ImportKeysServerFragment.class, args, mNavigationStrings[0]); - - // TODO: implement KEYSERVER! - } else { // Other actions startListFragment(savedInstanceState, null, null); @@ -279,8 +276,8 @@ public class ImportKeysActivity extends DrawerActivity implements OnNavigationLi startActivity(queryIntent); } - public void loadCallback(byte[] importData, Uri dataUri, String serverQuery) { - mListFragment.loadNew(importData, dataUri, serverQuery); + public void loadCallback(byte[] importData, Uri dataUri, String serverQuery, String keyserver) { + mListFragment.loadNew(importData, dataUri, serverQuery, keyserver); } // private void importAndSignOld(final long keyId, final String expectedFingerprint) { @@ -444,6 +441,8 @@ public class ImportKeysActivity extends DrawerActivity implements OnNavigationLi // start service with intent startService(intent); + } else if (mListFragment.getServerQuery() != null) { + // TODO! } else { Toast.makeText(this, R.string.error_nothing_import, Toast.LENGTH_LONG).show(); } diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysClipboardFragment.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysClipboardFragment.java index 8aa07a5ab..211fc1f44 100644 --- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysClipboardFragment.java +++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysClipboardFragment.java @@ -62,7 +62,7 @@ public class ImportKeysClipboardFragment extends Fragment { String sendText = ""; if (clipboardText != null) sendText = clipboardText.toString(); - mImportActivity.loadCallback(sendText.getBytes(), null, null); + mImportActivity.loadCallback(sendText.getBytes(), null, null, null); } }); diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysFileFragment.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysFileFragment.java index 288f3f7ea..60b33c8a2 100644 --- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysFileFragment.java +++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysFileFragment.java @@ -84,7 +84,7 @@ public class ImportKeysFileFragment extends Fragment { if (resultCode == Activity.RESULT_OK && data != null) { // load data - mImportActivity.loadCallback(null, data.getData(), null); + mImportActivity.loadCallback(null, data.getData(), null, null); } break; diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java index 6b8472554..d33a20cc5 100644 --- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java +++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java @@ -18,7 +18,6 @@ package org.sufficientlysecure.keychain.ui; import java.io.ByteArrayInputStream; -import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; @@ -29,6 +28,7 @@ import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.ui.adapter.ImportKeysAdapter; import org.sufficientlysecure.keychain.ui.adapter.ImportKeysListEntry; import org.sufficientlysecure.keychain.ui.adapter.ImportKeysListLoader; +import org.sufficientlysecure.keychain.ui.adapter.ImportKeysListServerLoader; import org.sufficientlysecure.keychain.util.InputData; import org.sufficientlysecure.keychain.util.Log; @@ -54,6 +54,7 @@ public class ImportKeysListFragment extends SherlockListFragment implements private byte[] mKeyBytes; private Uri mDataUri; private String mServerQuery; + private String mKeyServer; private static final int LOADER_ID_BYTES = 0; private static final int LOADER_ID_SERVER_QUERY = 1; @@ -66,6 +67,10 @@ public class ImportKeysListFragment extends SherlockListFragment implements return mDataUri; } + public String getServerQuery() { + return mServerQuery; + } + public List getData() { return mAdapter.getData(); } @@ -131,15 +136,16 @@ public class ImportKeysListFragment extends SherlockListFragment implements mAdapter.notifyDataSetChanged(); } - public void loadNew(byte[] importData, Uri dataUri, String serverQuery) { + public void loadNew(byte[] importData, Uri dataUri, String serverQuery, String keyServer) { mKeyBytes = importData; mDataUri = dataUri; mServerQuery = serverQuery; + mKeyServer = keyServer; if (mKeyBytes != null || mDataUri != null) getLoaderManager().restartLoader(LOADER_ID_BYTES, null, this); - if (mServerQuery != null) + if (mServerQuery != null && mKeyServer != null) getLoaderManager().restartLoader(LOADER_ID_SERVER_QUERY, null, this); } @@ -152,7 +158,7 @@ public class ImportKeysListFragment extends SherlockListFragment implements return new ImportKeysListLoader(mActivity, inputData); } case LOADER_ID_SERVER_QUERY: { - + return new ImportKeysListServerLoader(getActivity(), mServerQuery, mKeyServer); } default: @@ -165,31 +171,32 @@ public class ImportKeysListFragment extends SherlockListFragment implements List data) { // Swap the new cursor in. (The framework will take care of closing the // old cursor once we return.) - switch (loader.getId()) { - case LOADER_ID_BYTES: - Log.d(Constants.TAG, "data: " + data); - // swap in the real data! - mAdapter.setData(data); - mAdapter.notifyDataSetChanged(); + Log.d(Constants.TAG, "data: " + data); - setListAdapter(mAdapter); + // swap in the real data! + mAdapter.setData(data); + mAdapter.notifyDataSetChanged(); - // The list should now be shown. - if (isResumed()) { - setListShown(true); - } else { - setListShownNoAnimation(true); - } + setListAdapter(mAdapter); - break; - - case LOADER_ID_SERVER_QUERY: - break; - - default: - break; + // The list should now be shown. + if (isResumed()) { + setListShown(true); + } else { + setListShownNoAnimation(true); } +// switch (loader.getId()) { +// case LOADER_ID_BYTES: +// +// break; +// +// case LOADER_ID_SERVER_QUERY: +// break; +// +// default: +// break; +// } } @Override diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysQrCodeFragment.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysQrCodeFragment.java index fe55e2b5e..63727ad26 100644 --- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysQrCodeFragment.java +++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysQrCodeFragment.java @@ -190,7 +190,7 @@ public class ImportKeysQrCodeFragment extends Fragment { for (String in : mScannedContent) { result += in; } - mImportActivity.loadCallback(result.getBytes(), null, null); + mImportActivity.loadCallback(result.getBytes(), null, null, null); } } diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysServerFragment.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysServerFragment.java index c8f4868a2..da0033083 100644 --- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysServerFragment.java +++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysServerFragment.java @@ -17,11 +17,10 @@ package org.sufficientlysecure.keychain.ui; -import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.helper.Preferences; -import android.content.Intent; +import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.KeyEvent; @@ -30,6 +29,7 @@ import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputMethodManager; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.Spinner; @@ -39,23 +39,24 @@ import com.beardedhen.androidbootstrap.BootstrapButton; public class ImportKeysServerFragment extends Fragment { public static final String ARG_QUERY = "query"; + public static final String ARG_KEY_SERVER = "key_server"; private ImportKeysActivity mImportActivity; - private BootstrapButton mOldButton; - private BootstrapButton mSearchButton; private EditText mQueryEditText; private Spinner mServerSpinner; + private ArrayAdapter mServerAdapter; /** * Creates new instance of this fragment */ - public static ImportKeysServerFragment newInstance(String query) { + public static ImportKeysServerFragment newInstance(String query, String keyServer) { ImportKeysServerFragment frag = new ImportKeysServerFragment(); Bundle args = new Bundle(); args.putString(ARG_QUERY, query); + args.putString(ARG_KEY_SERVER, keyServer); frag.setArguments(args); @@ -69,17 +70,17 @@ public class ImportKeysServerFragment extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.import_keys_server_fragment, container, false); - mSearchButton = (BootstrapButton) view.findViewById(R.id.import_server_button); + mSearchButton = (BootstrapButton) view.findViewById(R.id.import_server_search); mQueryEditText = (EditText) view.findViewById(R.id.import_server_query); mServerSpinner = (Spinner) view.findViewById(R.id.import_server_spinner); // add keyservers to spinner - ArrayAdapter adapter = new ArrayAdapter(getActivity(), + mServerAdapter = new ArrayAdapter(getActivity(), android.R.layout.simple_spinner_item, Preferences.getPreferences(getActivity()) .getKeyServers()); - adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - mServerSpinner.setAdapter(adapter); - if (adapter.getCount() > 0) { + mServerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + mServerSpinner.setAdapter(mServerAdapter); + if (mServerAdapter.getCount() > 0) { mServerSpinner.setSelection(0); } else { mSearchButton.setEnabled(false); @@ -89,31 +90,28 @@ public class ImportKeysServerFragment extends Fragment { @Override public void onClick(View v) { String query = mQueryEditText.getText().toString(); + String keyServer = (String) mServerSpinner.getSelectedItem(); + search(query, keyServer); + // close keyboard after pressing search + InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(mQueryEditText.getWindowToken(), 0); } }); - // TODO: not supported by BootstrapButton -// mSearchButton.setOnEditorActionListener(new TextView.OnEditorActionListener() { -// @Override -// public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { -// if (actionId == EditorInfo.IME_ACTION_SEARCH) { -// String query = mQueryEditText.getText().toString(); -// search(query); -// // FIXME This is a hack to hide a keyboard after search -// // http://tinyurl.com/pwdc3q9 -// return false; -// } -// return false; -// } -// }); - - // TODO: remove: - mOldButton = (BootstrapButton) view.findViewById(R.id.import_server_button); - mOldButton.setOnClickListener(new OnClickListener() { + mQueryEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override - public void onClick(View v) { - startActivityForResult(new Intent(getActivity(), KeyServerQueryActivity.class), 0); + public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { + if (actionId == EditorInfo.IME_ACTION_SEARCH) { + String query = mQueryEditText.getText().toString(); + String keyServer = (String) mServerSpinner.getSelectedItem(); + search(query, keyServer); + + // Don't return true to let the keyboard close itself after pressing search + // http://stackoverflow.com/questions/2342620/how-to-hide-keyboard-after-typing-in-edittext-in-android + return false; + } + return false; } }); @@ -130,12 +128,22 @@ public class ImportKeysServerFragment extends Fragment { if (getArguments() != null && getArguments().containsKey(ARG_QUERY)) { String query = getArguments().getString(ARG_QUERY); mQueryEditText.setText(query); - search(query); + + String keyServer = null; + if (getArguments().containsKey(ARG_KEY_SERVER)) { + keyServer = getArguments().getString(ARG_KEY_SERVER); + int keyServerPos = mServerAdapter.getPosition(keyServer); + mServerSpinner.setSelection(keyServerPos); + } else { + keyServer = (String) mServerSpinner.getSelectedItem(); + } + + search(query, keyServer); } } - private void search(String query) { - + private void search(String query, String keyServer) { + mImportActivity.loadCallback(null, null, query, keyServer); } } diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyServerQueryActivity.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyServerQueryActivity.java index 19de52107..4be096a7d 100644 --- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyServerQueryActivity.java +++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyServerQueryActivity.java @@ -202,13 +202,13 @@ public class KeyServerQueryActivity extends SherlockFragmentActivity { String server = (String) mKeyServer.getSelectedItem(); data.putString(KeychainIntentService.QUERY_KEY_SERVER, server); - data.putInt(KeychainIntentService.QUERY_KEY_TYPE, mQueryType); +// data.putInt(KeychainIntentService.QUERY_KEY_TYPE, mQueryType); - if (mQueryType == Id.keyserver.search) { - data.putString(KeychainIntentService.QUERY_KEY_STRING, mQueryString); - } else if (mQueryType == Id.keyserver.get) { - data.putLong(KeychainIntentService.QUERY_KEY_ID, mQueryId); - } +// if (mQueryType == Id.keyserver.search) { +// data.putString(KeychainIntentService.QUERY_KEY_STRING, mQueryString); +// } else if (mQueryType == Id.keyserver.get) { +// data.putLong(KeychainIntentService.QUERY_KEY_ID, mQueryId); +// } intent.putExtra(KeychainIntentService.EXTRA_DATA, data); diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListEntry.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListEntry.java index 3ad82ea0b..2ad9cc593 100644 --- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListEntry.java +++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListEntry.java @@ -19,6 +19,7 @@ package org.sufficientlysecure.keychain.ui.adapter; import java.io.Serializable; import java.util.ArrayList; +import java.util.Date; import org.spongycastle.openpgp.PGPKeyRing; import org.spongycastle.openpgp.PGPPublicKey; @@ -33,7 +34,7 @@ public class ImportKeysListEntry implements Serializable { public long keyId; public boolean revoked; - // public Date date; + public Date date; // TODO: not displayed public String fingerPrint; public String hexKeyId; public int bitStrength; diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListServerLoader.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListServerLoader.java new file mode 100644 index 000000000..22d92c10b --- /dev/null +++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListServerLoader.java @@ -0,0 +1,100 @@ +/* + * Copyright (C) 2012-2013 Dominik Schürmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.sufficientlysecure.keychain.ui.adapter; + +import android.content.Context; +import android.support.v4.content.AsyncTaskLoader; + +import org.sufficientlysecure.keychain.Constants; +import org.sufficientlysecure.keychain.util.HkpKeyServer; +import org.sufficientlysecure.keychain.util.KeyServer; +import org.sufficientlysecure.keychain.util.Log; + +import java.util.ArrayList; +import java.util.List; + +public class ImportKeysListServerLoader extends AsyncTaskLoader> { + Context mContext; + + String mServerQuery; + String mKeyServer; + + ArrayList data = new ArrayList(); + + public ImportKeysListServerLoader(Context context, String serverQuery, String keyServer) { + super(context); + mContext = context; + mServerQuery = serverQuery; + mKeyServer = keyServer; + } + + @Override + public List loadInBackground() { + if (mServerQuery == null) { + Log.e(Constants.TAG, "mServerQuery is null!"); + return data; + } + + queryServer(mServerQuery, mKeyServer); + + return data; + } + + @Override + protected void onReset() { + super.onReset(); + + // Ensure the loader is stopped + onStopLoading(); + } + + @Override + protected void onStartLoading() { + forceLoad(); + } + + @Override + protected void onStopLoading() { + cancelLoad(); + } + + @Override + public void deliverResult(List data) { + super.deliverResult(data); + } + + /** + * Query key server + */ + private void queryServer(String query, String keyServer) { + HkpKeyServer server = new HkpKeyServer(keyServer); + try { + ArrayList searchResult = server.search(query); + + // add result to data + data.addAll(searchResult); + } catch (KeyServer.InsufficientQuery e) { + Log.e(Constants.TAG, "InsufficientQuery", e); + } catch (KeyServer.QueryException e) { + Log.e(Constants.TAG, "QueryException", e); + } catch (KeyServer.TooManyResponses e) { + Log.e(Constants.TAG, "TooManyResponses", e); + } + } + +} diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/util/HkpKeyServer.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/util/HkpKeyServer.java index fdcaf9258..bd583ac10 100644 --- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/util/HkpKeyServer.java +++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/util/HkpKeyServer.java @@ -46,6 +46,7 @@ import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import org.sufficientlysecure.keychain.pgp.PgpHelper; import org.sufficientlysecure.keychain.pgp.PgpKeyHelper; +import org.sufficientlysecure.keychain.ui.adapter.ImportKeysListEntry; import android.text.Html; @@ -141,9 +142,9 @@ public class HkpKeyServer extends KeyServer { } @Override - public ArrayList search(String query) throws QueryException, TooManyResponses, + public ArrayList search(String query) throws QueryException, TooManyResponses, InsufficientQuery { - ArrayList results = new ArrayList(); + ArrayList results = new ArrayList(); if (query.length() < 3) { throw new InsufficientQuery(); @@ -177,8 +178,9 @@ public class HkpKeyServer extends KeyServer { Matcher matcher = PUB_KEY_LINE.matcher(data); while (matcher.find()) { - KeyInfo info = new KeyInfo(); - info.size = Integer.parseInt(matcher.group(1)); +// KeyInfo info = new KeyInfo(); + ImportKeysListEntry info = new ImportKeysListEntry(); + info.bitStrength = Integer.parseInt(matcher.group(1)); info.algorithm = matcher.group(2); info.keyId = PgpKeyHelper.convertHexToKeyId(matcher.group(3)); info.fingerPrint = PgpKeyHelper.convertKeyIdToHex(info.keyId); @@ -186,11 +188,11 @@ public class HkpKeyServer extends KeyServer { GregorianCalendar tmpGreg = new GregorianCalendar(TimeZone.getTimeZone("UTC")); tmpGreg.set(Integer.parseInt(chunks[0]), Integer.parseInt(chunks[1]), - Integer.parseInt(chunks[2])); + Integer.parseInt(chunks[2])); info.date = tmpGreg.getTime(); info.userIds = new ArrayList(); if (matcher.group(5).startsWith("*** KEY")) { - info.revoked = matcher.group(5); + info.revoked = true; } else { String tmp = matcher.group(5).replaceAll("<.*?>", ""); tmp = Html.fromHtml(tmp).toString(); diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/util/KeyServer.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/util/KeyServer.java index cdc188887..832f4f62c 100644 --- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/util/KeyServer.java +++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/util/KeyServer.java @@ -24,6 +24,8 @@ import java.util.List; import android.os.Parcel; import android.os.Parcelable; +import org.sufficientlysecure.keychain.ui.adapter.ImportKeysListEntry; + public abstract class KeyServer { static public class QueryException extends Exception { private static final long serialVersionUID = 2703768928624654512L; @@ -88,7 +90,7 @@ public abstract class KeyServer { } } - abstract List search(String query) throws QueryException, TooManyResponses, + abstract List search(String query) throws QueryException, TooManyResponses, InsufficientQuery; abstract String get(long keyId) throws QueryException;