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

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline Виктор 75  
#11 Оставлено : 19 декабря 2024 г. 16:58:01(UTC)
Виктор 75

Статус: Новичок

Группы: Участники
Зарегистрирован: 02.12.2024(UTC)
Сообщений: 8
Российская Федерация

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 2 раз в 2 постах
Автор: Евгений Афанасьев Перейти к цитате
И где в вашем примере addSigner.


В нашем примере addSigner не используется. Можем предоставить наш тестовый проект.

Код:

    fun signDataTest(file: File): ByteArray? {
        System.setProperty("com.sun.security.enableCRLDP", "true")
        System.setProperty("com.ibm.security.enableCRLDP", "true")
        val fileData = Files.readAllBytes(file.toPath())
        val alias = "proud_sosow"
        val pass = "123"
        val keyStore = KeyStore.getInstance(JCSP.HD_STORE_NAME, JCSP.PROVIDER_NAME)
        keyStore.load(null, null)
        val certificate = keyStore.getCertificate(alias) as X509Certificate
        val privateKey = keyStore.getKey(alias, pass.toCharArray()) as PrivateKey
        val chain: MutableList<X509Certificate> = mutableListOf()

        var holderList : MutableList<X509CertificateHolder> = ArrayList<X509CertificateHolder>()
        for (certificate in keyStore.getCertificateChain(alias)) {
            Log.i("@@@@","Certificate is $certificate")
            chain.add(certificate as X509Certificate)
        }
        for (cert in chain) {
            holderList.add(X509CertificateHolder(cert.encoded))
            Log.i("@@@@" , X509CertificateHolder(cert.encoded).encoded.toString())
        }
        val cAdESSignature = CAdESSignature()
        val signatureStream = ByteArrayOutputStream()
        cAdESSignature.open(signatureStream)
        cAdESSignature.certificateStore = CollectionStore(holderList)
        cAdESSignature.update(fileData)
        cAdESSignature.close()
        signatureStream.close()
        return signatureStream.toByteArray()
    }

Offline savuerka  
#12 Оставлено : 19 декабря 2024 г. 17:47:26(UTC)
savuerka

Статус: Новичок

Группы: Участники
Зарегистрирован: 19.12.2024(UTC)
Сообщений: 2
Российская Федерация
Откуда: Чита

Сказал(а) «Спасибо»: 2 раз
Автор: Виктор 75 Перейти к цитате
Автор: Евгений Афанасьев Перейти к цитате
Приведите тогда стек ошибки, лог.


В логах ошибки нет, дополнительно прикрепляю результат подписания
test1.log (46kb) загружен 1 раз(а).
IMG_20241112_175648.jpg.sig (918kb) загружен 1 раз(а).


Я взял то же код и попробовал подписать, в итоге получилось получить ошибку:
test.log (7kb) загружен 4 раз(а).
, с кодом:
Код:

fun signDataTest(file: File): ByteArray? {
        System.setProperty("com.sun.security.enableCRLDP", "true")
        System.setProperty("com.ibm.security.enableCRLDP", "true")
        val fileData = Files.readAllBytes(file.toPath())
        val alias = "proud_sosow"
        val pass = "123"
        val keyStore = KeyStore.getInstance(JCSP.HD_STORE_NAME, JCSP.PROVIDER_NAME)
        keyStore.load(null, null)
        val certificate = keyStore.getCertificate(alias) as X509Certificate
        val privateKey = keyStore.getKey(alias, pass.toCharArray()) as PrivateKey
        val chain: MutableList<X509Certificate> = mutableListOf()

        var holderList : MutableList<X509CertificateHolder> = ArrayList<X509CertificateHolder>()
        for (certificate in keyStore.getCertificateChain(alias)) {
            Log.i("@@@@","Certificate is $certificate")
            chain.add(certificate as X509Certificate)
        }
        for (cert in chain) {
            holderList.add(X509CertificateHolder(cert.encoded))
            Log.i("@@@@" , X509CertificateHolder(cert.encoded).encoded.toString())
        }
        val cAdESSignature = CAdESSignature()
        val signatureStream = ByteArrayOutputStream()
        cAdESSignature.open(signatureStream)
        cAdESSignature.certificateStore = CollectionStore(holderList)
        cAdESSignature.update(fileData)
        //cAdESSignature.addSigner(JCSP.PROVIDER_NAME, null, null, privateKey, chain, CAdESType.CAdES_BES, "http://testca.cryptopro.ru/tsp/", false)
        cAdESSignature.addSigner(JCSP.PROVIDER_NAME, null, null, privateKey, chain, CAdESType.CAdES_BES, null, false, null, null, null, true)
        cAdESSignature.close()
        signatureStream.close()
        return signatureStream.toByteArray()
    }



Offline Евгений Афанасьев  
#13 Оставлено : 19 декабря 2024 г. 20:47:18(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 708 раз в 669 постах
.
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
Виктор 75 оставлено 20.12.2024(UTC)
Offline Евгений Афанасьев  
#14 Оставлено : 19 декабря 2024 г. 20:49:26(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 708 раз в 669 постах
Автор: Виктор 75 Перейти к цитате

В нашем примере addSigner не используется. Можем предоставить наш тестовый проект.

Зачем тогда подпись?

В доработанном примере:
Root certificate: serial 5e087637, subject C=RU, CN=proud_sosow, issuer C=RU, CN=proud_sosow, not before Wed Dec 18 21:22:08 GMT+08:00 2024, not after Thu Dec 18 21:22:08 GMT+08:00 2025 is untrusted
Корневой сертификат не установлен в cacerts внутри приложения. Посмотрите пример InstallCAdESTestTrustCertExample.

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
Виктор 75 оставлено 20.12.2024(UTC)
Offline Виктор 75  
#15 Оставлено : 20 декабря 2024 г. 16:47:55(UTC)
Виктор 75

Статус: Новичок

Группы: Участники
Зарегистрирован: 02.12.2024(UTC)
Сообщений: 8
Российская Федерация

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 2 раз в 2 постах
Добавили установку корневых сертификатов, получилось подписать и проверить. Большое спасибо за вашу работу!
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (3)
2 Страницы<12
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.