Android密钥库使用(在不同的应用程序之间)

时间:2015-06-17 01:49:01

标签: android

请不要理解下面代码中我缺少的任何提示?

void addKeyToKeyStore() {                   
Calendar cal = Calendar.getInstance();
Date now = cal.getTime();
cal.add(Calendar.YEAR, 1);
Date end = cal.getTime();
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
kpg.initialize(new KeyPairGeneratorSpec.Builder(getApplicationContext())
     .setAlias("MY_ALIAS")
     .setStartDate(now)
     .setEndDate(end)
     .setSerialNumber(BigInteger.valueOf(1))
     .setSubject(new X500Principal("CN=MY_ALIAS"))
     .build());
}

void ListTheKeys() {
 KeyStore ks = KeyStore.getInstance("AndroidKeyStore");
 ks.load(null);
 final Enumeration<String> aliases = ks.aliases();
 while(aliases.hasMoreElements()) {
   Log.d(TAG, "Key Alias = "+aliases.nextElement());
 }
 String tempstr= "Entry for MY_ALIAS is " + (ks.isKeyEntry(key)? "exist" : "not exist");
 Log.d(TAG, tempstr)
}

如果同一个应用调用addKeyToKeyStore()然后调用ListTheKeys(),则该条目存在。如果应用重启或手机重启,它也可以使用。 但是,如果app1调用addKeyToKeyStore(),则app2会调用ListTheKeys() - 没有添加任何条目。 尝试在AndroidManifest中设置相同的sharedUserID - 没有效果。 我需要能够从不同的应用程序访问KeyStore。 提前谢谢!

1 个答案:

答案 0 :(得分:1)

没关系。我已经想通了 - 有点搞乱了sharedUserID。如果sharedUserID被正确声明 - 一切正常。 问题可以结束。