diff options
author | Dominik Schürmann <dominik@dominikschuermann.de> | 2015-05-05 21:46:01 +0200 |
---|---|---|
committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2015-05-05 21:46:01 +0200 |
commit | 76ce94e1abba20232a09c8bdc497ced497b344a3 (patch) | |
tree | 188f15afd2221302c2a362c4ddfeddb17e405b1f | |
parent | 87dc44e85be2638288966aaa757b369c2ce18c8e (diff) | |
download | openpgp-api-76ce94e1abba20232a09c8bdc497ced497b344a3.tar.gz openpgp-api-76ce94e1abba20232a09c8bdc497ced497b344a3.tar.bz2 openpgp-api-76ce94e1abba20232a09c8bdc497ced497b344a3.zip |
Restructure for jcenter publish
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | README.md | 15 | ||||
-rw-r--r-- | build.gradle | 32 | ||||
-rw-r--r-- | example/.gitignore | 33 | ||||
-rw-r--r-- | example/build.gradle | 52 | ||||
-rw-r--r-- | example/ic_launcher-web.png | bin | 0 -> 23512 bytes | |||
-rw-r--r-- | example/src/main/AndroidManifest.xml | 24 | ||||
-rw-r--r-- | example/src/main/java/org/openintents/openpgp/example/BaseActivity.java | 74 | ||||
-rw-r--r-- | example/src/main/java/org/openintents/openpgp/example/Constants.java | 21 | ||||
-rw-r--r-- | example/src/main/java/org/openintents/openpgp/example/OpenPgpApiActivity.java | 496 | ||||
-rw-r--r-- | example/src/main/res/drawable-hdpi/ic_launcher.png | bin | 0 -> 2626 bytes | |||
-rw-r--r-- | example/src/main/res/drawable-mdpi/ic_launcher.png | bin | 0 -> 1732 bytes | |||
-rw-r--r-- | example/src/main/res/drawable-xhdpi/ic_launcher.png | bin | 0 -> 3517 bytes | |||
-rw-r--r-- | example/src/main/res/drawable-xxhdpi/ic_launcher.png | bin | 0 -> 5717 bytes | |||
-rw-r--r-- | example/src/main/res/layout/openpgp_provider.xml | 190 | ||||
-rw-r--r-- | example/src/main/res/xml/base_preference.xml | 16 | ||||
-rw-r--r-- | example/src/main/res/xml/intent_preference.xml | 30 | ||||
-rw-r--r-- | gradle/wrapper/gradle-wrapper.jar | bin | 51018 -> 52141 bytes | |||
-rw-r--r-- | gradle/wrapper/gradle-wrapper.properties | 4 | ||||
-rw-r--r-- | openpgp-api/.gitignore | 33 | ||||
-rw-r--r-- | openpgp-api/build.gradle | 28 | ||||
-rw-r--r-- | openpgp-api/src/main/AndroidManifest.xml (renamed from src/main/AndroidManifest.xml) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/aidl/org/openintents/openpgp/IOpenPgpService.aidl (renamed from src/main/aidl/org/openintents/openpgp/IOpenPgpService.aidl) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/java/org/openintents/openpgp/OpenPgpError.java (renamed from src/main/java/org/openintents/openpgp/OpenPgpError.java) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/java/org/openintents/openpgp/OpenPgpMetadata.java (renamed from src/main/java/org/openintents/openpgp/OpenPgpMetadata.java) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/java/org/openintents/openpgp/OpenPgpSignatureResult.java (renamed from src/main/java/org/openintents/openpgp/OpenPgpSignatureResult.java) | 1 | ||||
-rw-r--r-- | openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpApi.java (renamed from src/main/java/org/openintents/openpgp/util/OpenPgpApi.java) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpAppPreference.java (renamed from src/main/java/org/openintents/openpgp/util/OpenPgpAppPreference.java) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpKeyPreference.java (renamed from src/main/java/org/openintents/openpgp/util/OpenPgpKeyPreference.java) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpServiceConnection.java (renamed from src/main/java/org/openintents/openpgp/util/OpenPgpServiceConnection.java) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpUtils.java (renamed from src/main/java/org/openintents/openpgp/util/OpenPgpUtils.java) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/java/org/openintents/openpgp/util/ParcelFileDescriptorUtil.java (renamed from src/main/java/org/openintents/openpgp/util/ParcelFileDescriptorUtil.java) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/res/drawable-hdpi/ic_action_cancel_launchersize.png (renamed from src/main/res/drawable-hdpi/ic_action_cancel_launchersize.png) | bin | 1520 -> 1520 bytes | |||
-rw-r--r-- | openpgp-api/src/main/res/drawable-hdpi/ic_action_cancel_launchersize_light.png (renamed from src/main/res/drawable-hdpi/ic_action_cancel_launchersize_light.png) | bin | 1940 -> 1940 bytes | |||
-rw-r--r-- | openpgp-api/src/main/res/drawable-mdpi/ic_action_cancel_launchersize.png (renamed from src/main/res/drawable-mdpi/ic_action_cancel_launchersize.png) | bin | 1032 -> 1032 bytes | |||
-rw-r--r-- | openpgp-api/src/main/res/drawable-mdpi/ic_action_cancel_launchersize_light.png (renamed from src/main/res/drawable-mdpi/ic_action_cancel_launchersize_light.png) | bin | 1098 -> 1098 bytes | |||
-rw-r--r-- | openpgp-api/src/main/res/drawable-xhdpi/ic_action_cancel_launchersize.png (renamed from src/main/res/drawable-xhdpi/ic_action_cancel_launchersize.png) | bin | 1570 -> 1570 bytes | |||
-rw-r--r-- | openpgp-api/src/main/res/drawable-xhdpi/ic_action_cancel_launchersize_light.png (renamed from src/main/res/drawable-xhdpi/ic_action_cancel_launchersize_light.png) | bin | 2039 -> 2039 bytes | |||
-rw-r--r-- | openpgp-api/src/main/res/drawable-xxhdpi/ic_action_cancel_launchersize.png (renamed from src/main/res/drawable-xxhdpi/ic_action_cancel_launchersize.png) | bin | 2345 -> 2345 bytes | |||
-rw-r--r-- | openpgp-api/src/main/res/drawable-xxhdpi/ic_action_cancel_launchersize_light.png (renamed from src/main/res/drawable-xxhdpi/ic_action_cancel_launchersize_light.png) | bin | 2404 -> 2404 bytes | |||
-rw-r--r-- | openpgp-api/src/main/res/values-cs/strings.xml (renamed from src/main/res/values-cs/strings.xml) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/res/values-de/strings.xml (renamed from src/main/res/values-de/strings.xml) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/res/values-es/strings.xml (renamed from src/main/res/values-es/strings.xml) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/res/values-et/strings.xml (renamed from src/main/res/values-et/strings.xml) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/res/values-fi/strings.xml (renamed from src/main/res/values-fi/strings.xml) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/res/values-fr/strings.xml (renamed from src/main/res/values-fr/strings.xml) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/res/values-is/strings.xml (renamed from src/main/res/values-is/strings.xml) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/res/values-it/strings.xml (renamed from src/main/res/values-it/strings.xml) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/res/values-ja/strings.xml (renamed from src/main/res/values-ja/strings.xml) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/res/values-nl/strings.xml (renamed from src/main/res/values-nl/strings.xml) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/res/values-pl/strings.xml (renamed from src/main/res/values-pl/strings.xml) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/res/values-pt/strings.xml (renamed from src/main/res/values-pt/strings.xml) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/res/values-ru/strings.xml (renamed from src/main/res/values-ru/strings.xml) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/res/values-sl/strings.xml (renamed from src/main/res/values-sl/strings.xml) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/res/values-tr/strings.xml (renamed from src/main/res/values-tr/strings.xml) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/res/values-uk/strings.xml (renamed from src/main/res/values-uk/strings.xml) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/res/values-zh/strings.xml (renamed from src/main/res/values-zh/strings.xml) | 0 | ||||
-rw-r--r-- | openpgp-api/src/main/res/values/strings.xml (renamed from src/main/res/values/strings.xml) | 0 | ||||
-rw-r--r-- | settings.gradle | 2 |
59 files changed, 1024 insertions, 31 deletions
@@ -27,3 +27,7 @@ pom.xml.* #IntelliJ IDEA .idea *.iml + +#Lint output +lint-report.html +lint-report_files/*
\ No newline at end of file @@ -4,6 +4,21 @@ The OpenPGP API provides methods to execute OpenPGP operations, such as sign, en For usage instructions, please consult our Wiki page about the [OpenPGP API](https://github.com/open-keychain/open-keychain/wiki/OpenPGP-API). +## How to import + +Add this to your build.gradle: + +``` +repositories { + jcenter() +} + +dependencies { + compile 'org.sufficientlysecure:openpgp-api:7.0' +} +``` + + License ======= diff --git a/build.gradle b/build.gradle index ccf15a9..6f563f3 100644 --- a/build.gradle +++ b/build.gradle @@ -2,38 +2,14 @@ buildscript { repositories { jcenter() } - dependencies { - classpath 'com.android.tools.build:gradle:1.0.0' + classpath 'com.android.tools.build:gradle:1.2.2' classpath 'com.novoda:bintray-release:0.2.7' } } -apply plugin: 'com.android.library' -apply plugin: 'bintray-release' - -android { - compileSdkVersion 22 - buildToolsVersion '21.1.2' - - defaultConfig { - versionCode 1 - versionName '7.0' // API-Version . minor - minSdkVersion 9 - targetSdkVersion 22 - } - - // Do not abort build if lint finds errors - lintOptions { - abortOnError false +allprojects { + repositories { + jcenter() } } - -publish { - userOrg = 'sufficientlysecure' - groupId = 'org.sufficientlysecure' - artifactId = 'openpgp-api' - version = '7.0' - description = 'The OpenPGP API provides methods to execute OpenPGP operations, such as sign, encrypt, decrypt, verify, and more without user interaction from background threads' - website = 'https://github.com/open-keychain/openpgp-api' -}
\ No newline at end of file diff --git a/example/.gitignore b/example/.gitignore new file mode 100644 index 0000000..a44cc0f --- /dev/null +++ b/example/.gitignore @@ -0,0 +1,33 @@ +#Android specific +bin +gen +obj +lint.xml +local.properties +release.properties +ant.properties +*.class +*.apk + +#Gradle +.gradle +build +gradle.properties + +#Maven +target +pom.xml.* + +#Eclipse +.project +.classpath +.settings +.metadata + +#IntelliJ IDEA +.idea +*.iml + +#Lint output +lint-report.html +lint-report_files/*
\ No newline at end of file diff --git a/example/build.gradle b/example/build.gradle new file mode 100644 index 0000000..2cae79a --- /dev/null +++ b/example/build.gradle @@ -0,0 +1,52 @@ +apply plugin: 'com.android.application' + +dependencies { + compile 'com.android.support:support-v4:22.1.1' + compile project(':openpgp-api') +} + +android { + compileSdkVersion 22 + buildToolsVersion '21.1.2' + + defaultConfig { + minSdkVersion 9 + targetSdkVersion 22 + applicationId 'org.openintents.openpgp.example' + versionCode 6 + versionName '7.0' + } + + /* + * To sign release build, create file gradle.properties in ~/.gradle/ with this content: + * + * signingStoreLocation=/home/key.store + * signingStorePassword=xxx + * signingKeyAlias=alias + * signingKeyPassword=xxx + */ + if (project.hasProperty('signingStoreLocation') && + project.hasProperty('signingStorePassword') && + project.hasProperty('signingKeyAlias') && + project.hasProperty('signingKeyPassword')) { + println "Found sign properties in gradle.properties! Signing build…" + + signingConfigs { + release { + storeFile file(signingStoreLocation) + storePassword signingStorePassword + keyAlias signingKeyAlias + keyPassword signingKeyPassword + } + } + + buildTypes.release.signingConfig = signingConfigs.release + } else { + buildTypes.release.signingConfig = null + } + + // Do not abort build if lint finds errors + lintOptions { + abortOnError false + } +} diff --git a/example/ic_launcher-web.png b/example/ic_launcher-web.png Binary files differnew file mode 100644 index 0000000..ae4cd09 --- /dev/null +++ b/example/ic_launcher-web.png diff --git a/example/src/main/AndroidManifest.xml b/example/src/main/AndroidManifest.xml new file mode 100644 index 0000000..e9bf096 --- /dev/null +++ b/example/src/main/AndroidManifest.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="org.openintents.openpgp.example"> + + <application + android:allowBackup="true" + android:icon="@drawable/ic_launcher" + android:label="OpenPGP API Example"> + <activity + android:name=".BaseActivity" + android:label="OpenPGP API Example"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + <activity + android:name=".OpenPgpApiActivity" + android:label="OpenPGP API" + android:windowSoftInputMode="stateHidden" /> + </application> + +</manifest>
\ No newline at end of file diff --git a/example/src/main/java/org/openintents/openpgp/example/BaseActivity.java b/example/src/main/java/org/openintents/openpgp/example/BaseActivity.java new file mode 100644 index 0000000..8d1381b --- /dev/null +++ b/example/src/main/java/org/openintents/openpgp/example/BaseActivity.java @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2012-2014 Dominik Schürmann <dominik@dominikschuermann.de> + * + * 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.openintents.openpgp.example; + +import android.content.Intent; +import android.os.Bundle; +import android.preference.Preference; +import android.preference.Preference.OnPreferenceClickListener; +import android.preference.PreferenceActivity; + +import org.openintents.openpgp.util.OpenPgpAppPreference; +import org.openintents.openpgp.util.OpenPgpKeyPreference; + +public class BaseActivity extends PreferenceActivity { + OpenPgpKeyPreference mKey; + OpenPgpAppPreference mProvider; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // load preferences from xml + addPreferencesFromResource(R.xml.base_preference); + + // find preferences + Preference openKeychainIntents = findPreference("intent_demo"); + Preference openPgpApi = findPreference("openpgp_provider_demo"); + mProvider = (OpenPgpAppPreference) findPreference("openpgp_provider_list"); + mKey = (OpenPgpKeyPreference) findPreference("openpgp_key"); + + openPgpApi.setOnPreferenceClickListener(new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + startActivity(new Intent(BaseActivity.this, OpenPgpApiActivity.class)); + + return false; + } + }); + + mKey.setOpenPgpProvider(mProvider.getValue()); + mProvider.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + mKey.setOpenPgpProvider((String) newValue); + return true; + } + }); + mKey.setDefaultUserId("Alice <alice@example.com>"); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (mKey.handleOnActivityResult(requestCode, resultCode, data)) { + // handled by OpenPgpKeyPreference + return; + } + // other request codes... + } +} diff --git a/example/src/main/java/org/openintents/openpgp/example/Constants.java b/example/src/main/java/org/openintents/openpgp/example/Constants.java new file mode 100644 index 0000000..79a0e8b --- /dev/null +++ b/example/src/main/java/org/openintents/openpgp/example/Constants.java @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2013-2015 Dominik Schürmann <dominik@dominikschuermann.de> + * + * 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.openintents.openpgp.example; + +public final class Constants { + public static final String TAG = "Keychain"; +} diff --git a/example/src/main/java/org/openintents/openpgp/example/OpenPgpApiActivity.java b/example/src/main/java/org/openintents/openpgp/example/OpenPgpApiActivity.java new file mode 100644 index 0000000..f0b8a46 --- /dev/null +++ b/example/src/main/java/org/openintents/openpgp/example/OpenPgpApiActivity.java @@ -0,0 +1,496 @@ +/* + * Copyright (C) 2013-2015 Dominik Schürmann <dominik@dominikschuermann.de> + * + * 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.openintents.openpgp.example; + +import android.app.Activity; +import android.app.PendingIntent; +import android.content.Intent; +import android.content.IntentSender; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.text.TextUtils; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import org.openintents.openpgp.IOpenPgpService; +import org.openintents.openpgp.OpenPgpError; +import org.openintents.openpgp.OpenPgpSignatureResult; +import org.openintents.openpgp.util.OpenPgpApi; +import org.openintents.openpgp.util.OpenPgpServiceConnection; +import org.openintents.openpgp.util.OpenPgpUtils; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; + +public class OpenPgpApiActivity extends Activity { + private EditText mMessage; + private EditText mCiphertext; + private EditText mDetachedSignature; + private EditText mEncryptUserIds; + private Button mCleartextSign; + private Button mDetachedSign; + private Button mEncrypt; + private Button mSignAndEncrypt; + private Button mDecryptAndVerify; + private Button mVerifyDetachedSignature; + private EditText mGetKeyEdit; + private EditText mGetKeyIdsEdit; + private Button mGetKey; + private Button mGetKeyIds; + + private OpenPgpServiceConnection mServiceConnection; + + private long mSignKeyId; + + public static final int REQUEST_CODE_CLEARTEXT_SIGN = 9910; + public static final int REQUEST_CODE_ENCRYPT = 9911; + public static final int REQUEST_CODE_SIGN_AND_ENCRYPT = 9912; + public static final int REQUEST_CODE_DECRYPT_AND_VERIFY = 9913; + public static final int REQUEST_CODE_GET_KEY = 9914; + public static final int REQUEST_CODE_GET_KEY_IDS = 9915; + public static final int REQUEST_CODE_DETACHED_SIGN = 9916; + public static final int REQUEST_CODE_DECRYPT_AND_VERIFY_DETACHED = 9917; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.openpgp_provider); + + mMessage = (EditText) findViewById(R.id.crypto_provider_demo_message); + mCiphertext = (EditText) findViewById(R.id.crypto_provider_demo_ciphertext); + mDetachedSignature = (EditText) findViewById(R.id.crypto_provider_demo_detached_signature); + mEncryptUserIds = (EditText) findViewById(R.id.crypto_provider_demo_encrypt_user_id); + mCleartextSign = (Button) findViewById(R.id.crypto_provider_demo_cleartext_sign); + mDetachedSign = (Button) findViewById(R.id.crypto_provider_demo_detached_sign); + mEncrypt = (Button) findViewById(R.id.crypto_provider_demo_encrypt); + mSignAndEncrypt = (Button) findViewById(R.id.crypto_provider_demo_sign_and_encrypt); + mDecryptAndVerify = (Button) findViewById(R.id.crypto_provider_demo_decrypt_and_verify); + mVerifyDetachedSignature = (Button) findViewById(R.id.crypto_provider_demo_verify_detached_signature); + mGetKeyEdit = (EditText) findViewById(R.id.crypto_provider_demo_get_key_edit); + mGetKeyIdsEdit = (EditText) findViewById(R.id.crypto_provider_demo_get_key_ids_edit); + mGetKey = (Button) findViewById(R.id.crypto_provider_demo_get_key); + mGetKeyIds = (Button) findViewById(R.id.crypto_provider_demo_get_key_ids); + + mCleartextSign.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + cleartextSign(new Intent()); + } + }); + mDetachedSign.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + detachedSign(new Intent()); + } + }); + mEncrypt.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + encrypt(new Intent()); + } + }); + mSignAndEncrypt.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + signAndEncrypt(new Intent()); + } + }); + mDecryptAndVerify.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + decryptAndVerify(new Intent()); + } + }); + mVerifyDetachedSignature.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + decryptAndVerifyDetached(new Intent()); + } + }); + mGetKey.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + getKey(new Intent()); + } + }); + mGetKeyIds.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + getKeyIds(new Intent()); + } + }); + + SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); + String providerPackageName = settings.getString("openpgp_provider_list", ""); + mSignKeyId = settings.getLong("openpgp_key", 0); + if (TextUtils.isEmpty(providerPackageName)) { + Toast.makeText(this, "No OpenPGP app selected!", Toast.LENGTH_LONG).show(); + finish(); + } else if (mSignKeyId == 0) { + Toast.makeText(this, "No key selected!", Toast.LENGTH_LONG).show(); + finish(); + } else { + // bind to service + mServiceConnection = new OpenPgpServiceConnection( + OpenPgpApiActivity.this.getApplicationContext(), + providerPackageName, + new OpenPgpServiceConnection.OnBound() { + @Override + public void onBound(IOpenPgpService service) { + Log.d(OpenPgpApi.TAG, "onBound!"); + } + + @Override + public void onError(Exception e) { + Log.e(OpenPgpApi.TAG, "exception when binding!", e); + } + } + ); + mServiceConnection.bindToService(); + } + } + + private void handleError(final OpenPgpError error) { + runOnUiThread(new Runnable() { + + @Override + public void run() { + Toast.makeText(OpenPgpApiActivity.this, + "onError id:" + error.getErrorId() + "\n\n" + error.getMessage(), + Toast.LENGTH_LONG).show(); + Log.e(Constants.TAG, "onError getErrorId:" + error.getErrorId()); + Log.e(Constants.TAG, "onError getMessage:" + error.getMessage()); + } + }); + } + + private void showToast(final String message) { + runOnUiThread(new Runnable() { + + @Override + public void run() { + Toast.makeText(OpenPgpApiActivity.this, + message, + Toast.LENGTH_SHORT).show(); + } + }); + } + + /** + * Takes input from message or ciphertext EditText and turns it into a ByteArrayInputStream + * + * @param ciphertext + * @return + */ + private InputStream getInputstream(boolean ciphertext) { + InputStream is = null; + try { + String inputStr; + if (ciphertext) { + inputStr = mCiphertext.getText().toString(); + } else { + inputStr = mMessage.getText().toString(); + } + is = new ByteArrayInputStream(inputStr.getBytes("UTF-8")); + } catch (UnsupportedEncodingException e) { + Log.e(Constants.TAG, "UnsupportedEncodingException", e); + } + + return is; + } + + private class MyCallback implements OpenPgpApi.IOpenPgpCallback { + boolean returnToCiphertextField; + ByteArrayOutputStream os; + int requestCode; + + private MyCallback(boolean returnToCiphertextField, ByteArrayOutputStream os, int requestCode) { + this.returnToCiphertextField = returnToCiphertextField; + this.os = os; + this.requestCode = requestCode; + } + + @Override + public void onReturn(Intent result) { + switch (result.getIntExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_ERROR)) { + case OpenPgpApi.RESULT_CODE_SUCCESS: { + showToast("RESULT_CODE_SUCCESS"); + + // encrypt/decrypt/sign/verify + if (os != null) { + try { + Log.d(OpenPgpApi.TAG, "result: " + os.toByteArray().length + + " str=" + os.toString("UTF-8")); + + if (returnToCiphertextField) { + mCiphertext.setText(os.toString("UTF-8")); + } else { + mMessage.setText(os.toString("UTF-8")); + } + } catch (UnsupportedEncodingException e) { + Log.e(Constants.TAG, "UnsupportedEncodingException", e); + } + } + + // detached sign + if (result.hasExtra(OpenPgpApi.RESULT_DETACHED_SIGNATURE)) { + byte[] detachedSig + = result.getByteArrayExtra(OpenPgpApi.RESULT_DETACHED_SIGNATURE); + Log.d(OpenPgpApi.TAG, "RESULT_DETACHED_SIGNATURE: " + detachedSig.length + + " str=" + new String(detachedSig)); + mDetachedSignature.setText(new String(detachedSig)); + } + + if (result.hasExtra(OpenPgpApi.RESULT_TYPE)) { + int resultType = result.getIntExtra(OpenPgpApi.RESULT_TYPE, -1); + switch (resultType) { + case OpenPgpApi.RESULT_TYPE_UNENCRYPTED_UNSIGNED: { + Log.d(Constants.TAG, "unencrypted, unsigned"); + break; + } + case OpenPgpApi.RESULT_TYPE_ENCRYPTED: { + Log.d(Constants.TAG, "encrypted only"); + break; + } + case OpenPgpApi.RESULT_TYPE_SIGNED: { + Log.d(Constants.TAG, "signed only"); + break; + } + case (OpenPgpApi.RESULT_TYPE_ENCRYPTED | OpenPgpApi.RESULT_TYPE_SIGNED): { + Log.d(Constants.TAG, "encrypted + signed"); + break; + } + default: { + Log.d(Constants.TAG, "no type recognized!"); + break; + } + } + } + + // verify + if (result.hasExtra(OpenPgpApi.RESULT_SIGNATURE)) { + OpenPgpSignatureResult sigResult + = result.getParcelableExtra(OpenPgpApi.RESULT_SIGNATURE); + showToast(sigResult.toString()); + } + + // get key ids + if (result.hasExtra(OpenPgpApi.RESULT_KEY_IDS)) { + long[] keyIds = result.getLongArrayExtra(OpenPgpApi.RESULT_KEY_IDS); + String out = "keyIds: "; + for (int i = 0; i < keyIds.length; i++) { + out += OpenPgpUtils.convertKeyIdToHex(keyIds[i]) + ", "; + } + + showToast(out); + } + break; + } + case OpenPgpApi.RESULT_CODE_USER_INTERACTION_REQUIRED: { + showToast("RESULT_CODE_USER_INTERACTION_REQUIRED"); + + PendingIntent pi = result.getParcelableExtra(OpenPgpApi.RESULT_INTENT); + try { + OpenPgpApiActivity.this.startIntentSenderFromChild( + OpenPgpApiActivity.this, pi.getIntentSender(), + requestCode, null, 0, 0, 0); + } catch (IntentSender.SendIntentException e) { + Log.e(Constants.TAG, "SendIntentException", e); + } + break; + } + case OpenPgpApi.RESULT_CODE_ERROR: { + showToast("RESULT_CODE_ERROR"); + + OpenPgpError error = result.getParcelableExtra(OpenPgpApi.RESULT_ERROR); + handleError(error); + break; + } + } + } + } + + public void cleartextSign(Intent data) { + data.setAction(OpenPgpApi.ACTION_CLEARTEXT_SIGN); + data.putExtra(OpenPgpApi.EXTRA_SIGN_KEY_ID, mSignKeyId); +// data.putExtra(OpenPgpApi.EXTRA_ACCOUNT_NAME, mAccount.getText().toString()); + + InputStream is = getInputstream(false); + ByteArrayOutputStream os = new ByteArrayOutputStream(); + + OpenPgpApi api = new OpenPgpApi(this, mServiceConnection.getService()); + api.executeApiAsync(data, is, os, new MyCallback(true, os, REQUEST_CODE_CLEARTEXT_SIGN)); + } + + public void detachedSign(Intent data) { + data.setAction(OpenPgpApi.ACTION_DETACHED_SIGN); + data.putExtra(OpenPgpApi.EXTRA_SIGN_KEY_ID, mSignKeyId); +// data.putExtra(OpenPgpApi.EXTRA_ACCOUNT_NAME, mAccount.getText().toString()); + + InputStream is = getInputstream(false); + // no output stream needed, detached signature is returned as RESULT_DETACHED_SIGNATURE + + OpenPgpApi api = new OpenPgpApi(this, mServiceConnection.getService()); + api.executeApiAsync(data, is, null, new MyCallback(true, null, REQUEST_CODE_DETACHED_SIGN)); + } + + public void encrypt(Intent data) { + data.setAction(OpenPgpApi.ACTION_ENCRYPT); + if (!TextUtils.isEmpty(mEncryptUserIds.getText().toString())) { + data.putExtra(OpenPgpApi.EXTRA_USER_IDS, mEncryptUserIds.getText().toString().split(",")); + } + data.putExtra(OpenPgpApi.EXTRA_REQUEST_ASCII_ARMOR, true); +// data.putExtra(OpenPgpApi.EXTRA_ACCOUNT_NAME, mAccount.getText().toString()); + + InputStream is = getInputstream(false); + ByteArrayOutputStream os = new ByteArrayOutputStream(); + + OpenPgpApi api = new OpenPgpApi(this, mServiceConnection.getService()); + api.executeApiAsync(data, is, os, new MyCallback(true, os, REQUEST_CODE_ENCRYPT)); + } + + public void signAndEncrypt(Intent data) { + data.setAction(OpenPgpApi.ACTION_SIGN_AND_ENCRYPT); + data.putExtra(OpenPgpApi.EXTRA_SIGN_KEY_ID, mSignKeyId); + if (!TextUtils.isEmpty(mEncryptUserIds.getText().toString())) { + data.putExtra(OpenPgpApi.EXTRA_USER_IDS, mEncryptUserIds.getText().toString().split(",")); + } + data.putExtra(OpenPgpApi.EXTRA_REQUEST_ASCII_ARMOR, true); +// data.putExtra(OpenPgpApi.EXTRA_ACCOUNT_NAME, mAccount.getText().toString()); + + InputStream is = getInputstream(false); + ByteArrayOutputStream os = new ByteArrayOutputStream(); + + OpenPgpApi api = new OpenPgpApi(this, mServiceConnection.getService()); + api.executeApiAsync(data, is, os, new MyCallback(true, os, REQUEST_CODE_SIGN_AND_ENCRYPT)); + } + + public void decryptAndVerify(Intent data) { + data.setAction(OpenPgpApi.ACTION_DECRYPT_VERIFY); +// data.putExtra(OpenPgpApi.EXTRA_ACCOUNT_NAME, mAccount.getText().toString()); + + InputStream is = getInputstream(true); + ByteArrayOutputStream os = new ByteArrayOutputStream(); + + OpenPgpApi api = new OpenPgpApi(this, mServiceConnection.getService()); + api.executeApiAsync(data, is, os, new MyCallback(false, os, REQUEST_CODE_DECRYPT_AND_VERIFY)); + } + + public void decryptAndVerifyDetached(Intent data) { + data.setAction(OpenPgpApi.ACTION_DECRYPT_VERIFY); +// data.putExtra(OpenPgpApi.EXTRA_ACCOUNT_NAME, mAccount.getText().toString()); + data.putExtra(OpenPgpApi.EXTRA_DETACHED_SIGNATURE, mDetachedSignature.getText().toString().getBytes()); + + // use from text from mMessage + InputStream is = getInputstream(false); + + OpenPgpApi api = new OpenPgpApi(this, mServiceConnection.getService()); + api.executeApiAsync(data, is, null, new MyCallback(false, null, REQUEST_CODE_DECRYPT_AND_VERIFY_DETACHED)); + } + + public void getKey(Intent data) { + data.setAction(OpenPgpApi.ACTION_GET_KEY); +// data.putExtra(OpenPgpApi.EXTRA_ACCOUNT_NAME, mAccount.getText().toString()); + data.putExtra(OpenPgpApi.EXTRA_KEY_ID, Long.decode(mGetKeyEdit.getText().toString())); + + OpenPgpApi api = new OpenPgpApi(this, mServiceConnection.getService()); + api.executeApiAsync(data, null, null, new MyCallback(false, null, REQUEST_CODE_GET_KEY)); + } + + public void getKeyIds(Intent data) { + data.setAction(OpenPgpApi.ACTION_GET_KEY_IDS); +// data.putExtra(OpenPgpApi.EXTRA_ACCOUNT_NAME, mAccount.getText().toString()); + + OpenPgpApi api = new OpenPgpApi(this, mServiceConnection.getService()); + api.executeApiAsync(data, null, null, new MyCallback(false, null, REQUEST_CODE_GET_KEY_IDS)); + } + + public void getAnyKeyIds(Intent data) { + data.setAction(OpenPgpApi.ACTION_GET_KEY_IDS); +// data.putExtra(OpenPgpApi.EXTRA_ACCOUNT_NAME, mAccount.getText().toString()); +// data.putExtra(OpenPgpApi.EXTRA_USER_IDS, mGetKeyIdsEdit.getText().toString().split(",")); + + OpenPgpApi api = new OpenPgpApi(this, mServiceConnection.getService()); + api.executeApiAsync(data, null, null, new MyCallback(false, null, REQUEST_CODE_GET_KEY_IDS)); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + Log.d(Constants.TAG, "onActivityResult resultCode: " + resultCode); + + // try again after user interaction + if (resultCode == RESULT_OK) { + /* + * The data originally given to one of the methods above, is again + * returned here to be used when calling the method again after user + * interaction. The Intent now also contains results from the user + * interaction, for example selected key ids. + */ + switch (requestCode) { + case REQUEST_CODE_CLEARTEXT_SIGN: { + cleartextSign(data); + break; + } + case REQUEST_CODE_DETACHED_SIGN: { + detachedSign(data); + break; + } + case REQUEST_CODE_ENCRYPT: { + encrypt(data); + break; + } + case REQUEST_CODE_SIGN_AND_ENCRYPT: { + signAndEncrypt(data); + break; + } + case REQUEST_CODE_DECRYPT_AND_VERIFY: { + decryptAndVerify(data); + break; + } + case REQUEST_CODE_DECRYPT_AND_VERIFY_DETACHED: { + decryptAndVerifyDetached(data); + break; + } + case REQUEST_CODE_GET_KEY: { + getKey(data); + break; + } + case REQUEST_CODE_GET_KEY_IDS: { + getKeyIds(data); + break; + } + } + } + } + + @Override + public void onDestroy() { + super.onDestroy(); + + if (mServiceConnection != null) { + mServiceConnection.unbindFromService(); + } + } + +} diff --git a/example/src/main/res/drawable-hdpi/ic_launcher.png b/example/src/main/res/drawable-hdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000..cf114d7 --- /dev/null +++ b/example/src/main/res/drawable-hdpi/ic_launcher.png diff --git a/example/src/main/res/drawable-mdpi/ic_launcher.png b/example/src/main/res/drawable-mdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000..d553188 --- /dev/null +++ b/example/src/main/res/drawable-mdpi/ic_launcher.png diff --git a/example/src/main/res/drawable-xhdpi/ic_launcher.png b/example/src/main/res/drawable-xhdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000..13ed3d4 --- /dev/null +++ b/example/src/main/res/drawable-xhdpi/ic_launcher.png diff --git a/example/src/main/res/drawable-xxhdpi/ic_launcher.png b/example/src/main/res/drawable-xxhdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000..831c993 --- /dev/null +++ b/example/src/main/res/drawable-xxhdpi/ic_launcher.png diff --git a/example/src/main/res/layout/openpgp_provider.xml b/example/src/main/res/layout/openpgp_provider.xml new file mode 100644 index 0000000..13096b4 --- /dev/null +++ b/example/src/main/res/layout/openpgp_provider.xml @@ -0,0 +1,190 @@ +<?xml version="1.0" encoding="utf-8"?> +<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/parent_scroll" + android:fillViewport="true" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <LinearLayout + android:padding="8dp" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Encrypt UserIds (split with ',')" + android:textAppearance="?android:attr/textAppearanceMedium" /> + + + <EditText + android:id="@+id/crypto_provider_demo_encrypt_user_id" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="dominik@dominikschuermann.de" + android:textAppearance="@android:style/TextAppearance.Small" /> + + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Message" + android:textAppearance="?android:attr/textAppearanceMedium" /> + + + <ScrollView + android:id="@+id/child_scroll1" + android:fillViewport="true" + android:layout_width="match_parent" + android:layout_height="120dp"> + + <EditText + android:id="@+id/crypto_provider_demo_message" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:scrollHorizontally="true" + android:scrollbars="vertical" + android:text="message" + android:hint="cleartext message" + android:textAppearance="@android:style/TextAppearance.Small" /> + </ScrollView> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Ciphertext" + android:textAppearance="?android:attr/textAppearanceMedium" /> + + <ScrollView + android:id="@+id/child_scroll2" + android:fillViewport="true" + android:layout_width="match_parent" + android:layout_height="120dp"> + + <EditText + android:id="@+id/crypto_provider_demo_ciphertext" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:text="ciphertext" + android:hint="ciphertext" + android:textAppearance="@android:style/TextAppearance.Small" /> + </ScrollView> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Detached signature" + android:textAppearance="?android:attr/textAppearanceMedium" /> + + <ScrollView + android:id="@+id/child_scroll3" + android:fillViewport="true" + android:layout_width="match_parent" + android:layout_height="60dp"> + + <EditText + android:id="@+id/crypto_provider_demo_detached_signature" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:text="detached signature" + android:hint="detached signature" + android:textAppearance="@android:style/TextAppearance.Small" /> + </ScrollView> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <Button + android:id="@+id/crypto_provider_demo_cleartext_sign" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="Cleartext Sign" + android:layout_gravity="center_vertical" /> + + <Button + android:id="@+id/crypto_provider_demo_detached_sign" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="Detached Sign" + android:layout_gravity="center_vertical" /> + + <Button + android:id="@+id/crypto_provider_demo_encrypt" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="Encrypt" + android:layout_gravity="center_vertical" /> + + <Button + android:id="@+id/crypto_provider_demo_sign_and_encrypt" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="Sign and Encrypt" + android:layout_gravity="center_vertical" /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <Button + android:id="@+id/crypto_provider_demo_decrypt_and_verify" + android:layout_weight="1" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:text="Decrypt and Verify" /> + + <Button + android:id="@+id/crypto_provider_demo_verify_detached_signature" + android:layout_weight="1" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:text="Verify detached signature" /> + </LinearLayout> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Get key:" + android:textAppearance="?android:attr/textAppearanceMedium" /> + + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="0x718c070100012282" + android:id="@+id/crypto_provider_demo_get_key_edit" /> + + <Button + android:id="@+id/crypto_provider_demo_get_key" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Get key" /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Get key ids:" + android:textAppearance="?android:attr/textAppearanceMedium" /> + + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="dominik@dominikschuermann.de" + android:id="@+id/crypto_provider_demo_get_key_ids_edit" /> + + <Button + android:id="@+id/crypto_provider_demo_get_key_ids" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Get key ids" /> + + </LinearLayout> +</ScrollView>
\ No newline at end of file diff --git a/example/src/main/res/xml/base_preference.xml b/example/src/main/res/xml/base_preference.xml new file mode 100644 index 0000000..cd214f4 --- /dev/null +++ b/example/src/main/res/xml/base_preference.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> + + <PreferenceCategory android:title="OpenPGP API"> + <org.openintents.openpgp.util.OpenPgpAppPreference + android:key="openpgp_provider_list" + android:title="Select OpenPGP app!" /> + <org.openintents.openpgp.util.OpenPgpKeyPreference + android:key="openpgp_key" + android:title="Select key!" /> + <Preference + android:key="openpgp_provider_demo" + android:title="OpenPGP API Example" /> + </PreferenceCategory> + +</PreferenceScreen>
\ No newline at end of file diff --git a/example/src/main/res/xml/intent_preference.xml b/example/src/main/res/xml/intent_preference.xml new file mode 100644 index 0000000..801e4a7 --- /dev/null +++ b/example/src/main/res/xml/intent_preference.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> + + <PreferenceCategory android:title="Intents (org.sufficientlysecure.keychain.action.)"> + <Preference + android:key="ENCRYPT" + android:title="ENCRYPT" /> + <Preference + android:key="ENCRYPT_URI" + android:title="ENCRYPT with Uri" /> + <Preference + android:key="DECRYPT" + android:title="DECRYPT" /> + <Preference + android:key="IMPORT_KEY" + android:title="IMPORT_KEY" /> + <Preference + android:key="IMPORT_KEY_FROM_KEYSERVER" + android:title="IMPORT_KEY_FROM_KEYSERVER" /> + <Preference + android:key="IMPORT_KEY_FROM_QR_CODE" + android:title="IMPORT_KEY_FROM_QR_CODE" /> + </PreferenceCategory> + <PreferenceCategory android:title="Special Intents"> + <Preference + android:key="openpgp4fpr" + android:title="VIEW openpgp4fpr:73EE2314F65FA92EC2390D3A718C070100012282" /> + </PreferenceCategory> + +</PreferenceScreen>
\ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar Binary files differindex c97a8bd..085a1cd 100644 --- a/gradle/wrapper/gradle-wrapper.jar +++ b/gradle/wrapper/gradle-wrapper.jar diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 120a028..3ceb21f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Thu Dec 04 18:50:40 CET 2014 +#Tue May 05 21:19:58 CEST 2015 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.3-bin.zip diff --git a/openpgp-api/.gitignore b/openpgp-api/.gitignore new file mode 100644 index 0000000..a44cc0f --- /dev/null +++ b/openpgp-api/.gitignore @@ -0,0 +1,33 @@ +#Android specific +bin +gen +obj +lint.xml +local.properties +release.properties +ant.properties +*.class +*.apk + +#Gradle +.gradle +build +gradle.properties + +#Maven +target +pom.xml.* + +#Eclipse +.project +.classpath +.settings +.metadata + +#IntelliJ IDEA +.idea +*.iml + +#Lint output +lint-report.html +lint-report_files/*
\ No newline at end of file diff --git a/openpgp-api/build.gradle b/openpgp-api/build.gradle new file mode 100644 index 0000000..f2885b9 --- /dev/null +++ b/openpgp-api/build.gradle @@ -0,0 +1,28 @@ +apply plugin: 'com.android.library' +apply plugin: 'bintray-release' // must be applied after your artifact generating plugin (eg. java / com.android.library) + +android { + compileSdkVersion 22 + buildToolsVersion '21.1.2' + + defaultConfig { + versionCode 6 + versionName '7.0' // API-Version . minor + minSdkVersion 9 + targetSdkVersion 22 + } + + // Do not abort build if lint finds errors + lintOptions { + abortOnError false + } +} + +publish { + userOrg = 'sufficientlysecure' + groupId = 'org.sufficientlysecure' + artifactId = 'openpgp-api' + version = '7.0' + description = 'The OpenPGP API provides methods to execute OpenPGP operations, such as sign, encrypt, decrypt, verify, and more without user interaction from background threads' + website = 'https://github.com/sufficientlysecure/openpgp-api' +}
\ No newline at end of file diff --git a/src/main/AndroidManifest.xml b/openpgp-api/src/main/AndroidManifest.xml index f1f29cf..f1f29cf 100644 --- a/src/main/AndroidManifest.xml +++ b/openpgp-api/src/main/AndroidManifest.xml diff --git a/src/main/aidl/org/openintents/openpgp/IOpenPgpService.aidl b/openpgp-api/src/main/aidl/org/openintents/openpgp/IOpenPgpService.aidl index 2451207..2451207 100644 --- a/src/main/aidl/org/openintents/openpgp/IOpenPgpService.aidl +++ b/openpgp-api/src/main/aidl/org/openintents/openpgp/IOpenPgpService.aidl diff --git a/src/main/java/org/openintents/openpgp/OpenPgpError.java b/openpgp-api/src/main/java/org/openintents/openpgp/OpenPgpError.java index ce8f21f..ce8f21f 100644 --- a/src/main/java/org/openintents/openpgp/OpenPgpError.java +++ b/openpgp-api/src/main/java/org/openintents/openpgp/OpenPgpError.java diff --git a/src/main/java/org/openintents/openpgp/OpenPgpMetadata.java b/openpgp-api/src/main/java/org/openintents/openpgp/OpenPgpMetadata.java index d620a57..d620a57 100644 --- a/src/main/java/org/openintents/openpgp/OpenPgpMetadata.java +++ b/openpgp-api/src/main/java/org/openintents/openpgp/OpenPgpMetadata.java diff --git a/src/main/java/org/openintents/openpgp/OpenPgpSignatureResult.java b/openpgp-api/src/main/java/org/openintents/openpgp/OpenPgpSignatureResult.java index 7eb06d9..6b5045d 100644 --- a/src/main/java/org/openintents/openpgp/OpenPgpSignatureResult.java +++ b/openpgp-api/src/main/java/org/openintents/openpgp/OpenPgpSignatureResult.java @@ -22,7 +22,6 @@ import android.os.Parcelable; import org.openintents.openpgp.util.OpenPgpUtils; import java.util.ArrayList; -import java.util.Locale; /** * Parcelable versioning has been copied from Dashclock Widget diff --git a/src/main/java/org/openintents/openpgp/util/OpenPgpApi.java b/openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpApi.java index cd1edc5..cd1edc5 100644 --- a/src/main/java/org/openintents/openpgp/util/OpenPgpApi.java +++ b/openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpApi.java diff --git a/src/main/java/org/openintents/openpgp/util/OpenPgpAppPreference.java b/openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpAppPreference.java index 4bf4cec..4bf4cec 100644 --- a/src/main/java/org/openintents/openpgp/util/OpenPgpAppPreference.java +++ b/openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpAppPreference.java diff --git a/src/main/java/org/openintents/openpgp/util/OpenPgpKeyPreference.java b/openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpKeyPreference.java index 6343285..6343285 100644 --- a/src/main/java/org/openintents/openpgp/util/OpenPgpKeyPreference.java +++ b/openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpKeyPreference.java diff --git a/src/main/java/org/openintents/openpgp/util/OpenPgpServiceConnection.java b/openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpServiceConnection.java index bbc8645..bbc8645 100644 --- a/src/main/java/org/openintents/openpgp/util/OpenPgpServiceConnection.java +++ b/openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpServiceConnection.java diff --git a/src/main/java/org/openintents/openpgp/util/OpenPgpUtils.java b/openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpUtils.java index ad5f47b..ad5f47b 100644 --- a/src/main/java/org/openintents/openpgp/util/OpenPgpUtils.java +++ b/openpgp-api/src/main/java/org/openintents/openpgp/util/OpenPgpUtils.java diff --git a/src/main/java/org/openintents/openpgp/util/ParcelFileDescriptorUtil.java b/openpgp-api/src/main/java/org/openintents/openpgp/util/ParcelFileDescriptorUtil.java index b9492f9..b9492f9 100644 --- a/src/main/java/org/openintents/openpgp/util/ParcelFileDescriptorUtil.java +++ b/openpgp-api/src/main/java/org/openintents/openpgp/util/ParcelFileDescriptorUtil.java diff --git a/src/main/res/drawable-hdpi/ic_action_cancel_launchersize.png b/openpgp-api/src/main/res/drawable-hdpi/ic_action_cancel_launchersize.png Binary files differindex 71b9118..71b9118 100644 --- a/src/main/res/drawable-hdpi/ic_action_cancel_launchersize.png +++ b/openpgp-api/src/main/res/drawable-hdpi/ic_action_cancel_launchersize.png diff --git a/src/main/res/drawable-hdpi/ic_action_cancel_launchersize_light.png b/openpgp-api/src/main/res/drawable-hdpi/ic_action_cancel_launchersize_light.png Binary files differindex 73b1d08..73b1d08 100644 --- a/src/main/res/drawable-hdpi/ic_action_cancel_launchersize_light.png +++ b/openpgp-api/src/main/res/drawable-hdpi/ic_action_cancel_launchersize_light.png diff --git a/src/main/res/drawable-mdpi/ic_action_cancel_launchersize.png b/openpgp-api/src/main/res/drawable-mdpi/ic_action_cancel_launchersize.png Binary files differindex 270abf4..270abf4 100644 --- a/src/main/res/drawable-mdpi/ic_action_cancel_launchersize.png +++ b/openpgp-api/src/main/res/drawable-mdpi/ic_action_cancel_launchersize.png diff --git a/src/main/res/drawable-mdpi/ic_action_cancel_launchersize_light.png b/openpgp-api/src/main/res/drawable-mdpi/ic_action_cancel_launchersize_light.png Binary files differindex d841821..d841821 100644 --- a/src/main/res/drawable-mdpi/ic_action_cancel_launchersize_light.png +++ b/openpgp-api/src/main/res/drawable-mdpi/ic_action_cancel_launchersize_light.png diff --git a/src/main/res/drawable-xhdpi/ic_action_cancel_launchersize.png b/openpgp-api/src/main/res/drawable-xhdpi/ic_action_cancel_launchersize.png Binary files differindex 1e3571f..1e3571f 100644 --- a/src/main/res/drawable-xhdpi/ic_action_cancel_launchersize.png +++ b/openpgp-api/src/main/res/drawable-xhdpi/ic_action_cancel_launchersize.png diff --git a/src/main/res/drawable-xhdpi/ic_action_cancel_launchersize_light.png b/openpgp-api/src/main/res/drawable-xhdpi/ic_action_cancel_launchersize_light.png Binary files differindex d505046..d505046 100644 --- a/src/main/res/drawable-xhdpi/ic_action_cancel_launchersize_light.png +++ b/openpgp-api/src/main/res/drawable-xhdpi/ic_action_cancel_launchersize_light.png diff --git a/src/main/res/drawable-xxhdpi/ic_action_cancel_launchersize.png b/openpgp-api/src/main/res/drawable-xxhdpi/ic_action_cancel_launchersize.png Binary files differindex 5204460..5204460 100644 --- a/src/main/res/drawable-xxhdpi/ic_action_cancel_launchersize.png +++ b/openpgp-api/src/main/res/drawable-xxhdpi/ic_action_cancel_launchersize.png diff --git a/src/main/res/drawable-xxhdpi/ic_action_cancel_launchersize_light.png b/openpgp-api/src/main/res/drawable-xxhdpi/ic_action_cancel_launchersize_light.png Binary files differindex d6fb86b..d6fb86b 100644 --- a/src/main/res/drawable-xxhdpi/ic_action_cancel_launchersize_light.png +++ b/openpgp-api/src/main/res/drawable-xxhdpi/ic_action_cancel_launchersize_light.png diff --git a/src/main/res/values-cs/strings.xml b/openpgp-api/src/main/res/values-cs/strings.xml index c9fe1fa..c9fe1fa 100644 --- a/src/main/res/values-cs/strings.xml +++ b/openpgp-api/src/main/res/values-cs/strings.xml diff --git a/src/main/res/values-de/strings.xml b/openpgp-api/src/main/res/values-de/strings.xml index 91e800a..91e800a 100644 --- a/src/main/res/values-de/strings.xml +++ b/openpgp-api/src/main/res/values-de/strings.xml diff --git a/src/main/res/values-es/strings.xml b/openpgp-api/src/main/res/values-es/strings.xml index da8979b..da8979b 100644 --- a/src/main/res/values-es/strings.xml +++ b/openpgp-api/src/main/res/values-es/strings.xml diff --git a/src/main/res/values-et/strings.xml b/openpgp-api/src/main/res/values-et/strings.xml index c757504..c757504 100644 --- a/src/main/res/values-et/strings.xml +++ b/openpgp-api/src/main/res/values-et/strings.xml diff --git a/src/main/res/values-fi/strings.xml b/openpgp-api/src/main/res/values-fi/strings.xml index c757504..c757504 100644 --- a/src/main/res/values-fi/strings.xml +++ b/openpgp-api/src/main/res/values-fi/strings.xml diff --git a/src/main/res/values-fr/strings.xml b/openpgp-api/src/main/res/values-fr/strings.xml index 9b36df2..9b36df2 100644 --- a/src/main/res/values-fr/strings.xml +++ b/openpgp-api/src/main/res/values-fr/strings.xml diff --git a/src/main/res/values-is/strings.xml b/openpgp-api/src/main/res/values-is/strings.xml index c757504..c757504 100644 --- a/src/main/res/values-is/strings.xml +++ b/openpgp-api/src/main/res/values-is/strings.xml diff --git a/src/main/res/values-it/strings.xml b/openpgp-api/src/main/res/values-it/strings.xml index 23e8e80..23e8e80 100644 --- a/src/main/res/values-it/strings.xml +++ b/openpgp-api/src/main/res/values-it/strings.xml diff --git a/src/main/res/values-ja/strings.xml b/openpgp-api/src/main/res/values-ja/strings.xml index 5e337f5..5e337f5 100644 --- a/src/main/res/values-ja/strings.xml +++ b/openpgp-api/src/main/res/values-ja/strings.xml diff --git a/src/main/res/values-nl/strings.xml b/openpgp-api/src/main/res/values-nl/strings.xml index c757504..c757504 100644 --- a/src/main/res/values-nl/strings.xml +++ b/openpgp-api/src/main/res/values-nl/strings.xml diff --git a/src/main/res/values-pl/strings.xml b/openpgp-api/src/main/res/values-pl/strings.xml index c757504..c757504 100644 --- a/src/main/res/values-pl/strings.xml +++ b/openpgp-api/src/main/res/values-pl/strings.xml diff --git a/src/main/res/values-pt/strings.xml b/openpgp-api/src/main/res/values-pt/strings.xml index c757504..c757504 100644 --- a/src/main/res/values-pt/strings.xml +++ b/openpgp-api/src/main/res/values-pt/strings.xml diff --git a/src/main/res/values-ru/strings.xml b/openpgp-api/src/main/res/values-ru/strings.xml index e8fd1dd..e8fd1dd 100644 --- a/src/main/res/values-ru/strings.xml +++ b/openpgp-api/src/main/res/values-ru/strings.xml diff --git a/src/main/res/values-sl/strings.xml b/openpgp-api/src/main/res/values-sl/strings.xml index 20bf70b..20bf70b 100644 --- a/src/main/res/values-sl/strings.xml +++ b/openpgp-api/src/main/res/values-sl/strings.xml diff --git a/src/main/res/values-tr/strings.xml b/openpgp-api/src/main/res/values-tr/strings.xml index c757504..c757504 100644 --- a/src/main/res/values-tr/strings.xml +++ b/openpgp-api/src/main/res/values-tr/strings.xml diff --git a/src/main/res/values-uk/strings.xml b/openpgp-api/src/main/res/values-uk/strings.xml index baf600a..baf600a 100644 --- a/src/main/res/values-uk/strings.xml +++ b/openpgp-api/src/main/res/values-uk/strings.xml diff --git a/src/main/res/values-zh/strings.xml b/openpgp-api/src/main/res/values-zh/strings.xml index c757504..c757504 100644 --- a/src/main/res/values-zh/strings.xml +++ b/openpgp-api/src/main/res/values-zh/strings.xml diff --git a/src/main/res/values/strings.xml b/openpgp-api/src/main/res/values/strings.xml index a45524f..a45524f 100644 --- a/src/main/res/values/strings.xml +++ b/openpgp-api/src/main/res/values/strings.xml diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..1a7c8d3 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,2 @@ +include ':example' +include ':openpgp-api'
\ No newline at end of file |