aboutsummaryrefslogtreecommitdiffstats
path: root/src/org/thialfihar/android/apg/provider
diff options
context:
space:
mode:
authorThialfihar <thialfihar@gmail.com>2010-07-09 11:28:39 +0000
committerThialfihar <thialfihar@gmail.com>2010-07-09 11:28:39 +0000
commit3ac472125a7ad3b7b600c32129a50def3b8a1b8a (patch)
tree94c4bab7ce686dd048e132eea57cff2c950ee03a /src/org/thialfihar/android/apg/provider
parentf03b34905724f6f1fbdad03c974d29b730a7d827 (diff)
downloadopen-keychain-3ac472125a7ad3b7b600c32129a50def3b8a1b8a.tar.gz
open-keychain-3ac472125a7ad3b7b600c32129a50def3b8a1b8a.tar.bz2
open-keychain-3ac472125a7ad3b7b600c32129a50def3b8a1b8a.zip
some playing with content stream decryption and providing the result as content stream
Diffstat (limited to 'src/org/thialfihar/android/apg/provider')
-rw-r--r--src/org/thialfihar/android/apg/provider/DataProvider.java18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/org/thialfihar/android/apg/provider/DataProvider.java b/src/org/thialfihar/android/apg/provider/DataProvider.java
index 0a4bfbad4..9cf083528 100644
--- a/src/org/thialfihar/android/apg/provider/DataProvider.java
+++ b/src/org/thialfihar/android/apg/provider/DataProvider.java
@@ -16,6 +16,8 @@
package org.thialfihar.android.apg.provider;
+import java.io.File;
+import java.io.FileNotFoundException;
import java.util.HashMap;
import org.thialfihar.android.apg.Id;
@@ -27,6 +29,7 @@ import android.database.Cursor;
import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;
+import android.os.ParcelFileDescriptor;
import android.text.TextUtils;
public class DataProvider extends ContentProvider {
@@ -50,6 +53,8 @@ public class DataProvider extends ContentProvider {
private static final int SECRET_KEY_RING_USER_ID = 221;
private static final int SECRET_KEY_RING_USER_ID_RANK = 222;
+ private static final int DATA_STREAM = 301;
+
private static final String PUBLIC_KEY_RING_CONTENT_DIR_TYPE =
"vnd.android.cursor.dir/vnd.thialfihar.apg.public.key_ring";
private static final String PUBLIC_KEY_RING_CONTENT_ITEM_TYPE =
@@ -109,6 +114,8 @@ public class DataProvider extends ContentProvider {
mUriMatcher.addURI(AUTHORITY, "key_rings/secret", SECRET_KEY_RING);
mUriMatcher.addURI(AUTHORITY, "key_rings/secret/*", SECRET_KEY_RING_ID);
+
+ mUriMatcher.addURI(AUTHORITY, "data/*", DATA_STREAM);
}
@Override
@@ -360,4 +367,15 @@ public class DataProvider extends ContentProvider {
// not supported
return 0;
}
+
+ @Override
+ public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
+ int match = mUriMatcher.match(uri);
+ if (match != DATA_STREAM) {
+ throw new FileNotFoundException();
+ }
+ String fileName = uri.getPathSegments().get(1);
+ File file = new File(getContext().getFilesDir().getAbsolutePath(), fileName);
+ return ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
+ }
}