diff options
Diffstat (limited to 'OpenPGP-Keychain-API-Lib/src/org/sufficientlysecure/keychain/integration/KeychainServiceHelper.java')
-rw-r--r-- | OpenPGP-Keychain-API-Lib/src/org/sufficientlysecure/keychain/integration/KeychainServiceHelper.java | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/OpenPGP-Keychain-API-Lib/src/org/sufficientlysecure/keychain/integration/KeychainServiceHelper.java b/OpenPGP-Keychain-API-Lib/src/org/sufficientlysecure/keychain/integration/KeychainServiceHelper.java new file mode 100644 index 000000000..54e1f517a --- /dev/null +++ b/OpenPGP-Keychain-API-Lib/src/org/sufficientlysecure/keychain/integration/KeychainServiceHelper.java @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2012 Dominik Schürmann <dominik@dominikschuermann.de> + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.sufficientlysecure.keychain.integration; + +import java.io.InputStream; +import java.io.OutputStream; + +import android.content.ContentResolver; +import android.content.ContentValues; +import android.content.Context; +import android.net.Uri; +import android.util.Log; + +public class KeychainServiceHelper { + + private final static String BLOB_URI = "content://org.sufficientlysecure.keychain.provider.apgserviceblobprovider"; + + private Context context; + + public KeychainServiceHelper(Context context) { + this.context = context; + } + + /** + * Set up binary data to en/decrypt + * + * @param is + * InputStream to get the data from + */ + public void setBlob(InputStream is) { + Log.d(Constants.TAG, "setBlob() called"); + // 1. get the new contentUri + ContentResolver cr = context.getContentResolver(); + Uri contentUri = cr.insert(Uri.parse(BLOB_URI), new ContentValues()); + + // 2. insert binary data + OutputStream os = null; + try { + os = cr.openOutputStream(contentUri, "w"); + } catch (Exception e) { + Log.e(Constants.TAG, "... exception on setBlob", e); + } + + byte[] buffer = new byte[8]; + int len = 0; + try { + while ((len = is.read(buffer)) != -1) { + os.write(buffer, 0, len); + } + Log.d(Constants.TAG, "... write finished, now closing"); + os.close(); + } catch (Exception e) { + Log.e(Constants.TAG, "... error on writing buffer", e); + } + + // mArgs.putString("BLOB", contentUri.toString()); + } + + /** + * Get the binary result + * + * <p> + * This gets your binary result. It only works if you called {@link #setBlob(InputStream)} + * before. + * + * If you did not call encrypt nor decrypt, this will be the same data as you inputed. + * </p> + * + * @return InputStream of the binary data which was en/decrypted + * + * @see #setBlob(InputStream) + * @see #getResult() + */ + public InputStream getBlobResult() { + // if (mArgs.containsKey("BLOB")) { + ContentResolver cr = context.getContentResolver(); + InputStream in = null; + try { + // in = cr.openInputStream(Uri.parse(mArgs.getString("BLOB"))); + } catch (Exception e) { + Log.e(Constants.TAG, "Could not return blob in result", e); + } + return in; + // } else { + // return null; + // } + } +} |