请不要理解下面代码中我缺少的任何提示?
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。
提前谢谢!
答案 0 :(得分:1)
没关系。我已经想通了 - 有点搞乱了sharedUserID。如果sharedUserID被正确声明 - 一切正常。 问题可以结束。