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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline svartalf  
#1 Оставлено : 9 ноября 2016 г. 13:58:15(UTC)
svartalf

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

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

Добрый день,

есть файл подписаннный Крипто Арм

1.2.643.2.45.1.1.1 \ 1.3.6.1.4.1.311.2.1.120 = комментарий к подписи
1.2.643.2.45.1.1.2 = имя файла
1.2.643.2.45.1.1.3 = использование подписи (подписано, утверждено и т.д.)

Нужно получить значения аттарибутов

список аттрибутов SignerInfo[] signerInfos = signedData.signerInfos.elements;
значение в массиве байт аттрибута((Asn1OctetString) signerInfo.signedAttrs.elements[5].values.elements[0]).value
попытка получить сроку String result = new String(((Asn1OctetString) signerInfo.signedAttrs.elements[5].values.elements[0]).value);

Выходная строка поулчаесят с квадратами.

UserPostedImage

http://i68.tinypic.com/1zw1np.jpg

т.е исходный текcт (M571237) плюс нечитаемые символы. Дeмал проблема в кодировке, но подобрать не получилось.
Offline Евгений Афанасьев  
#2 Оставлено : 9 ноября 2016 г. 14:59:43(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 693 раз в 654 постах
Здравствуйте.
Вероятно, это не Asn1OctetString. Попробуйте посмотреть атрибут в каком-нибудь asn1 декодировщике и узнать тип значения.
Offline svartalf  
#3 Оставлено : 10 ноября 2016 г. 13:32:08(UTC)
svartalf

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

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

Показывает что это тип Asn1openType

Внутри стринг вида

30181e0e004d0035003700310032003300371e0200201e020020 или 1e0e004d003500370031003200330037

пробовал сконвертить через javax.xml.bind.DatatypeConverter

new String(DatatypeConverter.parseHexBinary("30181e0e004d0035003700310032003300371e0200201e020020"))

Получаю на выходе нужныем мне данные с квадратами как и в прошлом примере

Декодер https://holtstrom.com/mi...el/tools/asn1decoder.php
выдает на две мои строки

SEQUENCE {
[1e] 004d003500370031003200330037
[1e] 0020
[1e] 0020
}
+

[1e] 004d003500370031003200330037

тип показал Asn1CharSet

Как вытащить правильно или преобразовать? Asn1openType в Asn1CharSet не хочет.
Offline svartalf  
#4 Оставлено : 10 ноября 2016 г. 13:58:27(UTC)
svartalf

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

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

Добавление:
воможно можно воспользоватсья методом decode у Asn1openType. но нужно дать ему на вход буфер, а буфер принимает массив байт. но я не могу получить массив байт из моей перемнной типа Asn1openType. только если сменить ей тип на Asn1OctetString. В общем запутался я.
Offline svartalf  
#5 Оставлено : 10 ноября 2016 г. 15:11:56(UTC)
svartalf

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

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

Если долго мучаться то что то и получится. Решил проблеум через bouncycastle

Вытаскиваем закодированное значение из аттрибутов

Asn1OpenType sa3 = ((Asn1OpenType) signerInfo.signedAttrs.elements[3].values.elements[0])

Берем массив байт byte[] myb3 = sa3.value;

С помощью доп метода делаем из массива DER обьект

ASN1Primitive derObject = toDERObject(myb3);
Видим в дебаггере тип или derObject.getClass()
Вытаскиваем значение
DERBMPString derOctetString = (DERBMPString) derObject;
String decoded = derOctetString.toString();



private ASN1Primitive toDERObject(byte[] data) throws IOException
{
ByteArrayInputStream inStream = new ByteArrayInputStream(data);
ASN1InputStream asnInputStream = new ASN1InputStream(inStream);

return asnInputStream.readObject();
}

PS: второй аттрибут оказался типа DLSequence и содержкал тоже значение и два пустых значения. Возможно это фишка крипто арма.

PPS: Есть другйо спсоб декодировать данные?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.