Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.11.2012(UTC) Сообщений: 77 Откуда: Тольятти
|
Подскажите плизз, в одной подписи organizationName как UTF8String в другой PrintableString, такое может быть? а то у меня ошибка при декоде (обе подписи вроде CAdES-BES) Код: }else if(("2.5.4.10").equals(new OID(attributeTypeAndValue[r211].type.value).toString())
){
Asn1UTF8String res = new Asn1UTF8String();
res.decode(decBuf2);
System.out.println(new OID(attributeTypeAndValue[r211].type.value)+" +++++ "+res);
}
Код:SET {
189 33: SEQUENCE {
191 3: OBJECT IDENTIFIER organizationName (2 5 4 10)
196 26: UTF8String '...... ............-......'
: }
: }
Код:115 19: SET {
117 17: SEQUENCE {
119 3: OBJECT IDENTIFIER organizationName (2 5 4 10)
124 10: PrintableString 'CRYPTO-PRO'
: }
: }
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,440 Сказал «Спасибо»: 551 раз Поблагодарили: 2235 раз в 1743 постах
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.11.2012(UTC) Сообщений: 77 Откуда: Тольятти
|
я так понял, при чтении(отображении) лучше через тэги и забыть про OID ? Код: final Asn1BerDecodeBuffer decBuf2 = new Asn1BerDecodeBuffer(encBuf2.getMsgCopy());
if (decBuf2.peekTag().equals(Asn1IA5String.TAG)){
Asn1IA5String res = new Asn1IA5String();
res.decode(decBuf2);
System.out.println(new OID(attributeTypeAndValue[r211].type.value)+" +++++ "+res);
}else if(decBuf2.peekTag().equals(Asn1PrintableString.TAG) ){
Asn1PrintableString res = new Asn1PrintableString();
res.decode(decBuf2);
System.out.println(new OID(attributeTypeAndValue[r211].type.value)+" +++++ "+res);
}else if(decBuf2.peekTag().equals(Asn1UTF8String.TAG)){
Asn1UTF8String res = new Asn1UTF8String();
res.decode(decBuf2);
System.out.println(new OID(attributeTypeAndValue[r211].type.value)+" +++++ "+res);
}else {System.out.println("Tag не обрабатывается ------ "+decBuf2.peekTag());}
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
В общем случае все еще хуже :) RFC 5280 Цитата: DirectoryString ::= CHOICE { teletexString TeletexString (SIZE (1..MAX)), printableString PrintableString (SIZE (1..MAX)), universalString UniversalString (SIZE (1..MAX)), utf8String UTF8String (SIZE (1..MAX)), bmpString BMPString (SIZE (1..MAX)) }
The Name describes a hierarchical name composed of attributes, such as country name, and corresponding values, such as US. The type of the component AttributeValue is determined by the AttributeType; in general it will be a DirectoryString.
The DirectoryString type is defined as a choice of PrintableString, TeletexString, BMPString, UTF8String, and UniversalString. CAs conforming to this profile MUST use either the PrintableString or UTF8String encoding of DirectoryString, with two exceptions. When CAs have previously issued certificates with issuer fields with attributes encoded using TeletexString, BMPString, or UniversalString, then the CA MAY continue to use these encodings of the DirectoryString to preserve backward compatibility. Also, new CAs that are added to a domain where existing CAs issue certificates with issuer fields with attributes encoded using TeletexString, BMPString, or UniversalString MAY encode attributes that they share with the existing CAs using the same encodings as the existing CAs use.
As noted above, distinguished names are composed of attributes.
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.11.2012(UTC) Сообщений: 77 Откуда: Тольятти
|
может я чего не понимаю, на как то Null по проще нельзя получить? :-) Код: for (int i = 0; i < digestAlgorithmIdentifiers.elements.length; i++) {
System.out.println(new OID(digestAlgorithmIdentifiers.elements[i].algorithm.value));
System.out.println(digestAlgorithmIdentifiers.elements[i].parameters);
Asn1BerEncodeBuffer encBuf = new Asn1BerEncodeBuffer();
digestAlgorithmIdentifiers.elements[i].parameters.encode(encBuf);
final Asn1BerDecodeBuffer decBuf = new Asn1BerDecodeBuffer(encBuf.getMsgCopy());
Asn1Tag asn1Tag = decBuf.peekTag();
System.out.println(asn1Tag);
}
Цитата:...............SignedData.digestAlgorithms..................... 1.2.643.2.2.9 ru.CryptoPro.JCP.ASN.PKIX1Explicit88._gostR341194DigestParams_Type@1f7d134 [UNIVERSAL 5] что то типа DERObject использовать, но он вроде только в bc и нет примеров
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 671 Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 93 раз в 67 постах
|
Если речь про ASN.1 NULL то он кодируется всегда всего двумя байтами - { 0x05, 0x00 }. |
С уважением, Юрий Строжевский |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.11.2012(UTC) Сообщений: 77 Откуда: Тольятти
|
да не хочется на уровень байт переходить как бы это все в Java классах разрисовать ... чего там внутри :-)
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close