Статус: Участник
Группы: Участники
Зарегистрирован: 05.08.2011(UTC) Сообщений: 13
|
Подскажите, нормально ли то, что не работает keyStore.getEntry? Вот тест: Код:package foo.bar.cryptopro;
import org.junit.Test;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.PublicKey;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.junit.Assert.assertThat;
public class PrivateKeyEntryTest {
@Test
public void keyAlgorithmsShouldBeEqual() throws Exception {
KeyStore keyStore = KeyStore.getInstance("HDImageStore", "JCP");
keyStore.load(null, "changeit".toCharArray());
PrivateKey privateKey = (PrivateKey) keyStore.getKey("alias", "changeit".toCharArray());
PublicKey publicKey = keyStore.getCertificate("alias").getPublicKey();
assertThat(privateKey.getAlgorithm(), equalTo(publicKey.getAlgorithm()));
}
@Test
public void privateKeyEntryAvailable() throws Exception {
KeyStore keyStore = KeyStore.getInstance("HDImageStore", "JCP");
keyStore.load(null, "changeit".toCharArray());
KeyStore.PrivateKeyEntry privateKeyEntry =
(KeyStore.PrivateKeyEntry) keyStore.getEntry("alias", new KeyStore.PasswordProtection("changeit".toCharArray()));
assertThat(privateKeyEntry, notNullValue());
}
}
А вот его результаты Код:14.02.2012 11:03:30 ru.CryptoPro.JCP.tools.z a
INFO: Loading JCP 1.0.52
14.02.2012 11:03:30 ru.CryptoPro.JCP.tools.z a
INFO: JCP loaded.
java.lang.AssertionError:
Expected: "GOST3410"
got: "GOST3410DH"
<Click to see difference>
at org.junit.Assert.assertThat(Assert.java:780)
at org.junit.Assert.assertThat(Assert.java:738)
at foo.bar.cryptopro.PrivateKeyEntryTest.keyAlgorithmsShouldBeEqual(PrivateKeyEntryTest.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
Код:java.lang.IllegalArgumentException: private key algorithm does not match algorithm of public key in end entity certificate (at index 0)
at java.security.KeyStore$PrivateKeyEntry.<init>(KeyStore.java:379)
at java.security.KeyStoreSpi.engineGetEntry(KeyStoreSpi.java:459)
at java.security.KeyStore.getEntry(KeyStore.java:1261)
at foo.bar.cryptopro.PrivateKeyEntryTest.privateKeyEntryAvailable(PrivateKeyEntryTest.java:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
Второй тест падает как раз по той же причине, по которой и первый.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 08.05.2008(UTC) Сообщений: 41 Откуда: Крипто-Про Поблагодарили: 1 раз в 1 постах
|
Возможно, вы действительно записали "чужой" сертификат в контейнер этого секретного ключа? например, с помощью CSP?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.08.2011(UTC) Сообщений: 13
|
Цитата:Возможно, вы действительно записали "чужой" сертификат в контейнер этого секретного ключа? например, с помощью CSP? На самом деле я действовал следующим образом: 1. Сгенерировал новый контейнер через панель управления JCP 2. Сохранил запрос на сертификат 3. С сохраненным запросом на сертификат я пошел в Тестовый УЦ и получил цепочку сертификатов 4. Цепочку сохранил в контейнер секретного ключа. Все делалось через панель JCP. Но даже и для только что сгенерированного контейнера с секретным ключом и самоподписным сертификатом ошибка воспроизводится - алгоритм секретного ключа GOST3410DH, алгоритм публичного ключа - GOST3410 из-за чего и возникает ошибка.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 29.03.2012(UTC) Сообщений: 2 Откуда: Новосибирск
|
И как исправить эту проблему?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.08.2011(UTC) Сообщений: 13
|
Цитата:И как исправить эту проблему? Видимо, исправить могут только разработчики JCP. А в целом, интересно было бы узнать, по какой причине отличаются алгоритм секретного ключа (GOST3410DH) и алгоритм публичного ключа (GOST3410)?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close