package info.guardianproject.pixelknot.crypto; /* * Based on code from K9Mail: * http://code.google.com/p/k9mail/source/browse/k9mail/branches/apg-integration/ */ import android.app.Activity; import android.content.Context; import android.content.Intent; import java.io.File; import java.io.Serializable; abstract public class CryptoProvider implements Serializable { static final long serialVersionUID = 0x21071234; protected long mEncryptionKeyIds[] = null; protected long mSignatureKeyId = 0; protected String mSignatureUserId = null; protected boolean mSignatureSuccess = false; protected boolean mSignatureUnknown = false; protected String mDecryptedData = null; protected String mEncryptedData = null; abstract public boolean isAvailable(Context context); abstract public boolean isEncrypted(String message); abstract public boolean isSigned(String message); abstract public boolean onActivityResult(Activity activity, int requestCode, int resultCode, Intent data); abstract public boolean selectSecretKey(Activity activity); abstract public boolean selectEncryptionKeys(Activity activity, String emails); abstract public boolean encrypt(Activity activity, String data); abstract public boolean encryptFile(Activity activity, File file); abstract public boolean decrypt(Activity activity, String data); abstract public long[] getSecretKeyIdsFromEmail(Context context, String email); abstract public String getUserId(Context context, long keyId); abstract public String getName(); abstract public boolean test(Context context); public static CryptoProvider createInstance() { return Apg.createInstance(); // return None.createInstance(account); } public void setSignatureKeyId(long keyId) { mSignatureKeyId = keyId; } public long getSignatureKeyId() { return mSignatureKeyId; } public void setEncryptionKeys(long keyIds[]) { mEncryptionKeyIds = keyIds; } public long[] getEncryptionKeys() { return mEncryptionKeyIds; } public boolean hasSignatureKey() { return mSignatureKeyId != 0; } public boolean hasEncryptionKeys() { return (mEncryptionKeyIds != null) && (mEncryptionKeyIds.length > 0); } public String getEncryptedData() { return mEncryptedData; } public String getDecryptedData() { return mDecryptedData; } public void setSignatureUserId(String userId) { mSignatureUserId = userId; } public String getSignatureUserId() { return mSignatureUserId; } public boolean getSignatureSuccess() { return mSignatureSuccess; } public boolean getSignatureUnknown() { return mSignatureUnknown; } }