Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Наши способы организации безопасного удалённого доступа к рабочим местам и корпоративным ресурсам
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline coldplay  
#1 Оставлено : 16 октября 2020 г. 13:28:31(UTC)
coldplay

Статус: Активный участник

Группы: Участники
Зарегистрирован: 16.02.2016(UTC)
Сообщений: 59

Сказал(а) «Спасибо»: 17 раз
Поблагодарили: 2 раз в 2 постах
Собранный подписанный шифрованный контейнер в арме (АРМ 5.4.3.10 CSP 4.0.9944) потребляется у заказчика без проблем.
С помощью JCP(jcp-2.0.40502) собираю свой контейнер и он потребляется с ошибкой. Ошибка общая, конкретное место не указывает.
Смотрю разницу в структуре контейнеров. EnvelopedData вроде одинаковая, а вот в структуре подписи есть разница.
Целевые данные в контейнере одинаковые, сертификат приложен одинаковый , но в signerInfos есть разница. Рабочий:
arm
Полученный через JCP:
jcp

Метод формирования:
Код:

private fun sign2(data: ByteArray, key: PrivateKey, cert: Certificate): ByteArray {
    val certStore: Store = JcaCertStore(setOf(cert))
    val generator = CMSSignedDataGenerator()
    val contentSigner: ContentSigner = GostContentSignerProvider(
        key, JCP.PROVIDER_NAME
    )
    val signerInfoGenerator: SignerInfoGenerator =
        JcaSignerInfoGeneratorBuilder(
            GostDigestCalculatorProvider(key, JCP.PROVIDER_NAME)
        ).build(contentSigner, cert as X509Certificate)
    generator.addSignerInfoGenerator(signerInfoGenerator)
    generator.addCertificates(certStore)

    val content: CMSProcessable = CMSProcessableByteArray(data)
    val signedData =
        generator.generate(content as CMSTypedData, true)
    return signedData.encoded
}


Так же попробовал сделать подпись из примера CMSSignAndEncrypt
Получил такую структуру:
cms
Оба метода так или иначе используются успешно в других рабочих модулях. Но вот в конкретном случае есть проблемы. Корректны ли методы ? В чем может быть проблема , и как получить ту же сигнатуру что и в арме ?

Отредактировано пользователем 16 октября 2020 г. 13:38:30(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#2 Оставлено : 18 октября 2020 г. 10:14:47(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,191
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 14 раз
Поблагодарили: 515 раз в 494 постах
Здравствуйте.
Можете привести текст ошибки после проверки подписи?
Если вопрос в OID алгоритма в конце подписи, то попробуйте использовать сборку JCP 2.0.41473 и выше: в JCP алгоритм подписи образован парой digest_algorithmWITHkey_algorithm, в key_algorithm мог быть OID как ключа подписи, так и обмена, такая подпись успешно проверяется CSP. В последних сборках OID, указанный в подписи, стал OID ключа подписи.
Offline coldplay  
#3 Оставлено : 18 октября 2020 г. 11:59:01(UTC)
coldplay

Статус: Активный участник

Группы: Участники
Зарегистрирован: 16.02.2016(UTC)
Сообщений: 59

Сказал(а) «Спасибо»: 17 раз
Поблагодарили: 2 раз в 2 постах
Вообщем проблема была в шифровании. К сожалению заказчик не может предоставить конкретную ошибку. Поэтому все попытки решения были методом подбора вслепую.
Подошел пример из EnvelopedData. Но опять же поскольку конкретной ошибки нету, то и весь пост особой пользы не имеет, было бы здорово просто удалить его =)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.