diff options
author | Trevor Johns <trevorjohns@google.com> | 2013-10-30 16:38:01 -0700 |
---|---|---|
committer | Trevor Johns <trevorjohns@google.com> | 2013-10-30 16:38:01 -0700 |
commit | a6b4636faeaa3613bae3dfcbed7fd8886d615714 (patch) | |
tree | 1d5208749f6fcad3523f88da60ab48294c264ce0 /security | |
parent | 27162ffddab31cb4d7f4eb1177c5fe7fc48875a9 (diff) | |
download | android-a6b4636faeaa3613bae3dfcbed7fd8886d615714.tar.gz |
Restore "Merge downstream branch 'developers-dev' into 'klp-dev'"
This reverts commit ec985147ec781dfff9a229c6b794ee4eac0ced91.
Diffstat (limited to 'security')
41 files changed, 442 insertions, 1204 deletions
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/build.gradle b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/build.gradle deleted file mode 100644 index 0baece96..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/build.gradle +++ /dev/null @@ -1,10 +0,0 @@ -apply plugin: 'android' - -dependencies { - compile "com.android.support:support-v4:18.0.+" -} - -android { - compileSdkVersion 18 - buildToolsVersion "18.0.0" -} diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/AndroidManifest.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/AndroidManifest.xml deleted file mode 100644 index 7693ed15..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/AndroidManifest.xml +++ /dev/null @@ -1,40 +0,0 @@ -<!-- - Copyright 2013 The Android Open Source Project - - 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. - --> - -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.example.android.basicandroidkeystore" - android:versionCode="1" - android:versionName="1.0"> - - <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> - - <application android:label="@string/app_name" - android:icon="@drawable/ic_launcher" - android:theme="@style/Theme.Sample"> - - <activity android:name=".MainActivity" - android:label="@string/app_name" - android:uiOptions="splitActionBarWhenNarrow"> - - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - - </application> - -</manifest> diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/basicandroidkeystore/LogFragment.java b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/basicandroidkeystore/LogFragment.java deleted file mode 100644 index 23d4da76..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/basicandroidkeystore/LogFragment.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2013 The Android Open Source Project - * - * 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 com.example.android.basicandroidkeystore; - -import com.example.android.common.logger.LogView; - -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.text.Editable; -import android.text.TextWatcher; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ScrollView; - -/** - * Simple fraggment which contains a LogView and uses is to output log data it receives - * through the LogNode interface. - */ -public class LogFragment extends Fragment { - - private LogView mLogView; - - public LogFragment() {} - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - - View result = inflater.inflate(R.layout.log_fragment, container, false); - - mLogView = (LogView) result.findViewById(R.id.sample_output); - - // Wire up so when the text changes, the view scrolls down. - final ScrollView scrollView = - ((ScrollView) result.findViewById(R.id.log_scroll)); - - mLogView.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) {} - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - scrollView.fullScroll(ScrollView.FOCUS_DOWN); - } - - @Override - public void afterTextChanged(Editable s) { - scrollView.fullScroll(ScrollView.FOCUS_DOWN); - } - }); - - return result; - } - - public LogView getLogView() { - return mLogView; - } -}
\ No newline at end of file diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/basicandroidkeystore/MainActivity.java b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/basicandroidkeystore/MainActivity.java deleted file mode 100644 index 33af4e56..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/basicandroidkeystore/MainActivity.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright 2013 The Android Open Source Project - * - * 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 com.example.android.basicandroidkeystore; - -import android.os.Bundle; -import android.support.v4.app.FragmentActivity; -import android.view.Menu; -import android.view.MenuItem; - -import com.example.android.common.SimpleTextFragment; -import com.example.android.common.logger.LogWrapper; -import com.example.android.common.logger.MessageOnlyLogFilter; -import com.example.android.common.logger.Log; - -import java.io.IOException; -import java.security.InvalidAlgorithmParameterException; -import java.security.InvalidKeyException; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.SignatureException; -import java.security.UnrecoverableEntryException; -import java.security.cert.CertificateException; - -public class MainActivity extends FragmentActivity { - - public final static String TAG = "MainActivity"; - public LogFragment mLogFragment; - - public KeyStoreHelper mKeyStoreHelper; - - - // BEGIN_INCLUDE(values) - // You can store multiple key pairs in the Key Store. The string used to refer to the Key you - // want to store, or later pull, is referred to as an "alias" in this case, because calling it - // a key, when you use it to retrieve a key, would just be irritating. - public static final String ALIAS = "myKey"; - - // Some sample data to sign, and later verify using the generated signature. - public static final String SAMPLE_INPUT="Hello, Android!"; - - // Just a handy place to store the signature in between signing and verifying. - public String mSignatureStr = null; - // END_INCLUDE(values) - - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - - SimpleTextFragment actionFragment = - (SimpleTextFragment) getSupportFragmentManager() - .findFragmentById(R.id.intro_fragment); - actionFragment.setText(R.string.intro_message); - - mKeyStoreHelper = new KeyStoreHelper(); - mKeyStoreHelper.setAlias(ALIAS); - initializeLogging(); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.main, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.btn_create_keys: - try { - mKeyStoreHelper.createKeys(this); - Log.d(TAG, "Keys created"); - return true; - } catch (NoSuchAlgorithmException e) { - Log.w(TAG, "RSA not supported", e); - } catch (InvalidAlgorithmParameterException e) { - Log.w(TAG, "No such provider: AndroidKeyStore"); - } catch (NoSuchProviderException e) { - Log.w(TAG, "Invalid Algorithm Parameter Exception", e); - } - return true; - case R.id.btn_sign_data: - try { - mSignatureStr = mKeyStoreHelper.signData(SAMPLE_INPUT); - } catch (KeyStoreException e) { - Log.w(TAG, "KeyStore not Initialized", e); - } catch (UnrecoverableEntryException e) { - Log.w(TAG, "KeyPair not recovered", e); - } catch (NoSuchAlgorithmException e) { - Log.w(TAG, "RSA not supported", e); - } catch (InvalidKeyException e) { - Log.w(TAG, "Invalid Key", e); - } catch (SignatureException e) { - Log.w(TAG, "Invalid Signature", e); - } catch (IOException e) { - Log.w(TAG, "IO Exception", e); - } catch (CertificateException e) { - Log.w(TAG, "Error occurred while loading certificates", e); - } - Log.d(TAG, "Signature: " + mSignatureStr); - return true; - - case R.id.btn_verify_data: - boolean verified = false; - try { - if (mSignatureStr != null) { - verified = mKeyStoreHelper.verifyData(SAMPLE_INPUT, mSignatureStr); - } - } catch (KeyStoreException e) { - Log.w(TAG, "KeyStore not Initialized", e); - } catch (CertificateException e) { - Log.w(TAG, "Error occurred while loading certificates", e); - } catch (NoSuchAlgorithmException e) { - Log.w(TAG, "RSA not supported", e); - } catch (IOException e) { - Log.w(TAG, "IO Exception", e); - } catch (UnrecoverableEntryException e) { - Log.w(TAG, "KeyPair not recovered", e); - } catch (InvalidKeyException e) { - Log.w(TAG, "Invalid Key", e); - } catch (SignatureException e) { - Log.w(TAG, "Invalid Signature", e); - } - if (verified) { - Log.d(TAG, "Data Signature Verified"); - } else { - Log.d(TAG, "Data not verified."); - } - return true; - } - return false; - } - - /** Create a chain of targets that will receive log data */ - public void initializeLogging() { - // Using Log, front-end to the logging chain, emulates android.util.log method signatures. - // Wraps Android's native log framework - LogWrapper logWrapper = new LogWrapper(); - Log.setLogNode(logWrapper); - - // A filter that strips out everything except the message text - MessageOnlyLogFilter msgFilter = new MessageOnlyLogFilter(); - logWrapper.setNext(msgFilter); - - // On screen logging via a fragment with a TextView - mLogFragment = (LogFragment) getSupportFragmentManager().findFragmentById(R.id.log_fragment); - msgFilter.setNext(mLogFragment.getLogView()); - Log.i(TAG, "Ready"); - } -} diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/SimpleTextFragment.java b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/SimpleTextFragment.java deleted file mode 100644 index 2895ea07..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/SimpleTextFragment.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2013 The Android Open Source Project - * - * 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 com.example.android.common; - -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.util.Log; -import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -/** - * Simple fragment containing only a TextView. Used by TextPagerAdapter to create - * tutorial-style pages for apps. - */ -public class SimpleTextFragment extends Fragment { - - // Contains the text that will be displayed by this Fragment - String mText; - - // Contains a resource ID for the text that will be displayed by this fragment. - int mTextId = -1; - - // Keys which will be used to store/retrieve text passed in via setArguments. - public static final String TEXT_KEY = "text"; - public static final String TEXT_ID_KEY = "text_id"; - - // For situations where the app wants to modify text at Runtime, exposing the TextView. - private TextView mTextView; - - public SimpleTextFragment() { - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Before initializing the textView, check if any arguments were provided via setArguments. - processArguments(); - - // Create a new TextView and set its text to whatever was provided. - mTextView = new TextView(getActivity()); - - if (mText != null) { - mTextView.setText(mText); - Log.i("SimpleTextFragment", mText); - } - return mTextView; - } - - public TextView getTextView() { - return mTextView; - } - - /** - * Changes the text for this TextView, according to the resource ID provided. - * - * @param stringId A resource ID representing the text content for this Fragment's TextView. - */ - public void setText(int stringId) { - getTextView().setText(getActivity().getString(stringId)); - } - - /** - * Processes the arguments passed into this Fragment via setArguments method. - * Currently the method only looks for text or a textID, nothing else. - */ - public void processArguments() { - // For most objects we'd handle the multiple possibilities for initialization variables - // as multiple constructors. For Fragments, however, it's customary to use - // setArguments / getArguments. - if (getArguments() != null) { - Bundle args = getArguments(); - if (args.containsKey(TEXT_KEY)) { - mText = args.getString(TEXT_KEY); - Log.d("Constructor", "Added Text."); - } else if (args.containsKey(TEXT_ID_KEY)) { - mTextId = args.getInt(TEXT_ID_KEY); - mText = getString(mTextId); - } - } - } -}
\ No newline at end of file diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/Log.java b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/Log.java deleted file mode 100644 index 17503c56..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/Log.java +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * - * 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 com.example.android.common.logger; - -/** - * Helper class for a list (or tree) of LoggerNodes. - * - * <p>When this is set as the head of the list, - * an instance of it can function as a drop-in replacement for {@link android.util.Log}. - * Most of the methods in this class server only to map a method call in Log to its equivalent - * in LogNode.</p> - */ -public class Log { - // Grabbing the native values from Android's native logging facilities, - // to make for easy migration and interop. - public static final int NONE = -1; - public static final int VERBOSE = android.util.Log.VERBOSE; - public static final int DEBUG = android.util.Log.DEBUG; - public static final int INFO = android.util.Log.INFO; - public static final int WARN = android.util.Log.WARN; - public static final int ERROR = android.util.Log.ERROR; - public static final int ASSERT = android.util.Log.ASSERT; - - // Stores the beginning of the LogNode topology. - private static LogNode mLogNode; - - /** - * Returns the next LogNode in the linked list. - */ - public static LogNode getLogNode() { - return mLogNode; - } - - /** - * Sets the LogNode data will be sent to. - */ - public static void setLogNode(LogNode node) { - mLogNode = node; - } - - /** - * Instructs the LogNode to print the log data provided. Other LogNodes can - * be chained to the end of the LogNode as desired. - * - * @param priority Log level of the data being logged. Verbose, Error, etc. - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - public static void println(int priority, String tag, String msg, Throwable tr) { - if (mLogNode != null) { - mLogNode.println(priority, tag, msg, tr); - } - } - - /** - * Instructs the LogNode to print the log data provided. Other LogNodes can - * be chained to the end of the LogNode as desired. - * - * @param priority Log level of the data being logged. Verbose, Error, etc. - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. The actual message to be logged. - */ - public static void println(int priority, String tag, String msg) { - println(priority, tag, msg, null); - } - - /** - * Prints a message at VERBOSE priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - public static void v(String tag, String msg, Throwable tr) { - println(VERBOSE, tag, msg, tr); - } - - /** - * Prints a message at VERBOSE priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - */ - public static void v(String tag, String msg) { - v(tag, msg, null); - } - - - /** - * Prints a message at DEBUG priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - public static void d(String tag, String msg, Throwable tr) { - println(DEBUG, tag, msg, tr); - } - - /** - * Prints a message at DEBUG priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - */ - public static void d(String tag, String msg) { - d(tag, msg, null); - } - - /** - * Prints a message at INFO priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - public static void i(String tag, String msg, Throwable tr) { - println(INFO, tag, msg, tr); - } - - /** - * Prints a message at INFO priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - */ - public static void i(String tag, String msg) { - i(tag, msg, null); - } - - /** - * Prints a message at WARN priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - public static void w(String tag, String msg, Throwable tr) { - println(WARN, tag, msg, tr); - } - - /** - * Prints a message at WARN priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - */ - public static void w(String tag, String msg) { - w(tag, msg, null); - } - - /** - * Prints a message at WARN priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - public static void w(String tag, Throwable tr) { - w(tag, null, tr); - } - - /** - * Prints a message at ERROR priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - public static void e(String tag, String msg, Throwable tr) { - println(ERROR, tag, msg, tr); - } - - /** - * Prints a message at ERROR priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - */ - public static void e(String tag, String msg) { - e(tag, msg, null); - } - - /** - * Prints a message at ASSERT priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - public static void wtf(String tag, String msg, Throwable tr) { - println(ASSERT, tag, msg, tr); - } - - /** - * Prints a message at ASSERT priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - */ - public static void wtf(String tag, String msg) { - wtf(tag, msg, null); - } - - /** - * Prints a message at ASSERT priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - public static void wtf(String tag, Throwable tr) { - wtf(tag, null, tr); - } -} diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogNode.java b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogNode.java deleted file mode 100644 index bc37cabc..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogNode.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * 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 com.example.android.common.logger; - -/** - * Basic interface for a logging system that can output to one or more targets. - * Note that in addition to classes that will output these logs in some format, - * one can also implement this interface over a filter and insert that in the chain, - * such that no targets further down see certain data, or see manipulated forms of the data. - * You could, for instance, write a "ToHtmlLoggerNode" that just converted all the log data - * it received to HTML and sent it along to the next node in the chain, without printing it - * anywhere. - */ -public interface LogNode { - - /** - * Instructs first LogNode in the list to print the log data provided. - * @param priority Log level of the data being logged. Verbose, Error, etc. - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. The actual message to be logged. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - public void println(int priority, String tag, String msg, Throwable tr); - -} diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogView.java b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogView.java deleted file mode 100644 index dfe7648f..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogView.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * - * 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 com.example.android.common.logger; - -import android.content.Context; -import android.text.method.ScrollingMovementMethod; -import android.util.*; -import android.widget.TextView; - -/** - * Created by alexlucas on 6/4/13. - */ - - -public class LogView extends TextView implements LogNode { - - public LogView(Context context) { - super(context); - } - - public LogView(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public LogView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - } - - /** - * Formats the log data and prints it out to the LogView. - * @param priority Log level of the data being logged. Verbose, Error, etc. - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. The actual message to be logged. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - @Override - public void println(int priority, String tag, String msg, Throwable tr) { - String priorityStr = null; - - // For the purposes of this View, we want to print the priority as readable text. - switch(priority) { - case android.util.Log.VERBOSE: - priorityStr = "VERBOSE"; - break; - case android.util.Log.DEBUG: - priorityStr = "DEBUG"; - break; - case android.util.Log.INFO: - priorityStr = "INFO"; - break; - case android.util.Log.WARN: - priorityStr = "WARN"; - break; - case android.util.Log.ERROR: - priorityStr = "ERROR"; - break; - case android.util.Log.ASSERT: - priorityStr = "ASSERT"; - break; - default: - break; - } - - // Handily, the Log class has a facility for converting a stack trace into a useable string. - String exceptionStr = null; - if (tr != null) { - exceptionStr = android.util.Log.getStackTraceString(tr); - } - - // Take the priority, tag, message, and exception, and concatenate as necessary - // into one usable line of text. - StringBuilder outputBuilder = new StringBuilder(); - - String delimiter = "\t"; - - appendIfNotNull(outputBuilder, priorityStr, delimiter); - appendIfNotNull(outputBuilder, tag, delimiter); - appendIfNotNull(outputBuilder, msg, delimiter); - appendIfNotNull(outputBuilder, exceptionStr, delimiter); - - // Actually display the text we just generated within the LogView. - appendToLog(outputBuilder.toString()); - - if (mNext != null) { - mNext.println(priority, tag, msg, tr); - } - } - - public LogNode getNext() { - return mNext; - } - - public void setNext(LogNode node) { - mNext = node; - } - - /** Takes a string and adds to it, with a seperator, if the bit to be added isn't null. Since - * the logger takes so many arguments that might be null, this method helps cut out some of the - * agonizing tedium of writing the same 3 lines over and over. - * @param source Stringbuilder containing the text to append to. - * @param addStrStr The String to append - * @param delimiter The String to seperate the source and appendee strings. A tab or comma, - * for instance. - * @return The fully concatenated String as a StringBuilder - */ - private StringBuilder appendIfNotNull(StringBuilder source, String addStr, String delimiter) { - if (addStr != null) { - if (addStr.length() == 0) { - delimiter = ""; - } - - return source.append(addStr).append(delimiter); - } - return source; - } - - // The next LogNode in the chain. - LogNode mNext; - - /** Outputs the string as a new line of log data in the LogView. */ - public void appendToLog(String s) { - append(s + "\n"); - } - - -} diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogWrapper.java b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogWrapper.java deleted file mode 100644 index 16a9e7ba..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogWrapper.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * 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 com.example.android.common.logger; - -import android.util.Log; - -/** - * Helper class which wraps Android's native Log utility in the Logger interface. This way - * normal DDMS output can be one of the many targets receiving and outputting logs simultaneously. - */ -public class LogWrapper implements LogNode { - - // For piping: The next node to receive Log data after this one has done its work. - private LogNode mNext; - - /** - * Returns the next LogNode in the linked list. - */ - public LogNode getNext() { - return mNext; - } - - /** - * Sets the LogNode data will be sent to.. - */ - public void setNext(LogNode node) { - mNext = node; - } - - /** - * Prints data out to the console using Android's native log mechanism. - * @param priority Log level of the data being logged. Verbose, Error, etc. - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. The actual message to be logged. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - @Override - public void println(int priority, String tag, String msg, Throwable tr) { - // There actually are log methods that don't take a msg parameter. For now, - // if that's the case, just convert null to the empty string and move on. - String useMsg = msg; - if (useMsg == null) { - useMsg = ""; - } - - // If an exeption was provided, convert that exception to a usable string and attach - // it to the end of the msg method. - if (tr != null) { - msg += "\n" + Log.getStackTraceString(tr); - } - - // This is functionally identical to Log.x(tag, useMsg); - // For instance, if priority were Log.VERBOSE, this would be the same as Log.v(tag, useMsg) - Log.println(priority, tag, useMsg); - - // If this isn't the last node in the chain, move things along. - if (mNext != null) { - mNext.println(priority, tag, msg, tr); - } - } -} diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/MessageOnlyLogFilter.java b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/MessageOnlyLogFilter.java deleted file mode 100644 index 19967dcd..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/MessageOnlyLogFilter.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * - * 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 com.example.android.common.logger; - -/** - * Simple {@link LogNode} filter, removes everything except the message. - * Useful for situations like on-screen log output where you don't want a lot of metadata displayed, - * just easy-to-read message updates as they're happening. - */ -public class MessageOnlyLogFilter implements LogNode { - - LogNode mNext; - - /** - * Takes the "next" LogNode as a parameter, to simplify chaining. - * - * @param next The next LogNode in the pipeline. - */ - public MessageOnlyLogFilter(LogNode next) { - mNext = next; - } - - public MessageOnlyLogFilter() { - } - - @Override - public void println(int priority, String tag, String msg, Throwable tr) { - if (mNext != null) { - getNext().println(Log.NONE, null, msg, null); - } - } - - /** - * Returns the next LogNode in the chain. - */ - public LogNode getNext() { - return mNext; - } - - /** - * Sets the LogNode data will be sent to.. - */ - public void setNext(LogNode node) { - mNext = node; - } - -} diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-hdpi/ic_launcher.png b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-hdpi/ic_launcher.png Binary files differdeleted file mode 100755 index 22ce6061..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-hdpi/ic_launcher.png +++ /dev/null diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-mdpi/ic_launcher.png b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-mdpi/ic_launcher.png Binary files differdeleted file mode 100755 index f21e17b6..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-mdpi/ic_launcher.png +++ /dev/null diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-xhdpi/ic_launcher.png b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-xhdpi/ic_launcher.png Binary files differdeleted file mode 100755 index 64b80590..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-xhdpi/ic_launcher.png +++ /dev/null diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-xxhdpi/ic_launcher.png b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-xxhdpi/ic_launcher.png Binary files differdeleted file mode 100755 index 6b4434a8..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-xxhdpi/ic_launcher.png +++ /dev/null diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/layout/activity_main.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/layout/activity_main.xml deleted file mode 100755 index a86e2b03..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,38 +0,0 @@ -<!-- - Copyright 2013 The Android Open Source Project - - 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. - --> - -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="fill_parent" - android:layout_height="fill_parent"> -<fragment - android:name="com.example.android.common.SimpleTextFragment" - android:id="@+id/intro_fragment" - android:layout_weight="1" - android:layout_width="match_parent" - android:layout_height="match_parent" /> -<View - android:layout_width="fill_parent" - android:layout_height="1dp" - android:background="@android:color/darker_gray"/> -<fragment - android:name="com.example.android.basicandroidkeystore.LogFragment" - android:id="@+id/log_fragment" - android:layout_weight="1" - android:layout_width="match_parent" - android:layout_height="match_parent" /> - </LinearLayout>
\ No newline at end of file diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/layout/log_fragment.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/layout/log_fragment.xml deleted file mode 100644 index f2d7b75f..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/layout/log_fragment.xml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> - - <!-- - Copyright 2013 The Android Open Source Project - - 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. - --> - -<ScrollView - xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/log_scroll" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <com.example.android.common.logger.LogView - android:id="@+id/sample_output" - style="@style/Log" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:clickable="true" - android:focusable="true" - android:text="" - android:gravity="bottom" /> -</ScrollView>
\ No newline at end of file diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values-sw600dp/styles.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values-sw600dp/styles.xml deleted file mode 100644 index ffcbe8ac..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values-sw600dp/styles.xml +++ /dev/null @@ -1,28 +0,0 @@ -<!-- - Copyright 2013 The Android Open Source Project - - 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. - --> - -<resources> - - <style name="Widget.SampleOutput"> - <item name="android:paddingTop">@dimen/margin_medium</item> - <item name="android:paddingBottom">@dimen/margin_medium</item> - <item name="android:paddingLeft">@dimen/margin_huge</item> - <item name="android:paddingRight">@dimen/margin_huge</item> - <item name="android:textAppearance">?android:textAppearanceLarge</item> - <item name="android:lineSpacingMultiplier">1.2</item> - </style> - -</resources> diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values-v11/styles.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values-v11/styles.xml deleted file mode 100644 index c6c648b4..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values-v11/styles.xml +++ /dev/null @@ -1,19 +0,0 @@ -<!-- - Copyright 2013 The Android Open Source Project - - 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. - --> - -<resources> - <style name="Theme.Base" parent="android:Theme.Holo.Light" /> -</resources> diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values/dimens.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values/dimens.xml deleted file mode 100644 index 952c2204..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values/dimens.xml +++ /dev/null @@ -1,27 +0,0 @@ -<!-- - Copyright 2013 The Android Open Source Project - - 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. - --> - -<resources> - - <!-- Define standard dimensions to comply with Holo-style grids and rhythm. --> - - <dimen name="margin_tiny">4dp</dimen> - <dimen name="margin_small">8dp</dimen> - <dimen name="margin_medium">16dp</dimen> - <dimen name="margin_large">32dp</dimen> - <dimen name="margin_huge">64dp</dimen> - -</resources> diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values/strings.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values/strings.xml deleted file mode 100755 index e579aee2..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values/strings.xml +++ /dev/null @@ -1,37 +0,0 @@ -<!-- - Copyright 2013 The Android Open Source Project - - 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. - --> - -<resources> - <string name="app_name">Androidkeystore</string> - <string name="sample_action">Sample action</string> - - <!-- Steps --> - <string name="intro_message"> - Welcome to the <b>Basic Android Key Store</b> sample!\n\n - This sample demonstrates how to use the Android Key Store to safely create and store - encryption keys that only your application can access. You can also sign data using those - keys.\n\n - To create a new KeyPair, click \"Create\".\n\n - To sign some data using a KeyPair, click \"Sign\".\n\n - To verify the data using the signature provided, click \"Verify\".\n\n - </string> - - <!-- Button labels --> - <string name="str_create_keys">Create</string> - <string name="str_sign_data">Sign</string> - <string name="str_verify_data">Verify</string> - -</resources> diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values/styles.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values/styles.xml deleted file mode 100644 index fb759617..00000000 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values/styles.xml +++ /dev/null @@ -1,39 +0,0 @@ -<!-- - Copyright 2013 The Android Open Source Project - - 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. - --> - -<resources> - - <!-- Activity themes --> - - <style name="Theme.Base" parent="android:Theme.Light" /> - - <style name="Theme.Sample" parent="Theme.Base" /> - - <!-- Widget styling --> - - <style name="Widget" /> - - <style name="Widget.SampleOutput"> - <item name="android:padding">@dimen/margin_medium</item> - <item name="android:textAppearance">?android:textAppearanceMedium</item> - <item name="android:lineSpacingMultiplier">1.1</item> - </style> - - <style name="Log" parent="Widget.SampleOutput"> - <item name="android:typeface">monospace</item> - </style> - -</resources> diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/.gitignore b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/.gitignore new file mode 100644 index 00000000..6eb878d4 --- /dev/null +++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/.gitignore @@ -0,0 +1,16 @@ +# Copyright 2013 The Android Open Source Project +# +# 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. +src/template/ +src/common/ +build.gradle diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/README-simpleview.txt b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/README-simpleview.txt new file mode 100644 index 00000000..4ac7cdb8 --- /dev/null +++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/README-simpleview.txt @@ -0,0 +1,29 @@ +<#-- + Copyright 2013 The Android Open Source Project + + 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. +--> + +Steps to implement SimpleView template: +-in template-params.xml.ftl: + -add the following line to common imports + <common src="activities"/> + +-Add a Fragment to handle behavior. In your MainActivity.java class, it will reference a Fragment + called (yourProjectName)Fragment.java. Create that file in your project, using the "main" source + folder instead of "common" or "templates". + For instance, if your package name is com.example.foo, create the file + src/main/java/com/example/foo/FooFragment.java + +-refer to sampleSamples/simpleViewSample for a reference implementation of a +project built on this template. diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/proguard-project.txt b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/proguard-project.txt new file mode 100644 index 00000000..0d8f171d --- /dev/null +++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/proguard-project.txt @@ -0,0 +1,20 @@ + To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/AndroidManifest.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/AndroidManifest.xml new file mode 100644 index 00000000..28d256c2 --- /dev/null +++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/AndroidManifest.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright 2013 The Android Open Source Project + + 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. +--> + + + +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.example.android.basicandroidkeystore" + android:versionCode="1" + android:versionName="1.0"> + + <uses-sdk android:minSdkVersion="18" android:targetSdkVersion="19" /> + + <application android:allowBackup="true" + android:label="@string/app_name" + android:icon="@drawable/ic_launcher" + android:theme="@style/AppTheme"> + + <activity android:name=".MainActivity" + android:label="@string/app_name" + android:uiOptions="splitActionBarWhenNarrow"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + </application> +</manifest> diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/basicandroidkeystore/KeyStoreHelper.java b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/java/com/example/android/basicandroidkeystore/BasicAndroidKeyStoreFragment.java index 7ccf733f..12873e84 100644 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/basicandroidkeystore/KeyStoreHelper.java +++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/java/com/example/android/basicandroidkeystore/BasicAndroidKeyStoreFragment.java @@ -1,27 +1,29 @@ /* - * Copyright 2013 The Android Open Source Project - * - * 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. - */ +* Copyright (C) 2013 The Android Open Source Project +* +* 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 com.example.android.basicandroidkeystore; import android.content.Context; +import android.os.Bundle; import android.security.KeyPairGeneratorSpec; +import android.support.v4.app.Fragment; import android.util.Base64; +import android.view.MenuItem; import com.example.android.common.logger.Log; -import com.example.android.common.SecurityConstants; import java.io.IOException; import java.math.BigInteger; @@ -42,15 +44,107 @@ import java.util.GregorianCalendar; import javax.security.auth.x500.X500Principal; -public class KeyStoreHelper { +public class BasicAndroidKeyStoreFragment extends Fragment { - public static final String TAG = "KeyStoreHelper"; + public static final String TAG = "BasicAndroidKeyStoreFragment"; + + // BEGIN_INCLUDE(values) + + public static final String SAMPLE_ALIAS = "myKey"; + + // Some sample data to sign, and later verify using the generated signature. + public static final String SAMPLE_INPUT="Hello, Android!"; + + // Just a handy place to store the signature in between signing and verifying. + public String mSignatureStr = null; // You can store multiple key pairs in the Key Store. The string used to refer to the Key you // want to store, or later pull, is referred to as an "alias" in this case, because calling it // a key, when you use it to retrieve a key, would just be irritating. private String mAlias = null; + // END_INCLUDE(values) + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + setAlias(SAMPLE_ALIAS); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.btn_create_keys: + try { + createKeys(getActivity()); + Log.d(TAG, "Keys created"); + return true; + } catch (NoSuchAlgorithmException e) { + Log.w(TAG, "RSA not supported", e); + } catch (InvalidAlgorithmParameterException e) { + Log.w(TAG, "No such provider: AndroidKeyStore"); + } catch (NoSuchProviderException e) { + Log.w(TAG, "Invalid Algorithm Parameter Exception", e); + } + return true; + case R.id.btn_sign_data: + try { + mSignatureStr = signData(SAMPLE_INPUT); + } catch (KeyStoreException e) { + Log.w(TAG, "KeyStore not Initialized", e); + } catch (UnrecoverableEntryException e) { + Log.w(TAG, "KeyPair not recovered", e); + } catch (NoSuchAlgorithmException e) { + Log.w(TAG, "RSA not supported", e); + } catch (InvalidKeyException e) { + Log.w(TAG, "Invalid Key", e); + } catch (SignatureException e) { + Log.w(TAG, "Invalid Signature", e); + } catch (IOException e) { + Log.w(TAG, "IO Exception", e); + } catch (CertificateException e) { + Log.w(TAG, "Error occurred while loading certificates", e); + } + Log.d(TAG, "Signature: " + mSignatureStr); + return true; + + case R.id.btn_verify_data: + boolean verified = false; + try { + if (mSignatureStr != null) { + verified = verifyData(SAMPLE_INPUT, mSignatureStr); + } + } catch (KeyStoreException e) { + Log.w(TAG, "KeyStore not Initialized", e); + } catch (CertificateException e) { + Log.w(TAG, "Error occurred while loading certificates", e); + } catch (NoSuchAlgorithmException e) { + Log.w(TAG, "RSA not supported", e); + } catch (IOException e) { + Log.w(TAG, "IO Exception", e); + } catch (UnrecoverableEntryException e) { + Log.w(TAG, "KeyPair not recovered", e); + } catch (InvalidKeyException e) { + Log.w(TAG, "Invalid Key", e); + } catch (SignatureException e) { + Log.w(TAG, "Invalid Signature", e); + } + if (verified) { + Log.d(TAG, "Data Signature Verified"); + } else { + Log.d(TAG, "Data not verified."); + } + return true; + } + return false; + } + /** * Creates a public and private key and stores it using the Android Key Store, so that only * this application will be able to access the keys. @@ -74,20 +168,18 @@ public class KeyStoreHelper { new KeyPairGeneratorSpec.Builder(context) // You'll use the alias later to retrieve the key. It's a key for the key! .setAlias(mAlias) - // The subject used for the self-signed certificate of the generated pair + // The subject used for the self-signed certificate of the generated pair .setSubject(new X500Principal("CN=" + mAlias)) - // The serial number used for the self-signed certificate of the - // generated pair. + // The serial number used for the self-signed certificate of the + // generated pair. .setSerialNumber(BigInteger.valueOf(1337)) - // Date range of validity for the generated pair. + // Date range of validity for the generated pair. .setStartDate(start.getTime()) .setEndDate(end.getTime()) .build(); // END_INCLUDE(create_spec) - // BEGIN_INCLUDE(create_keypair) - // Initialize a KeyPair generator using the the intended algorithm (in this example, RSA // and the KeyStore. This example uses the AndroidKeyStore. KeyPairGenerator kpGenerator = KeyPairGenerator @@ -97,8 +189,6 @@ public class KeyStoreHelper { KeyPair kp = kpGenerator.generateKeyPair(); Log.d(TAG, "Public Key is: " + kp.getPublic().toString()); // END_INCLUDE(create_keypair) - - } /** @@ -158,8 +248,7 @@ public class KeyStoreHelper { // Sign the data, store the result as a Base64 encoded String. s.update(data); byte[] signature = s.sign(); - String result = null; - result = Base64.encodeToString(signature, Base64.DEFAULT); + String result = Base64.encodeToString(signature, Base64.DEFAULT); // END_INCLUDE(sign_data) return result; diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/SecurityConstants.java b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/java/com/example/android/basicandroidkeystore/SecurityConstants.java index e23110c0..ea5ee30b 100644 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/SecurityConstants.java +++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/java/com/example/android/basicandroidkeystore/SecurityConstants.java @@ -1,5 +1,3 @@ -package com.example.android.common; - /* * Copyright 2013 The Android Open Source Project * @@ -16,6 +14,8 @@ package com.example.android.common; * limitations under the License. */ +package com.example.android.basicandroidkeystore; + /** * Helper class, contains several constants used when encrypting/decrypting data on Android. * This class should not be considered a complete list of the algorithms, keystore types, @@ -30,5 +30,4 @@ public class SecurityConstants { public static final String SIGNATURE_SHA256withRSA = "SHA256withRSA"; public static final String SIGNATURE_SHA512withRSA = "SHA512withRSA"; - } diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-hdpi/ic_launcher.png b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-hdpi/ic_launcher.png Binary files differnew file mode 100644 index 00000000..b1efaf4b --- /dev/null +++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-hdpi/ic_launcher.png diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-mdpi/ic_launcher.png b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-mdpi/ic_launcher.png Binary files differnew file mode 100644 index 00000000..f5f9244f --- /dev/null +++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-mdpi/ic_launcher.png diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-xhdpi/ic_launcher.png b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-xhdpi/ic_launcher.png Binary files differnew file mode 100644 index 00000000..5d07b3f0 --- /dev/null +++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-xhdpi/ic_launcher.png diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-xxhdpi/ic_launcher.png b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-xxhdpi/ic_launcher.png Binary files differnew file mode 100644 index 00000000..6ef21e1f --- /dev/null +++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-xxhdpi/ic_launcher.png diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/menu/main.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/menu/main.xml index 74435ca8..74435ca8 100644 --- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/menu/main.xml +++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/menu/main.xml diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/values/strings.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/values/strings.xml new file mode 100644 index 00000000..25ad389a --- /dev/null +++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/values/strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright 2013 The Android Open Source Project + + 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. +--> +<resources> + <string name="str_create_keys">Create</string> + <string name="str_sign_data">Sign</string> + <string name="str_verify_data">Verify</string> +</resources> diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/tests/AndroidManifest.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/tests/AndroidManifest.xml new file mode 100644 index 00000000..eb8b7b8e --- /dev/null +++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/tests/AndroidManifest.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2013 The Android Open Source Project + + 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 name must be unique so suffix with "tests" so package loader doesn't ignore us --> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.example.android.basicandroidkeystore.tests" + android:versionCode="1" + android:versionName="1.0"> + + <uses-sdk + android:minSdkVersion="18" + android:targetSdkVersion="19" /> + + <!-- We add an application tag here just so that we can indicate that + this package needs to link against the android.test library, + which is needed when building test cases. --> + <application> + <uses-library android:name="android.test.runner" /> + </application> + + <!-- + Specifies the instrumentation test runner used to run the tests. + --> + <instrumentation + android:name="android.test.InstrumentationTestRunner" + android:targetPackage="com.example.android.basicandroidkeystore" + android:label="Tests for com.example.android.basicandroidkeystore" /> + +</manifest>
\ No newline at end of file diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/tests/src/com/example/android/basicandroidkeystore/tests/SampleTests.java b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/tests/src/com/example/android/basicandroidkeystore/tests/SampleTests.java new file mode 100644 index 00000000..756b6052 --- /dev/null +++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/tests/src/com/example/android/basicandroidkeystore/tests/SampleTests.java @@ -0,0 +1,79 @@ +/* +* Copyright 2013 The Android Open Source Project +* +* 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. +*/ + + + +/* +* Copyright (C) 2013 The Android Open Source Project +* +* 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 com.example.android.basicandroidkeystore.tests; + +import com.example.android.basicandroidkeystore.*; + +import android.test.ActivityInstrumentationTestCase2; + +/** +* Tests for BasicAndroidKeyStore sample. +*/ +public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> { + + private MainActivity mTestActivity; + private BasicAndroidKeyStoreFragment mTestFragment; + + public SampleTests() { + super(MainActivity.class); + } + + @Override + protected void setUp() throws Exception { + super.setUp(); + + // Starts the activity under test using the default Intent with: + // action = {@link Intent#ACTION_MAIN} + // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK} + // All other fields are null or empty. + mTestActivity = getActivity(); + mTestFragment = (BasicAndroidKeyStoreFragment) + mTestActivity.getSupportFragmentManager().getFragments().get(1); + } + + /** + * Test if the test fixture has been set up correctly. + */ + public void testPreconditions() { + //Try to add a message to add context to your assertions. These messages will be shown if + //a tests fails and make it easy to understand why a test failed + assertNotNull("mTestActivity is null", mTestActivity); + assertNotNull("mTestFragment is null", mTestFragment); + } + + /** + * Add more tests below. + */ + +}
\ No newline at end of file diff --git a/security/keystore/BasicAndroidKeyStore/README.txt b/security/keystore/BasicAndroidKeyStore/README.txt deleted file mode 100644 index 38608dfc..00000000 --- a/security/keystore/BasicAndroidKeyStore/README.txt +++ /dev/null @@ -1,6 +0,0 @@ -Build Instructions -------------------- -This sample uses the Gradle build system. To build this project, use the -"gradlew build" command. - -To see a list of all available commands, run "gradlew tasks".
\ No newline at end of file diff --git a/security/keystore/BasicAndroidKeyStore/build.gradle b/security/keystore/BasicAndroidKeyStore/build.gradle index 036abc8d..cca9ac33 100644 --- a/security/keystore/BasicAndroidKeyStore/build.gradle +++ b/security/keystore/BasicAndroidKeyStore/build.gradle @@ -1,8 +1,10 @@ -buildscript { - repositories { - mavenCentral() - } - dependencies { - classpath 'com.android.tools.build:gradle:0.5.+' - } +// BEGIN_EXCLUDE +import com.example.android.samples.build.SampleGenPlugin +apply plugin: SampleGenPlugin + +samplegen { + pathToBuild "../../../../../build" + pathToSamplesCommon "../../../common" } +apply from: "../../../../../build/build.gradle" +// END_EXCLUDE diff --git a/security/keystore/BasicAndroidKeyStore/buildSrc/build.gradle b/security/keystore/BasicAndroidKeyStore/buildSrc/build.gradle new file mode 100644 index 00000000..e344a8cb --- /dev/null +++ b/security/keystore/BasicAndroidKeyStore/buildSrc/build.gradle @@ -0,0 +1,18 @@ + + + +repositories { + mavenCentral() +} +dependencies { + compile 'org.freemarker:freemarker:2.3.20' +} + +sourceSets { + main { + groovy { + srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy") + } + } +} + diff --git a/security/keystore/BasicAndroidKeyStore/gradle/wrapper/gradle-wrapper.properties b/security/keystore/BasicAndroidKeyStore/gradle/wrapper/gradle-wrapper.properties index 055ba6fa..861eddc3 100644 --- a/security/keystore/BasicAndroidKeyStore/gradle/wrapper/gradle-wrapper.properties +++ b/security/keystore/BasicAndroidKeyStore/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,6 @@ -# -#Mon Jul 22 11:40:20 PDT 2013 +#Wed Apr 10 15:27:10 PDT 2013 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip +distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip diff --git a/security/keystore/BasicAndroidKeyStore/settings.gradle b/security/keystore/BasicAndroidKeyStore/settings.gradle index 1d0b075c..e4b36fe0 100644 --- a/security/keystore/BasicAndroidKeyStore/settings.gradle +++ b/security/keystore/BasicAndroidKeyStore/settings.gradle @@ -1 +1,4 @@ -include ':BasicAndroidKeyStore' + + + +include 'BasicAndroidKeyStoreSample' diff --git a/security/keystore/BasicAndroidKeyStore/template-params.xml b/security/keystore/BasicAndroidKeyStore/template-params.xml new file mode 100644 index 00000000..d603dfad --- /dev/null +++ b/security/keystore/BasicAndroidKeyStore/template-params.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright 2013 The Android Open Source Project + + 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. +--> +<sample> + <name>BasicAndroidKeyStore</name> + <group>Security</group> + <package>com.example.android.basicandroidkeystore</package> + + <!-- change minSdk if needed--> + <minSdk>18</minSdk> + + <strings> + <intro> + <![CDATA[ + Welcome to the <b>Basic Android Key Store</b> sample!\n\n + This sample demonstrates how to use the Android Key Store to safely create and store + encryption keys that only your application can access. You can also sign data + using those keys.\n\n + To create a new KeyPair, click \"Create\".\n\n + To sign some data using a KeyPair, click \"Sign\".\n\n + To verify the data using the signature provided, click \"Verify\".\n\n ]]> + </intro> + </strings> + + <template src="base"/> + <template src="SimpleView"/> + <common src="activities"/> + <common src="logger"/> + +</sample> |