Я хочу изменить псевдоним ключей, не создавая новые ключи
Глядя на документацию по Android, я попытался:
keyStore.setKeyEntry ("1111", privateKey, null, cert);
Но выдает сообщение об ошибке:
E / SecureKeyStore: можно заменить только ключи с одинаковым псевдонимом: 2222! = 1111
Создание ключей:
KeyStore keyStore = KeyStore.getInstance(getKeyStore());
keyStore.load(null);
Calendar start = Calendar.getInstance();
Calendar end = Calendar.getInstance();
end.add(Calendar.YEAR, 10);
KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec
.Builder(context)
.setAlias(alias)
.setKeySize(224)
.setKeyType(KeyProperties.KEY_ALGORITHM_EC)
.setSubject(new X500Principal("CN=" + alias)).setSerialNumber(BigInteger.ONE)
.setStartDate(start.getTime()).setEndDate(end.getTime())
.build();
KeyPairGenerator generator = KeyPairGenerator.getInstance("EC", getKeyStore());
generator.initialize(spec);
KeyPair keyPair = generator.generateKeyPair();
что я пробовал:
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
boolean result = false;
result = keyStore.containsAlias(alias);
keyStore.Entry entry = keyStore.getEntry(alias, null);
KeyStore.PrivateKeyEntry privateKeyEntry =(KeyStore.PrivateKeyEntry)keyStore.getEntry(alias, null);
PublicKey publicKey = privateKeyEntry.getCertificate().getPublicKey();
PrivateKey privateKey = privateKeyEntry.getPrivateKey();
KeyPair kp = generateKeyPair();
Key key = keyStore.getKey(alias, null);
Certificate[] cert = keyStore.getCertificateChain(alias);
keyStore.setKeyEntry("2222", privateKey, null, cert);
//keyStore.setKeyEntry("2222", key, null, cert);
//keyStore.setKeyEntry("2222", kp.getPrivate(), null, cert);
Я ожидаю этого:
входные данные: псевдоним: 1111, новый псевдоним: 2222
псевдоним: 1111 -> закрытый ключ: 4hj32hk и открытый ключ: hj43ih
псевдоним: 2222 -> закрытый ключ: 4hj32hk и открытый ключ: hj43ih