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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Григорий812  
#1 Оставлено : 13 сентября 2021 г. 10:40:50(UTC)
Григорий812

Статус: Участник

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

Сказал(а) «Спасибо»: 1 раз
Здравствуйте.
Возник вопрос : как корректно сохранить сохранить в файл результа подписи даных.

Подпись осуществляется так:

Код:

    public byte[] getSign (ContainerAdapter _containerAdapter, String _storeAlias, String _certificateAlias, byte[] _dataB,  boolean  _askPin, String _pin ) {
        try {
            //Базовый обьект
            SignData signData = new SignData(_containerAdapter, false) {
                @Override
                public void getResult(FinalListener listener) throws Exception {
                }
            };

            //Указываем хранилище
            KeyStoreType.init(context);
            KeyStoreType.saveCurrentType(_storeAlias);

            //Загрузка ключа и сертификата.
            String keyStoreType     = KeyStoreType.currentType();
            String alisa            = _containerAdapter.getClientAlias();
            char[] password         = _containerAdapter.getClientPassword();
            if(!_askPin) password   = _pin.toCharArray();

            signData.load(_askPin, keyStoreType, alisa, password);

            //Проверяем на приватность
            if (signData.getPrivateKey() == null) {
                return null;
            }

            //Определяем алгоритмы
            KeyStore keyStore       = KeyStore.getInstance(_storeAlias, JCSP.PROVIDER_NAME);
            keyStore.load(null, null);

            Certificate certificate = keyStore.getCertificate(_certificateAlias);
            String keyAlg           = certificate.getPublicKey().getAlgorithm();
            String sigAlg           = getSignatureAlgByKeyAlg(keyAlg);

            //Инициализация подписи
            Signature signature = Signature.getInstance(sigAlg, JCSP.PROVIDER_NAME);
            signature.initSign(signData.getPrivateKey());
            signature.update(_dataB);

            // Формируем подпись.
            byte[] sign = signature.sign();

            //Проверяем подпись
            //cAdESSignature = CAdESSignature(sign, hashData.toByteArray(), cAdESType, true)
            //cAdESSignature.verify(chain)

            return sign;
        }catch (Exception ew){
            return null;
        }
    }


В результате получаем подпись как byte[].
Как следует правильно сохранить результат в файл, дабы потом осуществить верификацию?

Отредактировано пользователем 13 сентября 2021 г. 10:41:37(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#2 Оставлено : 14 сентября 2021 г. 23:04:00(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Здравствуйте.
Сохранить можно так, как вам удобно - в виде бинарного файла (asn1) или сконвертировать в base64 и сохранить как строку, но в последнем случае перед проверкой надо будет сконвертировать обратно - из base64 в asn1.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.