Как изменить псевдоним, сохранив предыдущие ключи - PullRequest
0 голосов
/ 26 сентября 2019

Я хочу изменить псевдоним ключей, не создавая новые ключи

Глядя на документацию по 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...