This commit is contained in:
Dominik Schürmann 2013-09-10 12:48:29 +02:00
parent b83eb8ad55
commit aa449d2d4f

View file

@ -72,30 +72,30 @@ OpenPGP Keychain specific Intent actions:
To do asyncronous fast encryption/decryption/sign/verify operations bind to the remote service. To do asyncronous fast encryption/decryption/sign/verify operations bind to the remote service.
The API Demo contains all required AIDL files and a demo activity. The API Demo contains all required AIDL files and a demo activity.
TL;DR: Test API
--------
Try out the new OpenPGP Keychain API: Try out the new OpenPGP Keychain API:
Keychain:
https://play.google.com/stor/apps/details?id=org.sufficientlysecure.keychain
API Demo:
https://play.google.com/stor/apps/details?id=org.sufficientlysecure.keychain.demo
(also send to guardian-dev mailinglist) Keychain: https://play.google.com/stor/apps/details?id=org.sufficientlysecure.keychain
Long version: API Demo: https://play.google.com/stor/apps/details?id=org.sufficientlysecure.keychain.demo
Design
------
As discussed previously I now present my new Crypto API that I propose As discussed previously I now present my new Crypto API that I propose
for integration into k9mail. All apps wanting to use this generic API for integration into k9mail. All apps wanting to use this generic API
just need to include the AIDL files and connect to the service. Other just need to include the AIDL files and connect to the service. Other
crypto apps can implement a service based on this AIDL definition. crypto apps can implement a service based on this AIDL definition.
Design
------
The API is designed to be as easy as possible to use by apps like The API is designed to be as easy as possible to use by apps like
k9mail. The service definition defines k9mail. The service definition defines
sign/encrypt/signAndEncrypt/decryptAndVerify [1]. sign/encrypt/signAndEncrypt/decryptAndVerify [1].
As can be seen the apps themselves never need handle key ids directly. As can be seen the apps themselves never need handle key ids directly.
Only user ids (emails) are used to define recipients. If more than one Only user ids (emails) are used to define recipients. If more than one
pub key exists for an email, OpenPGP Keychain will handle the problem by pub key exists for an email, OpenPGP Keychain will handle the problem by
showing a selection screen. showing a selection screen.
Also app devs never need to fiddle with private keys. On first Also app devs never need to fiddle with private keys. On first
operation, OpenPGP Keychain shows an activity to allow or disallow operation, OpenPGP Keychain shows an activity to allow or disallow
access, while also allowing to choose the private key used for this app. access, while also allowing to choose the private key used for this app.
@ -105,6 +105,7 @@ Integration
----------- -----------
The API is defined as AIDL interfaces in org.openintents.crypto packge The API is defined as AIDL interfaces in org.openintents.crypto packge
[2]. All files from [2] needs to be included in the project. [2]. All files from [2] needs to be included in the project.
Using the CryptoServiceConnection.java [3] you can choose to which Using the CryptoServiceConnection.java [3] you can choose to which
crypto provider you want to connect (other pgp apps can implement the crypto provider you want to connect (other pgp apps can implement the
interfaces). They can be queried as shown in the demo app (see [3] how interfaces). They can be queried as shown in the demo app (see [3] how
@ -119,14 +120,14 @@ ToDos
- Integration in k9mail - Integration in k9mail
[1] https://github.com/dschuermann/openpgp-keychain/blob/master/OpenPGP-Keychain-API-Demo/src/org/openintents/crypto/ICryptoService.aidl [1] https://github.com/dschuermann/openpgp-keychain/blob/master/OpenPGP-Keychain-API-Demo/src/org/openintents/crypto/ICryptoService.aidl
[2] https://github.com/dschuermann/openpgp-keychain/tree/master/OpenPGP-Keychain-API-Demo/src/org/openintents/crypto
[3] https://github.com/dschuermann/openpgp-keychain/blob/master/OpenPGP-Keychain-API-Demo/src/org/openintents/crypto/CryptoServiceConnection.java
[3] https://github.com/dschuermann/openpgp-keychain/blob/master/OpenPGP-Keychain-API-Demo/src/org/sufficientlysecure/keychain/demo/CryptoProviderDemoActivity.java
[4] https://play.google.com/stor/apps/details?id=org.sufficientlysecure.keychain.demo
### Tutorial [2] https://github.com/dschuermann/openpgp-keychain/tree/master/OpenPGP-Keychain-API-Demo/src/org/openintents/crypto
1. Include all files from https://github.com/dschuermann/openpgp-keychain/tree/master/OpenPGP-Keychain-API-Demo/src/org/openintents/crypto
2. An example how to query for all available crypto providers: https://github.com/dschuermann/openpgp-keychain/blob/master/OpenPGP-Keychain-API-Demo/src/org/sufficientlysecure/keychain/demo/CryptoProviderDemoActivity.java [3] https://github.com/dschuermann/openpgp-keychain/blob/master/OpenPGP-Keychain-API-Demo/src/org/openintents/crypto/CryptoServiceConnection.java
[3] https://github.com/dschuermann/openpgp-keychain/blob/master/OpenPGP-Keychain-API-Demo/src/org/sufficientlysecure/keychain/demo/CryptoProviderDemoActivity.java
[4] https://play.google.com/stor/apps/details?id=org.sufficientlysecure.keychain.demo
# Libraries # Libraries