diff options
author | Selim Gurun <sgurun@google.com> | 2012-02-14 10:50:42 -0800 |
---|---|---|
committer | Selim Gurun <sgurun@google.com> | 2012-02-14 15:43:31 -0800 |
commit | 0cb57ed171d7898f5f052e86e485771cbcbadcd8 (patch) | |
tree | 326a1624f1cd1ab540923ba3f6d6d8f703cc3b7e /src | |
parent | 92b24f5b7f8273313d081abf2e6824a2fd76c001 (diff) | |
download | android_packages_apps_KeyChain-0cb57ed171d7898f5f052e86e485771cbcbadcd8.tar.gz android_packages_apps_KeyChain-0cb57ed171d7898f5f052e86e485771cbcbadcd8.tar.bz2 android_packages_apps_KeyChain-0cb57ed171d7898f5f052e86e485771cbcbadcd8.zip |
Broadcast credential storage changes.
Bug: 6009802
When credential storage changes (adding/deleting a user CA) or
reset, send a broadcast intent so user can update any cached
credential storage state.
Change-Id: Ie88fa4e86647ba52521b207258b860154a96c7dc
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/keychain/KeyChainService.java | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/com/android/keychain/KeyChainService.java b/src/com/android/keychain/KeyChainService.java index 418f575..1ab3ad3 100644 --- a/src/com/android/keychain/KeyChainService.java +++ b/src/com/android/keychain/KeyChainService.java @@ -28,6 +28,7 @@ import android.database.sqlite.SQLiteOpenHelper; import android.os.IBinder; import android.security.Credentials; import android.security.IKeyChainService; +import android.security.KeyChain; import android.security.KeyStore; import android.util.Log; import java.io.ByteArrayInputStream; @@ -39,6 +40,7 @@ import java.security.cert.X509Certificate; import org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore; public class KeyChainService extends IntentService { + private static final String TAG = "KeyChain"; private static final String DATABASE_NAME = "grants.db"; @@ -123,6 +125,7 @@ public class KeyChainService extends IntentService { } catch (CertificateException e) { throw new IllegalStateException(e); } + broadcastStorageChange(); } private X509Certificate parseCertificate(byte[] bytes) throws CertificateException { @@ -144,14 +147,20 @@ public class KeyChainService extends IntentService { } } } - return ok; } + broadcastStorageChange(); + return ok; } @Override public boolean deleteCaCertificate(String alias) { // only Settings should be able to delete checkSystemCaller(); - return deleteCertificateEntry(alias); + boolean ok = true; + synchronized (mTrustedCertificateStore) { + ok = deleteCertificateEntry(alias); + } + broadcastStorageChange(); + return ok; } private boolean deleteCertificateEntry(String alias) { @@ -196,6 +205,7 @@ public class KeyChainService extends IntentService { @Override public void setGrant(int uid, String alias, boolean value) { checkSystemCaller(); setGrantInternal(mDatabaseHelper.getWritableDatabase(), uid, alias, value); + broadcastStorageChange(); } }; @@ -289,4 +299,10 @@ public class KeyChainService extends IntentService { db.endTransaction(); } } + + private void broadcastStorageChange() { + Intent intent = new Intent(KeyChain.ACTION_STORAGE_CHANGED); + sendBroadcast(intent); + } + } |