aboutsummaryrefslogtreecommitdiffstats
path: root/org_apg/src/org/thialfihar/android/apg/deprecated/ApgService2.java
diff options
context:
space:
mode:
Diffstat (limited to 'org_apg/src/org/thialfihar/android/apg/deprecated/ApgService2.java')
-rw-r--r--org_apg/src/org/thialfihar/android/apg/deprecated/ApgService2.java673
1 files changed, 0 insertions, 673 deletions
diff --git a/org_apg/src/org/thialfihar/android/apg/deprecated/ApgService2.java b/org_apg/src/org/thialfihar/android/apg/deprecated/ApgService2.java
deleted file mode 100644
index cbb033bed..000000000
--- a/org_apg/src/org/thialfihar/android/apg/deprecated/ApgService2.java
+++ /dev/null
@@ -1,673 +0,0 @@
-///*
-// * Licensed under the Apache License, Version 2.0 (the "License");
-// * you may not use this file except in compliance with the License.
-// * You may obtain a copy of the License at
-// *
-// * http://www.apache.org/licenses/LICENSE-2.0
-// *
-// * Unless required by applicable law or agreed to in writing, software
-// * distributed under the License is distributed on an "AS IS" BASIS,
-// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// * See the License for the specific language governing permissions and
-// * limitations under the License.
-// */
-//
-//package org.thialfihar.android.apg.deprecated;
-//
-//import java.io.ByteArrayInputStream;
-//import java.io.ByteArrayOutputStream;
-//import java.io.IOException;
-//import java.io.InputStream;
-//import java.io.OutputStream;
-//import java.lang.reflect.Method;
-//import java.util.ArrayList;
-//import java.util.HashMap;
-//import java.util.HashSet;
-//import java.util.Iterator;
-//
-//import org.thialfihar.android.apg.deprecated.IApgService2;
-//import org.thialfihar.android.apg.Id;
-//import org.thialfihar.android.apg.R;
-//import org.thialfihar.android.apg.deprecated.IApgService2.Stub;
-//import org.thialfihar.android.apg.Id.database;
-//import org.thialfihar.android.apg.R.string;
-//import org.thialfihar.android.apg.helper.PGPHelper;
-//import org.thialfihar.android.apg.helper.PGPMain;
-//import org.thialfihar.android.apg.helper.Preferences;
-//import org.thialfihar.android.apg.provider.KeyRings;
-//import org.thialfihar.android.apg.provider.Keys;
-//import org.thialfihar.android.apg.provider.UserIds;
-//import org.thialfihar.android.apg.service.PassphraseCacheService;
-//import org.thialfihar.android.apg.util.InputData;
-//
-//import android.content.ContentResolver;
-//import android.content.Intent;
-//import android.database.Cursor;
-//import android.database.sqlite.SQLiteQueryBuilder;
-//import android.net.Uri;
-//import android.os.Bundle;
-//import android.os.IBinder;
-//import org.thialfihar.android.apg.util.Log;
-//
-///**
-// * ATTENTION:
-// *
-// * This is the old ApgService used as remote service over aidl interface. It will be reworked!
-// *
-// */
-//public class ApgService2 extends PassphraseCacheService {
-// private final static String TAG = "ApgService";
-// public static final boolean LOCAL_LOGV = true;
-// public static final boolean LOCAL_LOGD = true;
-//
-// @Override
-// public IBinder onBind(Intent intent) {
-// if (LOCAL_LOGD)
-// Log.d(TAG, "bound");
-// return mBinder;
-// }
-//
-// /** error status */
-// private static enum error {
-// ARGUMENTS_MISSING, APG_FAILURE, NO_MATCHING_SECRET_KEY, PRIVATE_KEY_PASSPHRASE_WRONG, PRIVATE_KEY_PASSPHRASE_MISSING;
-//
-// public int shiftedOrdinal() {
-// return ordinal() + 100;
-// }
-// }
-//
-// private static enum call {
-// encrypt_with_passphrase, encrypt_with_public_key, decrypt, get_keys
-// }
-//
-// /** all arguments that can be passed by calling application */
-// public static enum arg {
-// MESSAGE, // message to encrypt or to decrypt
-// SYMMETRIC_PASSPHRASE, // key for symmetric en/decryption
-// PUBLIC_KEYS, // public keys for encryption
-// ENCRYPTION_ALGORYTHM, // encryption algorithm
-// HASH_ALGORYTHM, // hash algorithm
-// ARMORED_OUTPUT, // whether to armor output
-// FORCE_V3_SIGNATURE, // whether to force v3 signature
-// COMPRESSION, // what compression to use for encrypted output
-// SIGNATURE_KEY, // key for signing
-// PRIVATE_KEY_PASSPHRASE, // passphrase for encrypted private key
-// KEY_TYPE, // type of key (private or public)
-// BLOB, // blob passed
-// }
-//
-// /** all things that might be returned */
-// private static enum ret {
-// ERRORS, // string array list with errors
-// WARNINGS, // string array list with warnings
-// ERROR, // numeric error
-// RESULT, // en-/decrypted
-// FINGERPRINTS, // fingerprints of keys
-// USER_IDS, // user ids
-// }
-//
-// /** required arguments for each AIDL function */
-// private static final HashMap<String, HashSet<arg>> FUNCTIONS_REQUIRED_ARGS = new HashMap<String, HashSet<arg>>();
-// static {
-// HashSet<arg> args = new HashSet<arg>();
-// args.add(arg.SYMMETRIC_PASSPHRASE);
-// FUNCTIONS_REQUIRED_ARGS.put(call.encrypt_with_passphrase.name(), args);
-//
-// args = new HashSet<arg>();
-// args.add(arg.PUBLIC_KEYS);
-// FUNCTIONS_REQUIRED_ARGS.put(call.encrypt_with_public_key.name(), args);
-//
-// args = new HashSet<arg>();
-// FUNCTIONS_REQUIRED_ARGS.put(call.decrypt.name(), args);
-//
-// args = new HashSet<arg>();
-// args.add(arg.KEY_TYPE);
-// FUNCTIONS_REQUIRED_ARGS.put(call.get_keys.name(), args);
-// }
-//
-// /** optional arguments for each AIDL function */
-// private static final HashMap<String, HashSet<arg>> FUNCTIONS_OPTIONAL_ARGS = new HashMap<String, HashSet<arg>>();
-// static {
-// HashSet<arg> args = new HashSet<arg>();
-// args.add(arg.ENCRYPTION_ALGORYTHM);
-// args.add(arg.HASH_ALGORYTHM);
-// args.add(arg.ARMORED_OUTPUT);
-// args.add(arg.FORCE_V3_SIGNATURE);
-// args.add(arg.COMPRESSION);
-// args.add(arg.PRIVATE_KEY_PASSPHRASE);
-// args.add(arg.SIGNATURE_KEY);
-// args.add(arg.BLOB);
-// args.add(arg.MESSAGE);
-// FUNCTIONS_OPTIONAL_ARGS.put(call.encrypt_with_passphrase.name(), args);
-// FUNCTIONS_OPTIONAL_ARGS.put(call.encrypt_with_public_key.name(), args);
-//
-// args = new HashSet<arg>();
-// args.add(arg.SYMMETRIC_PASSPHRASE);
-// args.add(arg.PUBLIC_KEYS);
-// args.add(arg.PRIVATE_KEY_PASSPHRASE);
-// args.add(arg.MESSAGE);
-// args.add(arg.BLOB);
-// FUNCTIONS_OPTIONAL_ARGS.put(call.decrypt.name(), args);
-// }
-//
-// /** a map from ApgService parameters to function calls to get the default */
-// private static final HashMap<arg, String> FUNCTIONS_DEFAULTS = new HashMap<arg, String>();
-// static {
-// FUNCTIONS_DEFAULTS.put(arg.ENCRYPTION_ALGORYTHM, "getDefaultEncryptionAlgorithm");
-// FUNCTIONS_DEFAULTS.put(arg.HASH_ALGORYTHM, "getDefaultHashAlgorithm");
-// FUNCTIONS_DEFAULTS.put(arg.ARMORED_OUTPUT, "getDefaultAsciiArmour");
-// FUNCTIONS_DEFAULTS.put(arg.FORCE_V3_SIGNATURE, "getForceV3Signatures");
-// FUNCTIONS_DEFAULTS.put(arg.COMPRESSION, "getDefaultMessageCompression");
-// }
-//
-// /** a map of the default function names to their method */
-// private static final HashMap<String, Method> FUNCTIONS_DEFAULTS_METHODS = new HashMap<String, Method>();
-// static {
-// try {
-// FUNCTIONS_DEFAULTS_METHODS.put("getDefaultEncryptionAlgorithm",
-// Preferences.class.getMethod("getDefaultEncryptionAlgorithm"));
-// FUNCTIONS_DEFAULTS_METHODS.put("getDefaultHashAlgorithm",
-// Preferences.class.getMethod("getDefaultHashAlgorithm"));
-// FUNCTIONS_DEFAULTS_METHODS.put("getDefaultAsciiArmour",
-// Preferences.class.getMethod("getDefaultAsciiArmour"));
-// FUNCTIONS_DEFAULTS_METHODS.put("getForceV3Signatures",
-// Preferences.class.getMethod("getForceV3Signatures"));
-// FUNCTIONS_DEFAULTS_METHODS.put("getDefaultMessageCompression",
-// Preferences.class.getMethod("getDefaultMessageCompression"));
-// } catch (Exception e) {
-// Log.e(TAG, "Function method exception: " + e.getMessage());
-// }
-// }
-//
-// private static void writeToOutputStream(InputStream is, OutputStream os) throws IOException {
-// byte[] buffer = new byte[8];
-// int len = 0;
-// while ((len = is.read(buffer)) != -1) {
-// os.write(buffer, 0, len);
-// }
-// }
-//
-// private static Cursor getKeyEntries(HashMap<String, Object> pParams) {
-// SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
-// qb.setTables(KeyRings.TABLE_NAME + " INNER JOIN " + Keys.TABLE_NAME + " ON " + "("
-// + KeyRings.TABLE_NAME + "." + KeyRings._ID + " = " + Keys.TABLE_NAME + "."
-// + Keys.KEY_RING_ID + " AND " + Keys.TABLE_NAME + "." + Keys.IS_MASTER_KEY
-// + " = '1'" + ") " + " INNER JOIN " + UserIds.TABLE_NAME + " ON " + "("
-// + Keys.TABLE_NAME + "." + Keys._ID + " = " + UserIds.TABLE_NAME + "."
-// + UserIds.KEY_ID + " AND " + UserIds.TABLE_NAME + "." + UserIds.RANK + " = '0') ");
-//
-// String orderBy = pParams.containsKey("order_by") ? (String) pParams.get("order_by")
-// : UserIds.TABLE_NAME + "." + UserIds.USER_ID + " ASC";
-//
-// String typeVal[] = null;
-// String typeWhere = null;
-// if (pParams.containsKey("key_type")) {
-// typeWhere = KeyRings.TABLE_NAME + "." + KeyRings.TYPE + " = ?";
-// typeVal = new String[] { "" + pParams.get("key_type") };
-// }
-// return qb.query(PGPMain.getDatabase().db(), (String[]) pParams.get("columns"), typeWhere,
-// typeVal, null, null, orderBy);
-// }
-//
-// /**
-// * maps a fingerprint or user id of a key to a master key in database
-// *
-// * @param search_key
-// * fingerprint or user id to search for
-// * @return master key if found, or 0
-// */
-// private static long getMasterKey(String pSearchKey, Bundle pReturn) {
-// if (pSearchKey == null || pSearchKey.length() != 8) {
-// return 0;
-// }
-// ArrayList<String> keyList = new ArrayList<String>();
-// keyList.add(pSearchKey);
-// long[] keys = getMasterKey(keyList, pReturn);
-// if (keys.length > 0) {
-// return keys[0];
-// } else {
-// return 0;
-// }
-// }
-//
-// /**
-// * maps fingerprints or user ids of keys to master keys in database
-// *
-// * @param search_keys
-// * a list of keys (fingerprints or user ids) to look for in database
-// * @return an array of master keys
-// */
-// private static long[] getMasterKey(ArrayList<String> pSearchKeys, Bundle pReturn) {
-//
-// HashMap<String, Object> qParams = new HashMap<String, Object>();
-// qParams.put("columns", new String[] { KeyRings.TABLE_NAME + "." + KeyRings.MASTER_KEY_ID, // 0
-// UserIds.TABLE_NAME + "." + UserIds.USER_ID, // 1
-// });
-// qParams.put("key_type", Id.database.type_public);
-//
-// Cursor mCursor = getKeyEntries(qParams);
-//
-// if (LOCAL_LOGV)
-// Log.v(TAG, "going through installed user keys");
-// ArrayList<Long> masterKeys = new ArrayList<Long>();
-// while (mCursor.moveToNext()) {
-// long curMkey = mCursor.getLong(0);
-// String curUser = mCursor.getString(1);
-//
-// String curFprint = PGPHelper.getSmallFingerPrint(curMkey);
-// if (LOCAL_LOGV)
-// Log.v(TAG, "current user: " + curUser + " (" + curFprint + ")");
-// if (pSearchKeys.contains(curFprint) || pSearchKeys.contains(curUser)) {
-// if (LOCAL_LOGV)
-// Log.v(TAG, "master key found for: " + curFprint);
-// masterKeys.add(curMkey);
-// pSearchKeys.remove(curFprint);
-// } else {
-// if (LOCAL_LOGV)
-// Log.v(TAG, "Installed key " + curFprint
-// + " is not in the list of public keys to encrypt with");
-// }
-// }
-// mCursor.close();
-//
-// long[] masterKeyLongs = new long[masterKeys.size()];
-// int i = 0;
-// for (Long key : masterKeys) {
-// masterKeyLongs[i++] = key;
-// }
-//
-// if (i == 0) {
-// Log.w(TAG, "Found not one public key");
-// pReturn.getStringArrayList(ret.WARNINGS.name()).add(
-// "Searched for public key(s) but found not one");
-// }
-//
-// for (String key : pSearchKeys) {
-// Log.w(TAG, "Searched for key " + key + " but cannot find it in APG");
-// pReturn.getStringArrayList(ret.WARNINGS.name()).add(
-// "Searched for key " + key + " but cannot find it in APG");
-// }
-//
-// return masterKeyLongs;
-// }
-//
-// /**
-// * Add default arguments if missing
-// *
-// * @param args
-// * the bundle to add default parameters to if missing
-// */
-// private void addDefaultArguments(String pCall, Bundle pArgs) {
-// // check whether there are optional elements defined for that call
-// if (FUNCTIONS_OPTIONAL_ARGS.containsKey(pCall)) {
-// Preferences preferences = Preferences.getPreferences(getBaseContext(), true);
-//
-// Iterator<arg> iter = FUNCTIONS_DEFAULTS.keySet().iterator();
-// while (iter.hasNext()) {
-// arg currentArg = iter.next();
-// String currentKey = currentArg.name();
-// if (!pArgs.containsKey(currentKey)
-// && FUNCTIONS_OPTIONAL_ARGS.get(pCall).contains(currentArg)) {
-// String currentFunctionName = FUNCTIONS_DEFAULTS.get(currentArg);
-// try {
-// Class<?> returnType = FUNCTIONS_DEFAULTS_METHODS.get(currentFunctionName)
-// .getReturnType();
-// if (returnType == String.class) {
-// pArgs.putString(currentKey,
-// (String) FUNCTIONS_DEFAULTS_METHODS.get(currentFunctionName)
-// .invoke(preferences));
-// } else if (returnType == boolean.class) {
-// pArgs.putBoolean(currentKey,
-// (Boolean) FUNCTIONS_DEFAULTS_METHODS.get(currentFunctionName)
-// .invoke(preferences));
-// } else if (returnType == int.class) {
-// pArgs.putInt(currentKey,
-// (Integer) FUNCTIONS_DEFAULTS_METHODS.get(currentFunctionName)
-// .invoke(preferences));
-// } else {
-// Log.e(TAG, "Unknown return type " + returnType.toString()
-// + " for default option");
-// }
-// } catch (Exception e) {
-// Log.e(TAG, "Exception in add_default_arguments " + e.getMessage());
-// }
-// }
-// }
-// }
-// }
-//
-// /**
-// * updates a Bundle with default return values
-// *
-// * @param pReturn
-// * the Bundle to update
-// */
-// private void addDefaultReturns(Bundle pReturn) {
-// ArrayList<String> errors = new ArrayList<String>();
-// ArrayList<String> warnings = new ArrayList<String>();
-//
-// pReturn.putStringArrayList(ret.ERRORS.name(), errors);
-// pReturn.putStringArrayList(ret.WARNINGS.name(), warnings);
-// }
-//
-// /**
-// * checks for required arguments and adds them to the error if missing
-// *
-// * @param function
-// * the functions required arguments to check for
-// * @param pArgs
-// * the Bundle of arguments to check
-// * @param pReturn
-// * the bundle to write errors to
-// */
-// private void checkForRequiredArgs(String pFunction, Bundle pArgs, Bundle pReturn) {
-// if (FUNCTIONS_REQUIRED_ARGS.containsKey(pFunction)) {
-// Iterator<arg> iter = FUNCTIONS_REQUIRED_ARGS.get(pFunction).iterator();
-// while (iter.hasNext()) {
-// String curArg = iter.next().name();
-// if (!pArgs.containsKey(curArg)) {
-// pReturn.getStringArrayList(ret.ERRORS.name())
-// .add("Argument missing: " + curArg);
-// }
-// }
-// }
-//
-// if (pFunction.equals(call.encrypt_with_passphrase.name())
-// || pFunction.equals(call.encrypt_with_public_key.name())
-// || pFunction.equals(call.decrypt.name())) {
-// // check that either MESSAGE or BLOB are there
-// if (!pArgs.containsKey(arg.MESSAGE.name()) && !pArgs.containsKey(arg.BLOB.name())) {
-// pReturn.getStringArrayList(ret.ERRORS.name()).add(
-// "Arguments missing: Neither MESSAGE nor BLOG found");
-// }
-//
-// }
-// }
-//
-// /**
-// * checks for unknown arguments and add them to warning if found
-// *
-// * @param function
-// * the functions name to check against
-// * @param pArgs
-// * the Bundle of arguments to check
-// * @param pReturn
-// * the bundle to write warnings to
-// */
-// private void checkForUnknownArgs(String pFunction, Bundle pArgs, Bundle pReturn) {
-//
-// HashSet<arg> allArgs = new HashSet<arg>();
-// if (FUNCTIONS_REQUIRED_ARGS.containsKey(pFunction)) {
-// allArgs.addAll(FUNCTIONS_REQUIRED_ARGS.get(pFunction));
-// }
-// if (FUNCTIONS_OPTIONAL_ARGS.containsKey(pFunction)) {
-// allArgs.addAll(FUNCTIONS_OPTIONAL_ARGS.get(pFunction));
-// }
-//
-// ArrayList<String> unknownArgs = new ArrayList<String>();
-// Iterator<String> iter = pArgs.keySet().iterator();
-// while (iter.hasNext()) {
-// String curKey = iter.next();
-// try {
-// arg curArg = arg.valueOf(curKey);
-// if (!allArgs.contains(curArg)) {
-// pReturn.getStringArrayList(ret.WARNINGS.name()).add(
-// "Unknown argument: " + curKey);
-// unknownArgs.add(curKey);
-// }
-// } catch (Exception e) {
-// pReturn.getStringArrayList(ret.WARNINGS.name()).add("Unknown argument: " + curKey);
-// unknownArgs.add(curKey);
-// }
-// }
-//
-// // remove unknown arguments so our bundle has just what we need
-// for (String arg : unknownArgs) {
-// pArgs.remove(arg);
-// }
-// }
-//
-// private boolean prepareArgs(String pCall, Bundle pArgs, Bundle pReturn) {
-// // PGPMain.initialize(getBaseContext());
-//
-// /* add default return values for all functions */
-// addDefaultReturns(pReturn);
-//
-// /* add default arguments if missing */
-// addDefaultArguments(pCall, pArgs);
-// if (LOCAL_LOGV)
-// Log.v(TAG, "add_default_arguments");
-//
-// /* check for required arguments */
-// checkForRequiredArgs(pCall, pArgs, pReturn);
-// if (LOCAL_LOGV)
-// Log.v(TAG, "check_required_args");
-//
-// /* check for unknown arguments and add to warning if found */
-// checkForUnknownArgs(pCall, pArgs, pReturn);
-// if (LOCAL_LOGV)
-// Log.v(TAG, "check_unknown_args");
-//
-// /* return if errors happened */
-// if (pReturn.getStringArrayList(ret.ERRORS.name()).size() != 0) {
-// if (LOCAL_LOGV)
-// Log.v(TAG, "Errors after preparing, not executing " + pCall);
-// pReturn.putInt(ret.ERROR.name(), error.ARGUMENTS_MISSING.shiftedOrdinal());
-// return false;
-// }
-// if (LOCAL_LOGV)
-// Log.v(TAG, "error return");
-//
-// return true;
-// }
-//
-// private boolean encrypt(Bundle pArgs, Bundle pReturn) {
-// boolean isBlob = pArgs.containsKey(arg.BLOB.name());
-//
-// long pubMasterKeys[] = {};
-// if (pArgs.containsKey(arg.PUBLIC_KEYS.name())) {
-// ArrayList<String> list = pArgs.getStringArrayList(arg.PUBLIC_KEYS.name());
-// ArrayList<String> pubKeys = new ArrayList<String>();
-// if (LOCAL_LOGV)
-// Log.v(TAG, "Long size: " + list.size());
-// Iterator<String> iter = list.iterator();
-// while (iter.hasNext()) {
-// pubKeys.add(iter.next());
-// }
-// pubMasterKeys = getMasterKey(pubKeys, pReturn);
-// }
-//
-// InputStream inStream = null;
-// if (isBlob) {
-// ContentResolver cr = getContentResolver();
-// try {
-// inStream = cr.openInputStream(Uri.parse(pArgs.getString(arg.BLOB.name())));
-// } catch (Exception e) {
-// Log.e(TAG, "... exception on opening blob", e);
-// }
-// } else {
-// inStream = new ByteArrayInputStream(pArgs.getString(arg.MESSAGE.name()).getBytes());
-// }
-// InputData in = new InputData(inStream, 0); // XXX Size second param?
-//
-// OutputStream out = new ByteArrayOutputStream();
-// if (LOCAL_LOGV)
-// Log.v(TAG, "About to encrypt");
-// try {
-// PGPMain.encrypt(getBaseContext(), // context
-// in, // input stream
-// out, // output stream
-// pArgs.getBoolean(arg.ARMORED_OUTPUT.name()), // ARMORED_OUTPUT
-// pubMasterKeys, // encryption keys
-// getMasterKey(pArgs.getString(arg.SIGNATURE_KEY.name()), pReturn), // signature
-// // key
-// pArgs.getString(arg.PRIVATE_KEY_PASSPHRASE.name()), // signature passphrase
-// null, // progress
-// pArgs.getInt(arg.ENCRYPTION_ALGORYTHM.name()), // encryption
-// pArgs.getInt(arg.HASH_ALGORYTHM.name()), // hash
-// pArgs.getInt(arg.COMPRESSION.name()), // compression
-// pArgs.getBoolean(arg.FORCE_V3_SIGNATURE.name()), // mPreferences.getForceV3Signatures(),
-// pArgs.getString(arg.SYMMETRIC_PASSPHRASE.name()) // passPhrase
-// );
-// } catch (Exception e) {
-// Log.e(TAG, "Exception in encrypt");
-// String msg = e.getMessage();
-// if (msg.equals(getBaseContext().getString(R.string.error_noSignaturePassPhrase))) {
-// pReturn.getStringArrayList(ret.ERRORS.name()).add(
-// "Cannot encrypt (" + arg.PRIVATE_KEY_PASSPHRASE.name() + " missing): "
-// + msg);
-// pReturn.putInt(ret.ERROR.name(),
-// error.PRIVATE_KEY_PASSPHRASE_MISSING.shiftedOrdinal());
-// } else if (msg.equals(getBaseContext().getString(
-// R.string.error_couldNotExtractPrivateKey))) {
-// pReturn.getStringArrayList(ret.ERRORS.name()).add(
-// "Cannot encrypt (" + arg.PRIVATE_KEY_PASSPHRASE.name()
-// + " probably wrong): " + msg);
-// pReturn.putInt(ret.ERROR.name(),
-// error.PRIVATE_KEY_PASSPHRASE_WRONG.shiftedOrdinal());
-// } else {
-// pReturn.getStringArrayList(ret.ERRORS.name()).add(
-// "Internal failure (" + e.getClass() + ") in APG when encrypting: "
-// + e.getMessage());
-// pReturn.putInt(ret.ERROR.name(), error.APG_FAILURE.shiftedOrdinal());
-// }
-// return false;
-// }
-// if (LOCAL_LOGV)
-// Log.v(TAG, "Encrypted");
-// if (isBlob) {
-// ContentResolver cr = getContentResolver();
-// try {
-// OutputStream outStream = cr.openOutputStream(Uri.parse(pArgs.getString(arg.BLOB
-// .name())));
-// writeToOutputStream(new ByteArrayInputStream(out.toString().getBytes()), outStream);
-// outStream.close();
-// } catch (Exception e) {
-// Log.e(TAG, "... exception on writing blob", e);
-// }
-// } else {
-// pReturn.putString(ret.RESULT.name(), out.toString());
-// }
-// return true;
-// }
-//
-// private final IApgService2.Stub mBinder = new IApgService2.Stub() {
-//
-// public boolean getKeys(Bundle pArgs, Bundle pReturn) {
-//
-// prepareArgs("get_keys", pArgs, pReturn);
-//
-// HashMap<String, Object> qParams = new HashMap<String, Object>();
-// qParams.put("columns", new String[] {
-// KeyRings.TABLE_NAME + "." + KeyRings.MASTER_KEY_ID, // 0
-// UserIds.TABLE_NAME + "." + UserIds.USER_ID, // 1
-// });
-//
-// qParams.put("key_type", pArgs.getInt(arg.KEY_TYPE.name()));
-//
-// Cursor cursor = getKeyEntries(qParams);
-// ArrayList<String> fPrints = new ArrayList<String>();
-// ArrayList<String> ids = new ArrayList<String>();
-// while (cursor.moveToNext()) {
-// if (LOCAL_LOGV)
-// Log.v(TAG, "adding key " + PGPHelper.getSmallFingerPrint(cursor.getLong(0)));
-// fPrints.add(PGPHelper.getSmallFingerPrint(cursor.getLong(0)));
-// ids.add(cursor.getString(1));
-// }
-// cursor.close();
-//
-// pReturn.putStringArrayList(ret.FINGERPRINTS.name(), fPrints);
-// pReturn.putStringArrayList(ret.USER_IDS.name(), ids);
-// return true;
-// }
-//
-// public boolean encryptWithPublicKey(Bundle pArgs, Bundle pReturn) {
-// if (!prepareArgs("encrypt_with_public_key", pArgs, pReturn)) {
-// return false;
-// }
-//
-// return encrypt(pArgs, pReturn);
-// }
-//
-// public boolean encryptWithPassphrase(Bundle pArgs, Bundle pReturn) {
-// if (!prepareArgs("encrypt_with_passphrase", pArgs, pReturn)) {
-// return false;
-// }
-//
-// return encrypt(pArgs, pReturn);
-//
-// }
-//
-// public boolean decrypt(Bundle pArgs, Bundle pReturn) {
-// if (!prepareArgs("decrypt", pArgs, pReturn)) {
-// return false;
-// }
-//
-// boolean isBlob = pArgs.containsKey(arg.BLOB.name());
-//
-// String passphrase = pArgs.getString(arg.SYMMETRIC_PASSPHRASE.name()) != null ? pArgs
-// .getString(arg.SYMMETRIC_PASSPHRASE.name()) : pArgs
-// .getString(arg.PRIVATE_KEY_PASSPHRASE.name());
-//
-// InputStream inStream = null;
-// if (isBlob) {
-// ContentResolver cr = getContentResolver();
-// try {
-// inStream = cr.openInputStream(Uri.parse(pArgs.getString(arg.BLOB.name())));
-// } catch (Exception e) {
-// Log.e(TAG, "... exception on opening blob", e);
-// }
-// } else {
-// inStream = new ByteArrayInputStream(pArgs.getString(arg.MESSAGE.name()).getBytes());
-// }
-//
-// InputData in = new InputData(inStream, 0); // XXX what size in second parameter?
-// OutputStream out = new ByteArrayOutputStream();
-// if (LOCAL_LOGV)
-// Log.v(TAG, "About to decrypt");
-// try {
-// PGPMain.decrypt(getBaseContext(), in, out, passphrase, null, // progress
-// pArgs.getString(arg.SYMMETRIC_PASSPHRASE.name()) != null // symmetric
-// );
-// } catch (Exception e) {
-// Log.e(TAG, "Exception in decrypt");
-// String msg = e.getMessage();
-// if (msg.equals(getBaseContext().getString(R.string.error_noSecretKeyFound))) {
-// pReturn.getStringArrayList(ret.ERRORS.name()).add("Cannot decrypt: " + msg);
-// pReturn.putInt(ret.ERROR.name(), error.NO_MATCHING_SECRET_KEY.shiftedOrdinal());
-// } else if (msg.equals(getBaseContext().getString(R.string.error_wrongPassPhrase))) {
-// pReturn.getStringArrayList(ret.ERRORS.name()).add(
-// "Cannot decrypt (" + arg.PRIVATE_KEY_PASSPHRASE.name()
-// + " wrong/missing): " + msg);
-// pReturn.putInt(ret.ERROR.name(),
-// error.PRIVATE_KEY_PASSPHRASE_WRONG.shiftedOrdinal());
-// } else {
-// pReturn.getStringArrayList(ret.ERRORS.name()).add(
-// "Internal failure (" + e.getClass() + ") in APG when decrypting: "
-// + msg);
-// pReturn.putInt(ret.ERROR.name(), error.APG_FAILURE.shiftedOrdinal());
-// }
-// return false;
-// }
-// if (LOCAL_LOGV)
-// Log.v(TAG, "... decrypted");
-//
-// if (isBlob) {
-// ContentResolver cr = getContentResolver();
-// try {
-// OutputStream outStream = cr.openOutputStream(Uri.parse(pArgs.getString(arg.BLOB
-// .name())));
-// writeToOutputStream(new ByteArrayInputStream(out.toString().getBytes()),
-// outStream);
-// outStream.close();
-// } catch (Exception e) {
-// Log.e(TAG, "... exception on writing blob", e);
-// }
-// } else {
-// pReturn.putString(ret.RESULT.name(), out.toString());
-// }
-// return true;
-// }
-//
-// };
-//}