Статус: Новичок
Группы: Участники
Зарегистрирован: 12.04.2018(UTC) Сообщений: 5
|
Добрый день. На android девайсе установлена ACSP, через панель управления скопировал контейнер с тестовым сертификатом. Так же создал ключевой контейнер и прописал данные сертификата через ACSP. В списке личных, отображаются оба контейнера с сертификатами, вообщем все вроде бы хорошо. Теперь пытаюсь получить данные контейнера в своем приложении. Делаю как и многие вот так: Код:
class SignController(private val clientAlias: String? = null,
private val clientPassword: String? = null) {
fun requestSign(signable: ByteArray): ByteArray {
val keyStore = KeyStore.getInstance(JCSP.HD_STORE_NAME, JCSP.PROVIDER_NAME).apply { load(null, null) }
val privateKey = keyStore.getKey(clientAlias, clientPassword?.toCharArray()) as PrivateKey?
val certificate = keyStore.getCertificate(clientAlias) as X509Certificate?
if (privateKey == null || certificate == null) throw Error("Private key or/and certificate is null.")
return Signature.getInstance(privateKey.algorithm, JCSP.PROVIDER_NAME).run {
initSign(privateKey)
update(signable)
sign()
}
}
}
Как бы я не изощрялся keyStore.aliases() возвращается с пустым вектором. Соответственно нет приватного ключа нет сертификата и обе переменные null. В activity есть вызов Код:val initCode = CSPConfig.init(activity)
и вызов Код:fun initJavaProviders() {
// Загрузка Java CSP (хеш, подпись, шифрование,
// генерация контейнеров).
if (Security.getProvider(JCSP.PROVIDER_NAME) == null) {
Security.addProvider(JCSP())
}
// Инициализация XML DSig (хеш, подпись).
XmlInit.init()
}
В документации не смог найти причину, так же обнаружил в how_to_build.doc, информацию о intnet 'ах. Подскажите пожалуйста следующее: 1) Как можно и нужно обращаться к KeyStore за контейнером из ACSP 2) Можно ли это сделать без intent 'ов из моего приложения в ACSP? Если да, как? Отредактировано пользователем 17 апреля 2018 г. 16:00:47(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Здравствуйте. Автор: sibuty 1) Как можно и нужно обращаться к KeyStore за контейнером из ACSP 2) Можно ли это сделать без intent 'ов из моего приложения в ACSP? Если да, как? 1) Только с помощью интентов (доступ к файлам другого приложения ограничен). 2) Пока нет. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 12.04.2018(UTC) Сообщений: 5
|
Тогда такой вопрос, если у меня будет носитель, например RuToken, к нему я смогу обратиться заменив согласно доке
тут, вот этот параметр JCSP.HD_STORE_NAME val keyStore = KeyStore.getInstance(JCSP.HD_STORE_NAME, JCSP.PROVIDER_NAME).apply { load(null, null) }?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 12.04.2018(UTC) Сообщений: 5
|
Ага, спасибо, понял принял. :)
То есть выходит хранилище HD_STORE_NAME в рамках каждого app будет свое, а в случае носителя, RuToken к примеру, мне даже не нужно будет ставить ACSP? Т.к. я смогу через SDK свободно получить данные?
И еще такой вопрос, копирование контейнера всегда происходит в HD_STORE_NAME ACSP, в случае общения по intent 'ам? А если я хочу использовать SDK, мне нужно руками подключать сертификат к HD_STORE_NAME хранилищу в моем app?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
HDIMAGE - да, внутри каждого приложения. ACSP нужен, т.к. он содержит csp. При вызове интентов используются контейнеры внутри acsp (скопированные туда или созданные там). На счет Sdk не понял. Сертификат извлекается из контейнера. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 12.04.2018(UTC) Сообщений: 5
|
Добрый день. Имел ввиду следующее, если я хочу работать с носителем RuToken, и если я буду использовать JCSP то мне будет необходимо приложение ACSP, но если я буду использовать JCP, я смогу получить доступ к контейнеру и к сертификату на носителе не имея на девайсе ACSP? Отредактировано пользователем 18 апреля 2018 г. 13:41:28(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Добрый день. В любом случае необходим ACSP, т.к. это и есть провайдер. JCSP, условно, переадресует запросы (CSP). JCP - криптопровайдер на java, доступа к носителям не имеет. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 12.04.2018(UTC) Сообщений: 5
|
Ок, понял. Спасибо еще раз за пояснения. :)
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close