aboutsummaryrefslogtreecommitdiff
path: root/security
diff options
context:
space:
mode:
authorTrevor Johns <trevorjohns@google.com>2013-10-30 16:38:01 -0700
committerTrevor Johns <trevorjohns@google.com>2013-10-30 16:38:01 -0700
commita6b4636faeaa3613bae3dfcbed7fd8886d615714 (patch)
tree1d5208749f6fcad3523f88da60ab48294c264ce0 /security
parent27162ffddab31cb4d7f4eb1177c5fe7fc48875a9 (diff)
downloadandroid-a6b4636faeaa3613bae3dfcbed7fd8886d615714.tar.gz
Restore "Merge downstream branch 'developers-dev' into 'klp-dev'"
This reverts commit ec985147ec781dfff9a229c6b794ee4eac0ced91.
Diffstat (limited to 'security')
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/build.gradle10
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/AndroidManifest.xml40
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/basicandroidkeystore/LogFragment.java73
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/basicandroidkeystore/MainActivity.java164
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/SimpleTextFragment.java98
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/Log.java236
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogNode.java39
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogView.java140
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogWrapper.java75
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/MessageOnlyLogFilter.java60
-rwxr-xr-xsecurity/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-hdpi/ic_launcher.pngbin4407 -> 0 bytes
-rwxr-xr-xsecurity/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-mdpi/ic_launcher.pngbin2668 -> 0 bytes
-rwxr-xr-xsecurity/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-xhdpi/ic_launcher.pngbin6230 -> 0 bytes
-rwxr-xr-xsecurity/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-xxhdpi/ic_launcher.pngbin11294 -> 0 bytes
-rwxr-xr-xsecurity/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/layout/activity_main.xml38
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/layout/log_fragment.xml34
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values-sw600dp/styles.xml28
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values-v11/styles.xml19
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values/dimens.xml27
-rwxr-xr-xsecurity/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values/strings.xml37
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values/styles.xml39
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/.gitignore16
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/README-simpleview.txt29
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/proguard-project.txt20
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/AndroidManifest.xml41
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/java/com/example/android/basicandroidkeystore/BasicAndroidKeyStoreFragment.java (renamed from security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/basicandroidkeystore/KeyStoreHelper.java)143
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/java/com/example/android/basicandroidkeystore/SecurityConstants.java (renamed from security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/SecurityConstants.java)5
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-hdpi/ic_launcher.pngbin0 -> 4199 bytes
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-mdpi/ic_launcher.pngbin0 -> 2535 bytes
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-xhdpi/ic_launcher.pngbin0 -> 6022 bytes
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-xxhdpi/ic_launcher.pngbin0 -> 11040 bytes
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/menu/main.xml (renamed from security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/menu/main.xml)0
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/values/strings.xml21
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/tests/AndroidManifest.xml42
-rw-r--r--security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/tests/src/com/example/android/basicandroidkeystore/tests/SampleTests.java79
-rw-r--r--security/keystore/BasicAndroidKeyStore/README.txt6
-rw-r--r--security/keystore/BasicAndroidKeyStore/build.gradle16
-rw-r--r--security/keystore/BasicAndroidKeyStore/buildSrc/build.gradle18
-rw-r--r--security/keystore/BasicAndroidKeyStore/gradle/wrapper/gradle-wrapper.properties5
-rw-r--r--security/keystore/BasicAndroidKeyStore/settings.gradle5
-rw-r--r--security/keystore/BasicAndroidKeyStore/template-params.xml43
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
deleted file mode 100755
index 22ce6061..00000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-hdpi/ic_launcher.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index f21e17b6..00000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-mdpi/ic_launcher.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 64b80590..00000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-xhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 6b4434a8..00000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-xxhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
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
new file mode 100644
index 00000000..b1efaf4b
--- /dev/null
+++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
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
new file mode 100644
index 00000000..f5f9244f
--- /dev/null
+++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
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
new file mode 100644
index 00000000..5d07b3f0
--- /dev/null
+++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
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
new file mode 100644
index 00000000..6ef21e1f
--- /dev/null
+++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
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>