summaryrefslogtreecommitdiffstats
path: root/src/com/android/certinstaller/CertFile.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/certinstaller/CertFile.java')
-rw-r--r--src/com/android/certinstaller/CertFile.java206
1 files changed, 0 insertions, 206 deletions
diff --git a/src/com/android/certinstaller/CertFile.java b/src/com/android/certinstaller/CertFile.java
deleted file mode 100644
index 5b4bfbf..0000000
--- a/src/com/android/certinstaller/CertFile.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * Copyright (C) 2009 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.android.certinstaller;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.Environment;
-import android.preference.PreferenceActivity;
-import android.security.Credentials;
-import android.security.KeyChain;
-import android.util.Log;
-import android.widget.Toast;
-
-import java.io.File;
-import java.io.FileFilter;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Base class that deals with certificate files on the SD card.
- */
-public class CertFile extends PreferenceActivity implements FileFilter {
- static final int CERT_READ_ERROR = R.string.cert_read_error;
- static final int CERT_TOO_LARGE_ERROR = R.string.cert_too_large_error;
- static final int CERT_FILE_MISSING_ERROR = R.string.cert_missing_error;
-
- static final String DOWNLOAD_DIR = "download";
-
- private static final String TAG = "CertFile";
-
- private static final String CERT_FILE_KEY = "cf";
- private static final int MAX_FILE_SIZE = 1000000;
- protected static final int REQUEST_INSTALL_CODE = 1;
-
- private File mCertFile;
-
- @Override
- protected void onSaveInstanceState(Bundle outStates) {
- super.onSaveInstanceState(outStates);
- if (mCertFile != null) {
- outStates.putString(CERT_FILE_KEY, mCertFile.getAbsolutePath());
- }
- }
-
- @Override
- protected void onRestoreInstanceState(Bundle savedStates) {
- super.onRestoreInstanceState(savedStates);
- String path = savedStates.getString(CERT_FILE_KEY);
- if (path != null) {
- mCertFile = new File(path);
- }
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == REQUEST_INSTALL_CODE) {
- boolean success = (resultCode == RESULT_OK
- && (mCertFile == null || Util.deleteFile(mCertFile)));
- onInstallationDone(success);
- mCertFile = null;
- } else {
- Log.w(TAG, "unknown request code: " + requestCode);
- }
- }
-
- /**
- * Called when installation is done.
- *
- * @param success true if installation is done successfully
- */
- protected void onInstallationDone(boolean success) {
- if (success) {
- setResult(RESULT_OK);
- }
- }
-
- /**
- * Called when an error occurs when reading a certificate file.
- *
- * @param errorId one of {@link #CERT_READ_ERROR},
- * {@link #CERT_TOO_LARGE_ERROR} and {@link #CERT_FILE_MISSING_ERROR}
- */
- protected void onError(int errorId) {
- }
-
- /**
- * Returns a list of certificate files found on the SD card.
- */
- protected List<File> getAllCertFiles() {
- List<File> allFiles = new ArrayList<File>();
- File root = Environment.getExternalStorageDirectory();
-
- File download = new File(root, DOWNLOAD_DIR);
- if (download != null) {
- File[] files = download.listFiles(this);
- if (files != null) {
- Collections.addAll(allFiles, files);
- }
- }
-
- File[] files = root.listFiles(this);
- if (files != null) {
- Collections.addAll(allFiles, files);
- }
-
- return allFiles;
- }
-
- /**
- * Invokes {@link CertInstaller} to install the certificate(s) in the file.
- *
- * @param file the certificate file
- */
- protected void installFromFile(File file) {
- Log.d(TAG, "install cert from " + file);
-
- String fileName = file.getName();
- Bundle bundle = getIntent().getExtras();
-
- final String name;
- final int installAsUid;
- if (bundle == null) {
- name = fileName;
- installAsUid = -1;
- } else {
- name = bundle.getString(KeyChain.EXTRA_NAME, fileName);
- installAsUid = bundle.getInt(Credentials.EXTRA_INSTALL_AS_UID, -1);
- }
-
- if (file.exists()) {
- if (file.length() < MAX_FILE_SIZE) {
- byte[] data = Util.readFile(file);
- if (data == null) {
- toastError(CERT_READ_ERROR);
- onError(CERT_READ_ERROR);
- return;
- }
- mCertFile = file;
- install(fileName, name, installAsUid, data);
- } else {
- Log.w(TAG, "cert file is too large: " + file.length());
- toastError(CERT_TOO_LARGE_ERROR);
- onError(CERT_TOO_LARGE_ERROR);
- }
- } else {
- Log.w(TAG, "cert file does not exist");
- toastError(CERT_FILE_MISSING_ERROR);
- onError(CERT_FILE_MISSING_ERROR);
- }
- }
-
- @Override public boolean accept(File file) {
- if (!file.isDirectory()) {
- return isFileAcceptable(file.getPath());
- } else {
- return false;
- }
- }
-
- protected boolean isFileAcceptable(String path) {
- return (path.endsWith(Credentials.EXTENSION_CRT) ||
- path.endsWith(Credentials.EXTENSION_P12) ||
- path.endsWith(Credentials.EXTENSION_CER) ||
- path.endsWith(Credentials.EXTENSION_PFX));
- }
-
- protected boolean isSdCardPresent() {
- return Environment.getExternalStorageState().equals(
- Environment.MEDIA_MOUNTED);
- }
-
- private void install(String fileName, String name, int uid, byte[] value) {
- Intent intent = new Intent(this, CertInstaller.class);
- intent.putExtra(KeyChain.EXTRA_NAME, name);
- intent.putExtra(Credentials.EXTRA_INSTALL_AS_UID, uid);
- if (fileName.endsWith(Credentials.EXTENSION_PFX)
- || fileName.endsWith(Credentials.EXTENSION_P12)) {
- intent.putExtra(KeyChain.EXTRA_PKCS12, value);
- } else if (fileName.endsWith(Credentials.EXTENSION_CER)
- || fileName.endsWith(Credentials.EXTENSION_CRT)) {
- intent.putExtra(KeyChain.EXTRA_CERTIFICATE, value);
- } else {
- throw new AssertionError(fileName);
- }
- startActivityForResult(intent, REQUEST_INSTALL_CODE);
- }
-
- private void toastError(int msgId) {
- Toast.makeText(this, msgId, Toast.LENGTH_LONG).show();
- }
-}