diff options
Diffstat (limited to 'OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp')
7 files changed, 407 insertions, 0 deletions
| diff --git a/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/IOpenPgpCallback.aidl b/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/IOpenPgpCallback.aidl new file mode 100644 index 000000000..e0ac43d22 --- /dev/null +++ b/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/IOpenPgpCallback.aidl @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2013 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.openintents.openpgp; + +import org.openintents.openpgp.OpenPgpSignatureResult; +import org.openintents.openpgp.OpenPgpError; + +interface IOpenPgpCallback { +     +    /** +     * CryptoSignatureResult is only returned if the Callback was used from decryptAndVerify +     * +     */ +    oneway void onSuccess(in byte[] outputBytes, in OpenPgpSignatureResult signatureResult); + +    oneway void onError(in OpenPgpError error); +}
\ No newline at end of file diff --git a/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/IOpenPgpService.aidl b/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/IOpenPgpService.aidl new file mode 100644 index 000000000..1d54ac77f --- /dev/null +++ b/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/IOpenPgpService.aidl @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2013 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.openintents.openpgp; + +import org.openintents.openpgp.IOpenPgpCallback; + +/** + * All methods are oneway, which means they are asynchronous and non-blocking. + * Results are returned to the callback, which has to be implemented on client side. + */ +interface IOpenPgpService { +        +    /** +     * Encrypt +     *  +     * @param inputBytes +     *            Byte array you want to encrypt +     * @param encryptionUserIds +     *            User Ids (emails) of recipients +     * @param asciiArmor +     *            Encode for ASCII (Radix-64, 33 percent overhead compared to binary) +     * @param callback +     *            Callback where to return results +     */ +    oneway void encrypt(in byte[] inputBytes, in String[] encryptionUserIds, in boolean asciiArmor, in IOpenPgpCallback callback); +     +    /** +     * Sign +     * +     * @param inputBytes +     *            Byte array you want to encrypt +     * @param asciiArmor +     *            Encode for ASCII (Radix-64, 33 percent overhead compared to binary) +     * @param callback +     *            Callback where to return results +     */ +    oneway void sign(in byte[] inputBytes, in boolean asciiArmor, in IOpenPgpCallback callback); +     +    /** +     * Encrypt and sign +     * +     * @param inputBytes +     *            Byte array you want to encrypt +     * @param encryptionUserIds +     *            User Ids (emails) of recipients +     * @param signatureUserId +     *            User Ids (email) of sender +     * @param asciiArmor +     *            Encode for ASCII (Radix-64, 33 percent overhead compared to binary) +     * @param callback +     *            Callback where to return results +     */ +    oneway void encryptAndSign(in byte[] inputBytes, in String[] encryptionUserIds, in boolean asciiArmor, in IOpenPgpCallback callback); +     +    /** +     * Decrypts and verifies given input bytes. If no signature is present this method +     * will only decrypt. +     *  +     * @param inputBytes +     *            Byte array you want to decrypt and verify +     * @param callback +     *            Callback where to return results +     */ +    oneway void decryptAndVerify(in byte[] inputBytes, in IOpenPgpCallback callback); +     +}
\ No newline at end of file diff --git a/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/OpenPgpError.aidl b/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/OpenPgpError.aidl new file mode 100644 index 000000000..7a6bed1e6 --- /dev/null +++ b/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/OpenPgpError.aidl @@ -0,0 +1,20 @@ +/* + * Copyright (C) 2013 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.openintents.openpgp; + +// Declare OpenPgpError so AIDL can find it and knows that it implements the parcelable protocol. +parcelable OpenPgpError;
\ No newline at end of file diff --git a/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/OpenPgpError.java b/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/OpenPgpError.java new file mode 100644 index 000000000..66f168d89 --- /dev/null +++ b/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/OpenPgpError.java @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2013 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.openintents.openpgp; + +import android.os.Parcel; +import android.os.Parcelable; + +public class OpenPgpError implements Parcelable { +    public static final int ID_NO_OR_WRONG_PASSPHRASE = 1; +    public static final int ID_NO_USER_IDS = 2; + +    int errorId; +    String message; + +    public OpenPgpError() { +    } + +    public OpenPgpError(int errorId, String message) { +        this.errorId = errorId; +        this.message = message; +    } + +    public OpenPgpError(OpenPgpError b) { +        this.errorId = b.errorId; +        this.message = b.message; +    } + +    public int getErrorId() { +        return errorId; +    } + +    public void setErrorId(int errorId) { +        this.errorId = errorId; +    } + +    public String getMessage() { +        return message; +    } + +    public void setMessage(String message) { +        this.message = message; +    } + +    public int describeContents() { +        return 0; +    } + +    public void writeToParcel(Parcel dest, int flags) { +        dest.writeInt(errorId); +        dest.writeString(message); +    } + +    public static final Creator<OpenPgpError> CREATOR = new Creator<OpenPgpError>() { +        public OpenPgpError createFromParcel(final Parcel source) { +            OpenPgpError error = new OpenPgpError(); +            error.errorId = source.readInt(); +            error.message = source.readString(); +            return error; +        } + +        public OpenPgpError[] newArray(final int size) { +            return new OpenPgpError[size]; +        } +    }; +} diff --git a/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/OpenPgpServiceConnection.java b/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/OpenPgpServiceConnection.java new file mode 100644 index 000000000..9f4fec470 --- /dev/null +++ b/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/OpenPgpServiceConnection.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2013 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.openintents.openpgp; + +import org.openintents.openpgp.IOpenPgpService; + +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.ServiceConnection; +import android.os.IBinder; +import android.util.Log; + +public class OpenPgpServiceConnection { +    private Context mApplicationContext; + +    private IOpenPgpService mService; +    private boolean bound; +    private String cryptoProviderPackageName; + +    private static final String TAG = "OpenPgpServiceConnection"; + +    public OpenPgpServiceConnection(Context context, String cryptoProviderPackageName) { +        mApplicationContext = context.getApplicationContext(); +        this.cryptoProviderPackageName = cryptoProviderPackageName; +    } + +    public IOpenPgpService getService() { +        return mService; +    } + +    private ServiceConnection mCryptoServiceConnection = new ServiceConnection() { +        public void onServiceConnected(ComponentName name, IBinder service) { +            mService = IOpenPgpService.Stub.asInterface(service); +            Log.d(TAG, "connected to service"); +            bound = true; +        } + +        public void onServiceDisconnected(ComponentName name) { +            mService = null; +            Log.d(TAG, "disconnected from service"); +            bound = false; +        } +    }; + +    /** +     * If not already bound, bind! +     *  +     * @return +     */ +    public boolean bindToService() { +        if (mService == null && !bound) { // if not already connected +            try { +                Log.d(TAG, "not bound yet"); + +                Intent serviceIntent = new Intent(); +                serviceIntent.setAction(IOpenPgpService.class.getName()); +                serviceIntent.setPackage(cryptoProviderPackageName); +                mApplicationContext.bindService(serviceIntent, mCryptoServiceConnection, +                        Context.BIND_AUTO_CREATE); + +                return true; +            } catch (Exception e) { +                Log.d(TAG, "Exception", e); +                return false; +            } +        } else { // already connected +            Log.d(TAG, "already bound... "); +            return true; +        } +    } + +    public void unbindFromService() { +        mApplicationContext.unbindService(mCryptoServiceConnection); +    } + +} diff --git a/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/OpenPgpSignatureResult.aidl b/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/OpenPgpSignatureResult.aidl new file mode 100644 index 000000000..e246792d0 --- /dev/null +++ b/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/OpenPgpSignatureResult.aidl @@ -0,0 +1,20 @@ +/* + * Copyright (C) 2013 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.openintents.openpgp; + +// Declare OpenPgpSignatureResult so AIDL can find it and knows that it implements the parcelable protocol. +parcelable OpenPgpSignatureResult;
\ No newline at end of file diff --git a/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/OpenPgpSignatureResult.java b/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/OpenPgpSignatureResult.java new file mode 100644 index 000000000..d8642664f --- /dev/null +++ b/OpenPGP-Keychain-API-Demo/src/org/openintents/openpgp/OpenPgpSignatureResult.java @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2013 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.openintents.openpgp; + +import android.os.Parcel; +import android.os.Parcelable; + +public class OpenPgpSignatureResult implements Parcelable { +    String signatureUserId; + +    boolean signature; +    boolean signatureSuccess; +    boolean signatureUnknown; + +    public OpenPgpSignatureResult() { + +    } + +    public OpenPgpSignatureResult(String signatureUserId, boolean signature, +            boolean signatureSuccess, boolean signatureUnknown) { +        this.signatureUserId = signatureUserId; + +        this.signature = signature; +        this.signatureSuccess = signatureSuccess; +        this.signatureUnknown = signatureUnknown; +    } + +    public OpenPgpSignatureResult(OpenPgpSignatureResult b) { +        this.signatureUserId = b.signatureUserId; + +        this.signature = b.signature; +        this.signatureSuccess = b.signatureSuccess; +        this.signatureUnknown = b.signatureUnknown; +    } + +    public int describeContents() { +        return 0; +    } + +    public void writeToParcel(Parcel dest, int flags) { +        dest.writeString(signatureUserId); + +        dest.writeByte((byte) (signature ? 1 : 0)); +        dest.writeByte((byte) (signatureSuccess ? 1 : 0)); +        dest.writeByte((byte) (signatureUnknown ? 1 : 0)); +    } + +    public static final Creator<OpenPgpSignatureResult> CREATOR = new Creator<OpenPgpSignatureResult>() { +        public OpenPgpSignatureResult createFromParcel(final Parcel source) { +            OpenPgpSignatureResult vr = new OpenPgpSignatureResult(); +            vr.signatureUserId = source.readString(); +            vr.signature = source.readByte() == 1; +            vr.signatureSuccess = source.readByte() == 1; +            vr.signatureUnknown = source.readByte() == 1; +            return vr; +        } + +        public OpenPgpSignatureResult[] newArray(final int size) { +            return new OpenPgpSignatureResult[size]; +        } +    }; + +    @Override +    public String toString() { +        String out = new String(); +        out += "signature: " + signature; +        out += "\nsignatureSuccess: " + signatureSuccess; +        out += "\nsignatureUnknown: " + signatureUnknown; +        return out; +    } + +} | 
