Renaming APG to OpenPGP Keychain
@ -1,11 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.thialfihar.android.apg.demo"
|
||||
package="org.sufficientlysecure.keychain.demo"
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0" >
|
||||
|
||||
<uses-permission android:name="org.thialfihar.android.apg.permission.ACCESS_API" />
|
||||
<uses-permission android:name="org.thialfihar.android.apg.permission.ACCESS_KEYS" />
|
||||
<uses-permission android:name="org.sufficientlysecure.keychain.permission.ACCESS_API" />
|
||||
<uses-permission android:name="org.sufficientlysecure.keychain.permission.ACCESS_KEYS" />
|
||||
|
||||
<uses-sdk
|
||||
android:minSdkVersion="7"
|
@ -9,4 +9,4 @@
|
||||
|
||||
# Project target.
|
||||
target=android-15
|
||||
android.library.reference.1=../APG-API-Lib
|
||||
android.library.reference.1=../OpenPGP-Keychain-API-Lib
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 8.0 KiB |
@ -14,15 +14,16 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.demo;
|
||||
package org.sufficientlysecure.keychain.demo;
|
||||
|
||||
import org.thialfihar.android.apg.integration.ApgData;
|
||||
import org.thialfihar.android.apg.integration.ApgIntentHelper;
|
||||
import org.thialfihar.android.apg.service.IApgApiService;
|
||||
import org.thialfihar.android.apg.service.IApgKeyService;
|
||||
import org.thialfihar.android.apg.service.handler.IApgDecryptHandler;
|
||||
import org.thialfihar.android.apg.service.handler.IApgEncryptHandler;
|
||||
import org.thialfihar.android.apg.service.handler.IApgGetDecryptionKeyIdHandler;
|
||||
import org.sufficientlysecure.keychain.demo.R;
|
||||
import org.sufficientlysecure.keychain.integration.KeychainData;
|
||||
import org.sufficientlysecure.keychain.integration.KeychainIntentHelper;
|
||||
import org.sufficientlysecure.keychain.service.IKeychainApiService;
|
||||
import org.sufficientlysecure.keychain.service.IKeychainKeyService;
|
||||
import org.sufficientlysecure.keychain.service.handler.IKeychainDecryptHandler;
|
||||
import org.sufficientlysecure.keychain.service.handler.IKeychainEncryptHandler;
|
||||
import org.sufficientlysecure.keychain.service.handler.IKeychainGetDecryptionKeyIdHandler;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
@ -43,13 +44,13 @@ public class AidlDemoActivity extends Activity {
|
||||
TextView mCiphertextTextView;
|
||||
TextView mDataTextView;
|
||||
|
||||
ApgIntentHelper mApgIntentHelper;
|
||||
ApgData mApgData;
|
||||
KeychainIntentHelper mKeychainIntentHelper;
|
||||
KeychainData mKeychainData;
|
||||
|
||||
private IApgApiService service = null;
|
||||
private IKeychainApiService service = null;
|
||||
private ServiceConnection svcConn = new ServiceConnection() {
|
||||
public void onServiceConnected(ComponentName className, IBinder binder) {
|
||||
service = IApgApiService.Stub.asInterface(binder);
|
||||
service = IKeychainApiService.Stub.asInterface(binder);
|
||||
}
|
||||
|
||||
public void onServiceDisconnected(ComponentName className) {
|
||||
@ -68,17 +69,18 @@ public class AidlDemoActivity extends Activity {
|
||||
mCiphertextTextView = (TextView) findViewById(R.id.aidl_demo_ciphertext);
|
||||
mDataTextView = (TextView) findViewById(R.id.aidl_demo_data);
|
||||
|
||||
mApgIntentHelper = new ApgIntentHelper(mActivity);
|
||||
mApgData = new ApgData();
|
||||
mKeychainIntentHelper = new KeychainIntentHelper(mActivity);
|
||||
mKeychainData = new KeychainData();
|
||||
|
||||
bindService(new Intent(IApgApiService.class.getName()), svcConn, Context.BIND_AUTO_CREATE);
|
||||
bindService(new Intent(IKeychainApiService.class.getName()), svcConn,
|
||||
Context.BIND_AUTO_CREATE);
|
||||
}
|
||||
|
||||
public void encryptOnClick(View view) {
|
||||
byte[] inputBytes = mMessageTextView.getText().toString().getBytes();
|
||||
|
||||
try {
|
||||
service.encryptAsymmetric(inputBytes, null, true, 0, mApgData.getPublicKeys(), 7,
|
||||
service.encryptAsymmetric(inputBytes, null, true, 0, mKeychainData.getPublicKeys(), 7,
|
||||
encryptHandler);
|
||||
} catch (RemoteException e) {
|
||||
exceptionImplementation(-1, e.toString());
|
||||
@ -96,13 +98,13 @@ public class AidlDemoActivity extends Activity {
|
||||
}
|
||||
|
||||
private void updateView() {
|
||||
if (mApgData.getDecryptedData() != null) {
|
||||
mMessageTextView.setText(mApgData.getDecryptedData());
|
||||
if (mKeychainData.getDecryptedData() != null) {
|
||||
mMessageTextView.setText(mKeychainData.getDecryptedData());
|
||||
}
|
||||
if (mApgData.getEncryptedData() != null) {
|
||||
mCiphertextTextView.setText(mApgData.getEncryptedData());
|
||||
if (mKeychainData.getEncryptedData() != null) {
|
||||
mCiphertextTextView.setText(mKeychainData.getEncryptedData());
|
||||
}
|
||||
mDataTextView.setText(mApgData.toString());
|
||||
mDataTextView.setText(mKeychainData.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -117,7 +119,7 @@ public class AidlDemoActivity extends Activity {
|
||||
builder.setTitle("Exception!").setMessage(error).setPositiveButton("OK", null).show();
|
||||
}
|
||||
|
||||
private final IApgEncryptHandler.Stub encryptHandler = new IApgEncryptHandler.Stub() {
|
||||
private final IKeychainEncryptHandler.Stub encryptHandler = new IKeychainEncryptHandler.Stub() {
|
||||
|
||||
@Override
|
||||
public void onException(final int exceptionId, final String message) throws RemoteException {
|
||||
@ -132,7 +134,7 @@ public class AidlDemoActivity extends Activity {
|
||||
public void onSuccess(final byte[] outputBytes, String outputUri) throws RemoteException {
|
||||
runOnUiThread(new Runnable() {
|
||||
public void run() {
|
||||
mApgData.setEncryptedData(new String(outputBytes));
|
||||
mKeychainData.setEncryptedData(new String(outputBytes));
|
||||
updateView();
|
||||
}
|
||||
});
|
||||
@ -140,7 +142,7 @@ public class AidlDemoActivity extends Activity {
|
||||
|
||||
};
|
||||
|
||||
private final IApgDecryptHandler.Stub decryptHandler = new IApgDecryptHandler.Stub() {
|
||||
private final IKeychainDecryptHandler.Stub decryptHandler = new IKeychainDecryptHandler.Stub() {
|
||||
|
||||
@Override
|
||||
public void onException(final int exceptionId, final String message) throws RemoteException {
|
||||
@ -157,7 +159,7 @@ public class AidlDemoActivity extends Activity {
|
||||
boolean signatureUnknown) throws RemoteException {
|
||||
runOnUiThread(new Runnable() {
|
||||
public void run() {
|
||||
mApgData.setDecryptedData(new String(outputBytes));
|
||||
mKeychainData.setDecryptedData(new String(outputBytes));
|
||||
updateView();
|
||||
}
|
||||
});
|
||||
@ -166,7 +168,7 @@ public class AidlDemoActivity extends Activity {
|
||||
|
||||
};
|
||||
|
||||
private final IApgGetDecryptionKeyIdHandler.Stub helperHandler = new IApgGetDecryptionKeyIdHandler.Stub() {
|
||||
private final IKeychainGetDecryptionKeyIdHandler.Stub helperHandler = new IKeychainGetDecryptionKeyIdHandler.Stub() {
|
||||
|
||||
@Override
|
||||
public void onException(final int exceptionId, final String message) throws RemoteException {
|
||||
@ -191,18 +193,19 @@ public class AidlDemoActivity extends Activity {
|
||||
* @param view
|
||||
*/
|
||||
public void selectSecretKeyOnClick(View view) {
|
||||
mApgIntentHelper.selectSecretKey();
|
||||
mKeychainIntentHelper.selectSecretKey();
|
||||
}
|
||||
|
||||
public void selectEncryptionKeysOnClick(View view) {
|
||||
mApgIntentHelper.selectPublicKeys("user@example.com");
|
||||
mKeychainIntentHelper.selectPublicKeys("user@example.com");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
// this updates the mApgData object to the result of the methods
|
||||
boolean result = mApgIntentHelper.onActivityResult(requestCode, resultCode, data, mApgData);
|
||||
// this updates the mKeychainData object to the result of the methods
|
||||
boolean result = mKeychainIntentHelper.onActivityResult(requestCode, resultCode, data,
|
||||
mKeychainData);
|
||||
if (result) {
|
||||
updateView();
|
||||
}
|
@ -14,15 +14,16 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.demo;
|
||||
package org.sufficientlysecure.keychain.demo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.thialfihar.android.apg.integration.ApgData;
|
||||
import org.thialfihar.android.apg.integration.ApgIntentHelper;
|
||||
import org.thialfihar.android.apg.service.IApgKeyService;
|
||||
import org.thialfihar.android.apg.service.handler.IApgGetKeyringsHandler;
|
||||
import org.sufficientlysecure.keychain.demo.R;
|
||||
import org.sufficientlysecure.keychain.integration.KeychainData;
|
||||
import org.sufficientlysecure.keychain.integration.KeychainIntentHelper;
|
||||
import org.sufficientlysecure.keychain.service.IKeychainKeyService;
|
||||
import org.sufficientlysecure.keychain.service.handler.IKeychainGetKeyringsHandler;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
@ -43,16 +44,16 @@ public class AidlDemoActivity2 extends Activity {
|
||||
|
||||
TextView mKeyringsTextView;
|
||||
|
||||
ApgIntentHelper mApgIntentHelper;
|
||||
ApgData mApgData;
|
||||
KeychainIntentHelper mKeychainIntentHelper;
|
||||
KeychainData mKeychainData;
|
||||
|
||||
byte[] keysBytes;
|
||||
ArrayList<String> keysStrings;
|
||||
|
||||
private IApgKeyService service = null;
|
||||
private IKeychainKeyService service = null;
|
||||
private ServiceConnection svcConn = new ServiceConnection() {
|
||||
public void onServiceConnected(ComponentName className, IBinder binder) {
|
||||
service = IApgKeyService.Stub.asInterface(binder);
|
||||
service = IKeychainKeyService.Stub.asInterface(binder);
|
||||
}
|
||||
|
||||
public void onServiceDisconnected(ComponentName className) {
|
||||
@ -69,15 +70,16 @@ public class AidlDemoActivity2 extends Activity {
|
||||
|
||||
mKeyringsTextView = (TextView) findViewById(R.id.aidl_demo_keyrings);
|
||||
|
||||
mApgIntentHelper = new ApgIntentHelper(mActivity);
|
||||
mApgData = new ApgData();
|
||||
mKeychainIntentHelper = new KeychainIntentHelper(mActivity);
|
||||
mKeychainData = new KeychainData();
|
||||
|
||||
bindService(new Intent(IApgKeyService.class.getName()), svcConn, Context.BIND_AUTO_CREATE);
|
||||
bindService(new Intent(IKeychainKeyService.class.getName()), svcConn,
|
||||
Context.BIND_AUTO_CREATE);
|
||||
}
|
||||
|
||||
public void getKeyringsStringsOnClick(View view) {
|
||||
try {
|
||||
service.getPublicKeyRings(mApgData.getPublicKeys(), true, getKeyringsHandler);
|
||||
service.getPublicKeyRings(mKeychainData.getPublicKeys(), true, getKeyringsHandler);
|
||||
} catch (RemoteException e) {
|
||||
exceptionImplementation(-1, e.toString());
|
||||
}
|
||||
@ -85,7 +87,7 @@ public class AidlDemoActivity2 extends Activity {
|
||||
|
||||
public void getKeyringsBytesOnClick(View view) {
|
||||
try {
|
||||
service.getPublicKeyRings(mApgData.getPublicKeys(), false, getKeyringsHandler);
|
||||
service.getPublicKeyRings(mKeychainData.getPublicKeys(), false, getKeyringsHandler);
|
||||
} catch (RemoteException e) {
|
||||
exceptionImplementation(-1, e.toString());
|
||||
}
|
||||
@ -115,7 +117,7 @@ public class AidlDemoActivity2 extends Activity {
|
||||
builder.setTitle("Exception!").setMessage(error).setPositiveButton("OK", null).show();
|
||||
}
|
||||
|
||||
private final IApgGetKeyringsHandler.Stub getKeyringsHandler = new IApgGetKeyringsHandler.Stub() {
|
||||
private final IKeychainGetKeyringsHandler.Stub getKeyringsHandler = new IKeychainGetKeyringsHandler.Stub() {
|
||||
|
||||
@Override
|
||||
public void onException(final int exceptionId, final String message) throws RemoteException {
|
||||
@ -147,13 +149,14 @@ public class AidlDemoActivity2 extends Activity {
|
||||
};
|
||||
|
||||
public void selectEncryptionKeysOnClick(View view) {
|
||||
mApgIntentHelper.selectPublicKeys("user@example.com");
|
||||
mKeychainIntentHelper.selectPublicKeys("user@example.com");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
// this updates the mApgData object to the result of the methods
|
||||
boolean result = mApgIntentHelper.onActivityResult(requestCode, resultCode, data, mApgData);
|
||||
// this updates the mKeychainData object to the result of the methods
|
||||
boolean result = mKeychainIntentHelper.onActivityResult(requestCode, resultCode, data,
|
||||
mKeychainData);
|
||||
if (result) {
|
||||
updateView();
|
||||
}
|
@ -14,9 +14,9 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.demo;
|
||||
package org.sufficientlysecure.keychain.demo;
|
||||
|
||||
import org.thialfihar.android.apg.demo.R;
|
||||
import org.sufficientlysecure.keychain.demo.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
@ -14,12 +14,12 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.demo;
|
||||
package org.sufficientlysecure.keychain.demo;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.thialfihar.android.apg.demo.R;
|
||||
import org.thialfihar.android.apg.integration.ApgContentProviderHelper;
|
||||
import org.sufficientlysecure.keychain.demo.R;
|
||||
import org.sufficientlysecure.keychain.integration.KeychainContentProviderHelper;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
@ -33,7 +33,7 @@ public class ContentProviderDemoActivity extends Activity {
|
||||
TextView mCiphertextTextView;
|
||||
TextView mDataTextView;
|
||||
|
||||
ApgContentProviderHelper mApgContentProviderHelper;
|
||||
KeychainContentProviderHelper mKeychainContentProviderHelper;
|
||||
|
||||
/**
|
||||
* Instantiate View for this Activity
|
||||
@ -48,16 +48,16 @@ public class ContentProviderDemoActivity extends Activity {
|
||||
|
||||
mOutputTextView = (TextView) findViewById(R.id.content_provider_output);
|
||||
|
||||
mApgContentProviderHelper = new ApgContentProviderHelper(mActivity);
|
||||
mKeychainContentProviderHelper = new KeychainContentProviderHelper(mActivity);
|
||||
}
|
||||
|
||||
public void test1OnClick(View view) {
|
||||
long[] test = mApgContentProviderHelper.getPublicKeyringIdsByEmail("user@example.com");
|
||||
long[] test = mKeychainContentProviderHelper.getPublicKeyringIdsByEmail("user@example.com");
|
||||
mOutputTextView.setText(Arrays.toString(test));
|
||||
}
|
||||
|
||||
public void test2OnClick(View view) {
|
||||
boolean test = mApgContentProviderHelper.hasPublicKeyringByEmail("user@example.com");
|
||||
boolean test = mKeychainContentProviderHelper.hasPublicKeyringByEmail("user@example.com");
|
||||
if (test) {
|
||||
mOutputTextView.setText("true");
|
||||
} else {
|
@ -14,11 +14,11 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.demo;
|
||||
package org.sufficientlysecure.keychain.demo;
|
||||
|
||||
import org.thialfihar.android.apg.demo.R;
|
||||
import org.thialfihar.android.apg.integration.ApgData;
|
||||
import org.thialfihar.android.apg.integration.ApgIntentHelper;
|
||||
import org.sufficientlysecure.keychain.demo.R;
|
||||
import org.sufficientlysecure.keychain.integration.KeychainData;
|
||||
import org.sufficientlysecure.keychain.integration.KeychainIntentHelper;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
@ -33,8 +33,8 @@ public class IntentDemoActivity extends Activity {
|
||||
TextView mCiphertextTextView;
|
||||
TextView mDataTextView;
|
||||
|
||||
ApgIntentHelper mApgIntentHelper;
|
||||
ApgData mApgData;
|
||||
KeychainIntentHelper mKeychainIntentHelper;
|
||||
KeychainData mKeychainData;
|
||||
|
||||
/**
|
||||
* Instantiate View for this Activity
|
||||
@ -51,45 +51,46 @@ public class IntentDemoActivity extends Activity {
|
||||
mCiphertextTextView = (TextView) findViewById(R.id.intent_demo_ciphertext);
|
||||
mDataTextView = (TextView) findViewById(R.id.intent_demo_data);
|
||||
|
||||
mApgIntentHelper = new ApgIntentHelper(mActivity);
|
||||
mApgData = new ApgData();
|
||||
mKeychainIntentHelper = new KeychainIntentHelper(mActivity);
|
||||
mKeychainData = new KeychainData();
|
||||
}
|
||||
|
||||
public void createNewKeyOnClick(View view) {
|
||||
// mApgIntentHelper.createNewKey();
|
||||
mApgIntentHelper.createNewKey("test <user@example.com>", true, true);
|
||||
// mKeychainIntentHelper.createNewKey();
|
||||
mKeychainIntentHelper.createNewKey("test <user@example.com>", true, true);
|
||||
}
|
||||
|
||||
public void selectSecretKeyOnClick(View view) {
|
||||
mApgIntentHelper.selectSecretKey();
|
||||
mKeychainIntentHelper.selectSecretKey();
|
||||
}
|
||||
|
||||
public void selectEncryptionKeysOnClick(View view) {
|
||||
mApgIntentHelper.selectPublicKeys("user@example.com");
|
||||
mKeychainIntentHelper.selectPublicKeys("user@example.com");
|
||||
}
|
||||
|
||||
public void encryptOnClick(View view) {
|
||||
mApgIntentHelper.encrypt(mMessageTextView.getText().toString(), mApgData.getPublicKeys(),
|
||||
mApgData.getSecretKeyId(), false);
|
||||
mKeychainIntentHelper.encrypt(mMessageTextView.getText().toString(),
|
||||
mKeychainData.getPublicKeys(), mKeychainData.getSecretKeyId(), false);
|
||||
}
|
||||
|
||||
public void encryptAndReturnOnClick(View view) {
|
||||
mApgIntentHelper.encrypt(mMessageTextView.getText().toString(), mApgData.getPublicKeys(),
|
||||
mApgData.getSecretKeyId(), true);
|
||||
mKeychainIntentHelper.encrypt(mMessageTextView.getText().toString(),
|
||||
mKeychainData.getPublicKeys(), mKeychainData.getSecretKeyId(), true);
|
||||
}
|
||||
|
||||
public void decryptOnClick(View view) {
|
||||
mApgIntentHelper.decrypt(mCiphertextTextView.getText().toString(), false);
|
||||
mKeychainIntentHelper.decrypt(mCiphertextTextView.getText().toString(), false);
|
||||
}
|
||||
|
||||
public void decryptAndReturnOnClick(View view) {
|
||||
mApgIntentHelper.decrypt(mCiphertextTextView.getText().toString(), true);
|
||||
mKeychainIntentHelper.decrypt(mCiphertextTextView.getText().toString(), true);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
// this updates the mApgData object to the result of the methods
|
||||
boolean result = mApgIntentHelper.onActivityResult(requestCode, resultCode, data, mApgData);
|
||||
// this updates the mKeychainData object to the result of the methods
|
||||
boolean result = mKeychainIntentHelper.onActivityResult(requestCode, resultCode, data,
|
||||
mKeychainData);
|
||||
if (result) {
|
||||
updateView();
|
||||
}
|
||||
@ -99,12 +100,12 @@ public class IntentDemoActivity extends Activity {
|
||||
}
|
||||
|
||||
private void updateView() {
|
||||
if (mApgData.getDecryptedData() != null) {
|
||||
mMessageTextView.setText(mApgData.getDecryptedData());
|
||||
if (mKeychainData.getDecryptedData() != null) {
|
||||
mMessageTextView.setText(mKeychainData.getDecryptedData());
|
||||
}
|
||||
if (mApgData.getEncryptedData() != null) {
|
||||
mCiphertextTextView.setText(mApgData.getEncryptedData());
|
||||
if (mKeychainData.getEncryptedData() != null) {
|
||||
mCiphertextTextView.setText(mKeychainData.getEncryptedData());
|
||||
}
|
||||
mDataTextView.setText(mApgData.toString());
|
||||
mDataTextView.setText(mKeychainData.toString());
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.thialfihar.android.apg.integration"
|
||||
package="org.sufficientlysecure.keychain.integration"
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0" >
|
||||
|
@ -14,14 +14,12 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.integration;
|
||||
package org.sufficientlysecure.keychain.integration;
|
||||
|
||||
public class Constants {
|
||||
public static final String NAME = "apg";
|
||||
public static final String TAG = "Keychain Integration Lib";
|
||||
|
||||
public static final String TAG = "APG Integration Lib";
|
||||
|
||||
public static final String APG_PACKAGE_NAME = "org.thialfihar.android.apg";
|
||||
public static final String KEYCHAIN_PACKAGE_NAME = "org.sufficientlysecure.keychain";
|
||||
public static final int MIN_REQUIRED_VERSION = 50;
|
||||
|
||||
}
|
@ -15,7 +15,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.integration;
|
||||
package org.sufficientlysecure.keychain.integration;
|
||||
|
||||
import android.content.ContentUris;
|
||||
import android.content.Context;
|
||||
@ -23,8 +23,8 @@ import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.widget.Toast;
|
||||
|
||||
public class ApgContentProviderHelper {
|
||||
public static final String AUTHORITY = Constants.APG_PACKAGE_NAME;
|
||||
public class KeychainContentProviderHelper {
|
||||
public static final String AUTHORITY = Constants.KEYCHAIN_PACKAGE_NAME;
|
||||
|
||||
public static final Uri CONTENT_URI_PUBLIC_KEY_RING_BY_KEY_ID = Uri.parse("content://"
|
||||
+ AUTHORITY + "/key_rings/public/key_id/");
|
||||
@ -42,7 +42,7 @@ public class ApgContentProviderHelper {
|
||||
|
||||
private Context mContext;
|
||||
|
||||
public ApgContentProviderHelper(Context context) {
|
||||
public KeychainContentProviderHelper(Context context) {
|
||||
this.mContext = context;
|
||||
}
|
||||
|
@ -15,12 +15,12 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.integration;
|
||||
package org.sufficientlysecure.keychain.integration;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Arrays;
|
||||
|
||||
public class ApgData implements Serializable {
|
||||
public class KeychainData implements Serializable {
|
||||
private static final long serialVersionUID = 6314045536270848410L;
|
||||
protected long[] mPublicKeyIds = null;
|
||||
protected String[] mPublicUserIds = null;
|
@ -15,14 +15,14 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.integration;
|
||||
package org.sufficientlysecure.keychain.integration;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.Intent;
|
||||
import android.widget.Toast;
|
||||
|
||||
public class ApgIntentHelper {
|
||||
public class KeychainIntentHelper {
|
||||
|
||||
public static final String APG_INTENT_PREFIX = "org.thialfihar.android.apg.intent.";
|
||||
|
||||
@ -128,7 +128,7 @@ public class ApgIntentHelper {
|
||||
|
||||
private Activity activity;
|
||||
|
||||
public ApgIntentHelper(Activity activity) {
|
||||
public KeychainIntentHelper(Activity activity) {
|
||||
this.activity = activity;
|
||||
}
|
||||
|
||||
@ -343,7 +343,7 @@ public class ApgIntentHelper {
|
||||
* @param data
|
||||
* @return handled or not
|
||||
*/
|
||||
public boolean onActivityResult(int requestCode, int resultCode, Intent data, ApgData apgData) {
|
||||
public boolean onActivityResult(int requestCode, int resultCode, Intent data, KeychainData apgData) {
|
||||
|
||||
switch (requestCode) {
|
||||
case CREATE_KEY:
|
||||
@ -421,13 +421,13 @@ public class ApgIntentHelper {
|
||||
* ApgData with encryption keys and signature keys preselected
|
||||
* @return true when activity was found and executed successfully
|
||||
*/
|
||||
public boolean selectPublicKeys(String emails, ApgData apgData) {
|
||||
public boolean selectPublicKeys(String emails, KeychainData apgData) {
|
||||
Intent intent = new Intent(ACTION_SELECT_PUBLIC_KEYS);
|
||||
intent.putExtra(EXTRA_INTENT_VERSION, INTENT_VERSION);
|
||||
|
||||
long[] initialKeyIds = null;
|
||||
if (apgData == null || !apgData.hasPublicKeys()) {
|
||||
ApgContentProviderHelper cPHelper = new ApgContentProviderHelper(activity);
|
||||
KeychainContentProviderHelper cPHelper = new KeychainContentProviderHelper(activity);
|
||||
|
||||
initialKeyIds = cPHelper.getPublicKeyringIdsByEmail(emails);
|
||||
} else {
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.integration;
|
||||
package org.sufficientlysecure.keychain.integration;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.support.v4.app.Fragment;
|
||||
@ -22,7 +22,7 @@ import android.support.v4.app.Fragment;
|
||||
/**
|
||||
* ApgIntentHelper for the V4 Android compatibility package.
|
||||
*/
|
||||
public final class ApgIntentHelperSupportV4 extends ApgIntentHelper {
|
||||
public final class KeychainIntentHelperSupportV4 extends KeychainIntentHelper {
|
||||
|
||||
private final Fragment fragment;
|
||||
|
||||
@ -30,7 +30,7 @@ public final class ApgIntentHelperSupportV4 extends ApgIntentHelper {
|
||||
* @param fragment
|
||||
* Fragment to handle activity response.
|
||||
*/
|
||||
public ApgIntentHelperSupportV4(Fragment fragment) {
|
||||
public KeychainIntentHelperSupportV4(Fragment fragment) {
|
||||
super(fragment.getActivity());
|
||||
this.fragment = fragment;
|
||||
}
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.integration;
|
||||
package org.sufficientlysecure.keychain.integration;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Fragment;
|
||||
@ -25,7 +25,7 @@ import android.os.Build;
|
||||
* ApgIntentHelper for Android version 3.0 and beyond.
|
||||
*/
|
||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
||||
public final class ApgIntentHelperV30 extends ApgIntentHelper {
|
||||
public final class KeychainIntentHelperV30 extends KeychainIntentHelper {
|
||||
|
||||
private final Fragment fragment;
|
||||
|
||||
@ -33,7 +33,7 @@ public final class ApgIntentHelperV30 extends ApgIntentHelper {
|
||||
* @param fragment
|
||||
* Fragment to handle activity response.
|
||||
*/
|
||||
public ApgIntentHelperV30(Fragment fragment) {
|
||||
public KeychainIntentHelperV30(Fragment fragment) {
|
||||
super(fragment.getActivity());
|
||||
this.fragment = fragment;
|
||||
}
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.integration;
|
||||
package org.sufficientlysecure.keychain.integration;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
@ -25,16 +25,16 @@ import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.util.Log;
|
||||
|
||||
public class ApgServiceHelper {
|
||||
public class KeychainServiceHelper {
|
||||
|
||||
private final static String BLOB_URI = "content://org.thialfihar.android.apg.provider.apgserviceblobprovider";
|
||||
private final static String BLOB_URI = "content://org.sufficientlysecure.keychain.provider.apgserviceblobprovider";
|
||||
|
||||
private Context context;
|
||||
|
||||
public ApgServiceHelper(Context context) {
|
||||
public KeychainServiceHelper(Context context) {
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set up binary data to en/decrypt
|
||||
*
|
||||
@ -67,7 +67,7 @@ public class ApgServiceHelper {
|
||||
Log.e(Constants.TAG, "... error on writing buffer", e);
|
||||
}
|
||||
|
||||
// mArgs.putString("BLOB", contentUri.toString());
|
||||
// mArgs.putString("BLOB", contentUri.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -90,7 +90,7 @@ public class ApgServiceHelper {
|
||||
ContentResolver cr = context.getContentResolver();
|
||||
InputStream in = null;
|
||||
try {
|
||||
// in = cr.openInputStream(Uri.parse(mArgs.getString("BLOB")));
|
||||
// in = cr.openInputStream(Uri.parse(mArgs.getString("BLOB")));
|
||||
} catch (Exception e) {
|
||||
Log.e(Constants.TAG, "Could not return blob in result", e);
|
||||
}
|
@ -15,7 +15,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.integration;
|
||||
package org.sufficientlysecure.keychain.integration;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageInfo;
|
||||
@ -23,23 +23,24 @@ import android.content.pm.PackageManager.NameNotFoundException;
|
||||
|
||||
import android.widget.Toast;
|
||||
|
||||
public class ApgUtil {
|
||||
public class KeychainUtil {
|
||||
|
||||
/**
|
||||
* Check whether APG is installed and at a high enough version.
|
||||
* Check whether OpenPGP Keychain is installed and at a high enough version.
|
||||
*
|
||||
* @param context
|
||||
* @return whether a suitable version of APG was found
|
||||
*/
|
||||
public boolean isApgAvailable(Context context) {
|
||||
try {
|
||||
PackageInfo pi = context.getPackageManager().getPackageInfo(Constants.APG_PACKAGE_NAME,
|
||||
0);
|
||||
PackageInfo pi = context.getPackageManager().getPackageInfo(
|
||||
Constants.KEYCHAIN_PACKAGE_NAME, 0);
|
||||
if (pi.versionCode >= Constants.MIN_REQUIRED_VERSION) {
|
||||
return true;
|
||||
} else {
|
||||
Toast.makeText(context,
|
||||
"This APG version is not supported! Please update to a newer one!",
|
||||
Toast.makeText(
|
||||
context,
|
||||
"This OpenPGP Keychain version is not supported! Please update to a newer one!",
|
||||
Toast.LENGTH_LONG).show();
|
||||
}
|
||||
} catch (NameNotFoundException e) {
|
@ -14,17 +14,17 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.service;
|
||||
package org.sufficientlysecure.keychain.service;
|
||||
|
||||
import org.thialfihar.android.apg.service.handler.IApgEncryptHandler;
|
||||
import org.thialfihar.android.apg.service.handler.IApgDecryptHandler;
|
||||
import org.thialfihar.android.apg.service.handler.IApgGetDecryptionKeyIdHandler;
|
||||
import org.sufficientlysecure.keychain.service.handler.IKeychainEncryptHandler;
|
||||
import org.sufficientlysecure.keychain.service.handler.IKeychainDecryptHandler;
|
||||
import org.sufficientlysecure.keychain.service.handler.IKeychainGetDecryptionKeyIdHandler;
|
||||
|
||||
/**
|
||||
* All methods are oneway, which means they are asynchronous and non-blocking.
|
||||
* Results are returned into given Handler, which has to be implemented on client side.
|
||||
*/
|
||||
interface IApgApiService {
|
||||
interface IKeychainApiService {
|
||||
|
||||
/**
|
||||
* Encrypt
|
||||
@ -45,12 +45,12 @@ interface IApgApiService {
|
||||
* 7: AES-128, 8: AES-192, 9: AES-256, 4: Blowfish, 10: Twofish, 3: CAST5,
|
||||
* 6: DES, 2: Triple DES, 1: IDEA
|
||||
* @param handler
|
||||
* Results are returned to this IApgEncryptDecryptHandler Handler
|
||||
* Results are returned to this IKeychainEncryptDecryptHandler Handler
|
||||
* to onSuccessEncrypt(in byte[] output), after successful encryption
|
||||
*/
|
||||
oneway void encryptAsymmetric(in byte[] inputBytes, in String inputUri, in boolean useAsciiArmor,
|
||||
in int compression, in long[] encryptionKeyIds, in int symmetricEncryptionAlgorithm,
|
||||
in IApgEncryptHandler handler);
|
||||
in IKeychainEncryptHandler handler);
|
||||
|
||||
/**
|
||||
* Same as encryptAsymmetric but using a passphrase for symmetric encryption
|
||||
@ -60,7 +60,7 @@ interface IApgApiService {
|
||||
*/
|
||||
oneway void encryptSymmetric(in byte[] inputBytes, in String inputUri, in boolean useAsciiArmor,
|
||||
in int compression, in String encryptionPassphrase, in int symmetricEncryptionAlgorithm,
|
||||
in IApgEncryptHandler handler);
|
||||
in IKeychainEncryptHandler handler);
|
||||
|
||||
/**
|
||||
* Encrypt and sign
|
||||
@ -90,14 +90,14 @@ interface IApgApiService {
|
||||
* @param signaturePassphrase
|
||||
* Passphrase to unlock signature key
|
||||
* @param handler
|
||||
* Results are returned to this IApgEncryptDecryptHandler Handler
|
||||
* Results are returned to this IKeychainEncryptDecryptHandler Handler
|
||||
* to onSuccessEncrypt(in byte[] output), after successful encryption and signing
|
||||
*/
|
||||
oneway void encryptAndSignAsymmetric(in byte[] inputBytes, in String inputUri,
|
||||
in boolean useAsciiArmor, in int compression, in long[] encryptionKeyIds,
|
||||
in int symmetricEncryptionAlgorithm, in long signatureKeyId, in int signatureHashAlgorithm,
|
||||
in boolean signatureForceV3, in String signaturePassphrase,
|
||||
in IApgEncryptHandler handler);
|
||||
in IKeychainEncryptHandler handler);
|
||||
|
||||
/**
|
||||
* Same as encryptAndSignAsymmetric but using a passphrase for symmetric encryption
|
||||
@ -109,7 +109,7 @@ interface IApgApiService {
|
||||
in boolean useAsciiArmor, in int compression, in String encryptionPassphrase,
|
||||
in int symmetricEncryptionAlgorithm, in long signatureKeyId, in int signatureHashAlgorithm,
|
||||
in boolean signatureForceV3, in String signaturePassphrase,
|
||||
in IApgEncryptHandler handler);
|
||||
in IKeychainEncryptHandler handler);
|
||||
|
||||
/**
|
||||
* Decrypts and verifies given input bytes. If no signature is present this method
|
||||
@ -125,7 +125,7 @@ interface IApgApiService {
|
||||
* Handler where to return results to after successful encryption
|
||||
*/
|
||||
oneway void decryptAndVerifyAsymmetric(in byte[] inputBytes, in String inputUri,
|
||||
in String keyPassphrase, in IApgDecryptHandler handler);
|
||||
in String keyPassphrase, in IKeychainDecryptHandler handler);
|
||||
|
||||
/**
|
||||
* Same as decryptAndVerifyAsymmetric but for symmetric decryption.
|
||||
@ -134,13 +134,13 @@ interface IApgApiService {
|
||||
* Passphrase to decrypt
|
||||
*/
|
||||
oneway void decryptAndVerifySymmetric(in byte[] inputBytes, in String inputUri,
|
||||
in String encryptionPassphrase, in IApgDecryptHandler handler);
|
||||
in String encryptionPassphrase, in IKeychainDecryptHandler handler);
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
oneway void getDecryptionKeyId(in byte[] inputBytes, in String inputUri,
|
||||
in IApgGetDecryptionKeyIdHandler handler);
|
||||
in IKeychainGetDecryptionKeyIdHandler handler);
|
||||
|
||||
|
||||
}
|
@ -14,19 +14,19 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.service;
|
||||
package org.sufficientlysecure.keychain.service;
|
||||
|
||||
import org.thialfihar.android.apg.service.handler.IApgGetKeyringsHandler;
|
||||
import org.sufficientlysecure.keychain.service.handler.IKeychainGetKeyringsHandler;
|
||||
|
||||
/**
|
||||
* All methods are oneway, which means they are asynchronous and non-blocking.
|
||||
* Results are returned into given Handler, which has to be implemented on client side.
|
||||
*/
|
||||
interface IApgKeyService {
|
||||
interface IKeychainKeyService {
|
||||
|
||||
oneway void getPublicKeyRings(in long[] masterKeyIds, in boolean asAsciiArmoredStringArray,
|
||||
in IApgGetKeyringsHandler handler);
|
||||
in IKeychainGetKeyringsHandler handler);
|
||||
|
||||
oneway void getSecretKeyRings(in long[] masterKeyIds, in boolean asAsciiArmoredStringArray,
|
||||
in IApgGetKeyringsHandler handler);
|
||||
in IKeychainGetKeyringsHandler handler);
|
||||
}
|
@ -14,9 +14,9 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.service.handler;
|
||||
package org.sufficientlysecure.keychain.service.handler;
|
||||
|
||||
interface IApgDecryptHandler {
|
||||
interface IKeychainDecryptHandler {
|
||||
|
||||
oneway void onSuccess(in byte[] outputBytes, in String outputUri, in boolean signature,
|
||||
in long signatureKeyId, in String signatureUserId, in boolean signatureSuccess,
|
@ -14,9 +14,9 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.service.handler;
|
||||
package org.sufficientlysecure.keychain.service.handler;
|
||||
|
||||
interface IApgEncryptHandler {
|
||||
interface IKeychainEncryptHandler {
|
||||
/**
|
||||
* Either output or streamUri is given. One of them is null
|
||||
*
|
@ -14,9 +14,9 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.service.handler;
|
||||
package org.sufficientlysecure.keychain.service.handler;
|
||||
|
||||
interface IApgGetDecryptionKeyIdHandler {
|
||||
interface IKeychainGetDecryptionKeyIdHandler {
|
||||
|
||||
oneway void onSuccess(in long secretKeyId, in boolean symmetric);
|
||||
|
@ -14,9 +14,9 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.service.handler;
|
||||
package org.sufficientlysecure.keychain.service.handler;
|
||||
|
||||
interface IApgGetKeyringsHandler {
|
||||
interface IKeychainGetKeyringsHandler {
|
||||
/**
|
||||
* Either outputBytes or outputString is given. One of them is null
|
||||
*
|
@ -14,9 +14,9 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.service.handler;
|
||||
package org.sufficientlysecure.keychain.service.handler;
|
||||
|
||||
interface IApgSignHandler {
|
||||
interface IKeychainSignHandler {
|
||||
/**
|
||||
* Either output or streamUri is given. One of them is null
|
||||
*
|
@ -14,9 +14,9 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.thialfihar.android.apg.service.handler;
|
||||
package org.sufficientlysecure.keychain.service.handler;
|
||||
|
||||
interface IApgVerifyHandler {
|
||||
interface IKeychainVerifyHandler {
|
||||
|
||||
oneway void onSuccess(in boolean signature, in long signatureKeyId,
|
||||
in String signatureUserId, in boolean signatureSuccess, in boolean signatureUnknown);
|
@ -16,7 +16,7 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.thialfihar.android.apg"
|
||||
package="org.sufficientlysecure.keychain"
|
||||
android:installLocation="auto"
|
||||
android:versionCode="20000"
|
||||
android:versionName="2.0" >
|
||||
@ -68,26 +68,26 @@
|
||||
<uses-permission android:name="com.fsck.k9.permission.READ_ATTACHMENT" />
|
||||
|
||||
<permission-group
|
||||
android:name="org.thialfihar.android.apg.permission-group.APG"
|
||||
android:name="org.sufficientlysecure.keychain.permission-group.keychain"
|
||||
android:description="@string/permission_group_description"
|
||||
android:icon="@drawable/icon"
|
||||
android:label="@string/permission_group_label" />
|
||||
|
||||
<permission
|
||||
android:name="org.thialfihar.android.apg.permission.ACCESS_KEYS"
|
||||
android:name="org.sufficientlysecure.keychain.permission.ACCESS_KEYS"
|
||||
android:description="@string/permission_access_keys_description"
|
||||
android:label="@string/permission_access_keys_label"
|
||||
android:permissionGroup="org.thialfihar.android.apg.permission-group.APG"
|
||||
android:permissionGroup="org.sufficientlysecure.keychain.permission-group.keychain"
|
||||
android:protectionLevel="dangerous" />
|
||||
<permission
|
||||
android:name="org.thialfihar.android.apg.permission.ACCESS_API"
|
||||
android:name="org.sufficientlysecure.keychain.permission.ACCESS_API"
|
||||
android:description="@string/permission_access_api_description"
|
||||
android:label="@string/permission_access_api_label"
|
||||
android:permissionGroup="org.thialfihar.android.apg.permission-group.APG"
|
||||
android:permissionGroup="org.sufficientlysecure.keychain.permission-group.keychain"
|
||||
android:protectionLevel="dangerous" />
|
||||
|
||||
<application
|
||||
android:name=".ApgApplication"
|
||||
android:name=".KeychainApplication"
|
||||
android:hardwareAccelerated="true"
|
||||
android:icon="@drawable/icon"
|
||||
android:label="@string/app_name"
|
||||
@ -137,8 +137,8 @@
|
||||
android:uiOptions="splitActionBarWhenNarrow"
|
||||
android:windowSoftInputMode="stateHidden" >
|
||||
<intent-filter>
|
||||
<action android:name="org.thialfihar.android.apg.intent.CREATE_KEY" />
|
||||
<action android:name="org.thialfihar.android.apg.intent.EDIT_KEY" />
|
||||
<action android:name="org.sufficientlysecure.keychain.action.CREATE_KEY" />
|
||||
<action android:name="org.sufficientlysecure.keychain.action.EDIT_KEY" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
@ -150,7 +150,7 @@
|
||||
android:launchMode="singleTop"
|
||||
android:uiOptions="splitActionBarWhenNarrow" >
|
||||
<intent-filter>
|
||||
<action android:name="org.thialfihar.android.apg.intent.SELECT_PUBLIC_KEYS" />
|
||||
<action android:name="org.sufficientlysecure.keychain.action.SELECT_PUBLIC_KEYS" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
@ -168,7 +168,7 @@
|
||||
android:label="@string/title_selectSignature"
|
||||
android:launchMode="singleTop" >
|
||||
<intent-filter>
|
||||
<action android:name="org.thialfihar.android.apg.intent.SELECT_SECRET_KEY" />
|
||||
<action android:name="org.sufficientlysecure.keychain.action.SELECT_SECRET_KEY" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
@ -189,10 +189,10 @@
|
||||
|
||||
<!-- APG's own Actions -->
|
||||
<intent-filter>
|
||||
<action android:name="org.thialfihar.android.apg.intent.ENCRYPT" />
|
||||
<action android:name="org.thialfihar.android.apg.intent.ENCRYPT_FILE" />
|
||||
<action android:name="org.thialfihar.android.apg.intent.ENCRYPT_AND_RETURN" />
|
||||
<action android:name="org.thialfihar.android.apg.intent.GENERATE_SIGNATURE" />
|
||||
<action android:name="org.sufficientlysecure.keychain.action.ENCRYPT" />
|
||||
<action android:name="org.sufficientlysecure.keychain.action.ENCRYPT_FILE" />
|
||||
<action android:name="org.sufficientlysecure.keychain.action.ENCRYPT_AND_RETURN" />
|
||||
<action android:name="org.sufficientlysecure.keychain.action.GENERATE_SIGNATURE" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
|
||||
@ -216,9 +216,9 @@
|
||||
|
||||
<!-- APG's own Actions -->
|
||||
<intent-filter>
|
||||
<action android:name="org.thialfihar.android.apg.intent.DECRYPT" />
|
||||
<action android:name="org.thialfihar.android.apg.intent.DECRYPT_FILE" />
|
||||
<action android:name="org.thialfihar.android.apg.intent.DECRYPT_AND_RETURN" />
|
||||
<action android:name="org.sufficientlysecure.keychain.action.DECRYPT" />
|
||||
<action android:name="org.sufficientlysecure.keychain.action.DECRYPT_FILE" />
|
||||
<action android:name="org.sufficientlysecure.keychain.action.DECRYPT_AND_RETURN" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
|
||||
@ -299,14 +299,14 @@
|
||||
android:configChanges="orientation|screenSize|keyboardHidden|keyboard"
|
||||
android:label="@string/title_signKey" />
|
||||
<activity
|
||||
android:name="org.thialfihar.android.apg.ui.ImportKeysActivity"
|
||||
android:name=".ui.ImportKeysActivity"
|
||||
android:configChanges="orientation|screenSize|keyboardHidden|keyboard"
|
||||
android:label="@string/title_importKeys"
|
||||
android:uiOptions="splitActionBarWhenNarrow" >
|
||||
|
||||
<!-- APG's own Actions -->
|
||||
<intent-filter android:label="@string/intent_import_key" >
|
||||
<action android:name="org.thialfihar.android.apg.intent.IMPORT" />
|
||||
<action android:name="org.sufficientlysecure.keychain.action.IMPORT" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
|
||||
@ -314,9 +314,9 @@
|
||||
</intent-filter>
|
||||
<!-- IMPORT again without mimeType to also allow data only without filename -->
|
||||
<intent-filter android:label="@string/intent_import_key" >
|
||||
<action android:name="org.thialfihar.android.apg.intent.IMPORT" />
|
||||
<action android:name="org.thialfihar.android.apg.intent.IMPORT_FROM_QR_CODE" />
|
||||
<action android:name="org.thialfihar.android.apg.intent.IMPORT_FROM_NFC" />
|
||||
<action android:name="org.sufficientlysecure.keychain.action.IMPORT" />
|
||||
<action android:name="org.sufficientlysecure.keychain.action.IMPORT_FROM_QR_CODE" />
|
||||
<action android:name="org.sufficientlysecure.keychain.action.IMPORT_FROM_NFC" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
@ -365,12 +365,12 @@
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name="org.thialfihar.android.apg.ui.ShareNfcBeamActivity"
|
||||
android:name=".ui.ShareNfcBeamActivity"
|
||||
android:label="@string/title_shareByNfc"
|
||||
android:launchMode="singleTop"
|
||||
android:uiOptions="splitActionBarWhenNarrow" >
|
||||
<intent-filter>
|
||||
<action android:name="org.thialfihar.android.apg.intent.SHARE_KEYRING_WITH_NFC" />
|
||||
<action android:name="org.sufficientlysecure.keychain.action.SHARE_KEYRING_WITH_NFC" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
@ -381,13 +381,13 @@
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
|
||||
<data android:mimeType="application/org.thialfihar.android.apg" />
|
||||
<data android:mimeType="application/org.sufficientlysecure.keychain" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name="org.thialfihar.android.apg.ui.ShareActivity" >
|
||||
<activity android:name=".ui.ShareActivity" >
|
||||
<intent-filter>
|
||||
<action android:name="org.thialfihar.android.apg.intent.SHARE_KEYRING" />
|
||||
<action android:name="org.thialfihar.android.apg.intent.SHARE_KEYRING_WITH_QR_CODE" />
|
||||
<action android:name="org.sufficientlysecure.keychain.action.SHARE_KEYRING" />
|
||||
<action android:name="org.sufficientlysecure.keychain.action.SHARE_KEYRING_WITH_QR_CODE" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
@ -397,15 +397,15 @@
|
||||
android:label="@string/title_help" />
|
||||
|
||||
<service android:name=".service.PassphraseCacheService" />
|
||||
<service android:name=".service.ApgIntentService" />
|
||||
<service android:name="org.sufficientlysecure.keychain.service.KeychainIntentService" />
|
||||
<service
|
||||
android:name="org.thialfihar.android.apg.service.ApgApiService"
|
||||
android:name="org.sufficientlysecure.keychain.service.KeychainApiService"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
android:permission="org.thialfihar.android.apg.permission.ACCESS_API"
|
||||
android:permission="org.sufficientlysecure.keychain.permission.ACCESS_API"
|
||||
android:process=":remoteapi" >
|
||||
<intent-filter>
|
||||
<action android:name="org.thialfihar.android.apg.service.IApgApiService" />
|
||||
<action android:name="org.sufficientlysecure.keychain.service.IApgApiService" />
|
||||
</intent-filter>
|
||||
|
||||
<meta-data
|
||||
@ -413,13 +413,13 @@
|
||||
android:value="3" />
|
||||
</service>
|
||||
<service
|
||||
android:name="org.thialfihar.android.apg.service.ApgKeyService"
|
||||
android:name="org.sufficientlysecure.keychain.service.KeychainKeyService"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
android:permission="org.thialfihar.android.apg.permission.ACCESS_KEYS"
|
||||
android:permission="org.sufficientlysecure.keychain.permission.ACCESS_KEYS"
|
||||
android:process=":remotekeys" >
|
||||
<intent-filter>
|
||||
<action android:name="org.thialfihar.android.apg.service.IApgKeyService" />
|
||||
<action android:name="org.sufficientlysecure.keychain.service.IApgKeyService" />
|
||||
</intent-filter>
|
||||
|
||||
<meta-data
|
||||
@ -428,20 +428,20 @@
|
||||
</service>
|
||||
|
||||
<provider
|
||||
android:name=".provider.ApgProviderInternal"
|
||||
android:authorities="org.thialfihar.android.apg.internal"
|
||||
android:name="org.sufficientlysecure.keychain.provider.KeychainProviderInternal"
|
||||
android:authorities="org.sufficientlysecure.keychain.internal"
|
||||
android:exported="false" />
|
||||
<provider
|
||||
android:name=".provider.ApgProviderExternal"
|
||||
android:authorities="org.thialfihar.android.apg"
|
||||
android:name="org.sufficientlysecure.keychain.provider.KeychainProviderExternal"
|
||||
android:authorities="org.sufficientlysecure.keychain"
|
||||
android:exported="true"
|
||||
android:readPermission="org.thialfihar.android.apg.permission.ACCESS_API" />
|
||||
android:readPermission="org.sufficientlysecure.keychain.permission.ACCESS_API" />
|
||||
|
||||
<!-- TODO: authority! -->
|
||||
<provider
|
||||
android:name=".provider.ApgServiceBlobProvider"
|
||||
android:authorities="org.thialfihar.android.apg.provider.apgserviceblobprovider"
|
||||
android:permission="org.thialfihar.android.apg.permission.ACCESS_API" />
|
||||
android:name="org.sufficientlysecure.keychain.provider.KeychainServiceBlobProvider"
|
||||
android:authorities="org.sufficientlysecure.keychain.provider.apgserviceblobprovider"
|
||||
android:permission="org.sufficientlysecure.keychain.permission.ACCESS_API" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
Before Width: | Height: | Size: 144 B After Width: | Height: | Size: 144 B |
Before Width: | Height: | Size: 138 B After Width: | Height: | Size: 138 B |
Before Width: | Height: | Size: 144 B After Width: | Height: | Size: 144 B |
Before Width: | Height: | Size: 135 B After Width: | Height: | Size: 135 B |
Before Width: | Height: | Size: 134 B After Width: | Height: | Size: 134 B |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 146 B After Width: | Height: | Size: 146 B |
Before Width: | Height: | Size: 145 B After Width: | Height: | Size: 145 B |
Before Width: | Height: | Size: 192 B After Width: | Height: | Size: 192 B |
Before Width: | Height: | Size: 146 B After Width: | Height: | Size: 146 B |
Before Width: | Height: | Size: 146 B After Width: | Height: | Size: 146 B |
Before Width: | Height: | Size: 139 B After Width: | Height: | Size: 139 B |
Before Width: | Height: | Size: 133 B After Width: | Height: | Size: 133 B |
Before Width: | Height: | Size: 155 B After Width: | Height: | Size: 155 B |
Before Width: | Height: | Size: 145 B After Width: | Height: | Size: 145 B |
Before Width: | Height: | Size: 104 B After Width: | Height: | Size: 104 B |
Before Width: | Height: | Size: 102 B After Width: | Height: | Size: 102 B |
Before Width: | Height: | Size: 112 B After Width: | Height: | Size: 112 B |
Before Width: | Height: | Size: 108 B After Width: | Height: | Size: 108 B |
Before Width: | Height: | Size: 110 B After Width: | Height: | Size: 110 B |
Before Width: | Height: | Size: 108 B After Width: | Height: | Size: 108 B |
Before Width: | Height: | Size: 149 B After Width: | Height: | Size: 149 B |
Before Width: | Height: | Size: 145 B After Width: | Height: | Size: 145 B |
Before Width: | Height: | Size: 147 B After Width: | Height: | Size: 147 B |
Before Width: | Height: | Size: 147 B After Width: | Height: | Size: 147 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 602 B After Width: | Height: | Size: 602 B |
Before Width: | Height: | Size: 546 B After Width: | Height: | Size: 546 B |
Before Width: | Height: | Size: 713 B After Width: | Height: | Size: 713 B |
Before Width: | Height: | Size: 737 B After Width: | Height: | Size: 737 B |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 144 B After Width: | Height: | Size: 144 B |
Before Width: | Height: | Size: 148 B After Width: | Height: | Size: 148 B |
Before Width: | Height: | Size: 467 B After Width: | Height: | Size: 467 B |
Before Width: | Height: | Size: 505 B After Width: | Height: | Size: 505 B |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |