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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Oleg_tgl  
#1 Оставлено : 5 декабря 2012 г. 18:21:00(UTC)
Oleg_tgl

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

Группы: Участники
Зарегистрирован: 22.11.2012(UTC)
Сообщений: 77
Откуда: Тольятти

final Asn1ObjectIdentifier timeStampOid = new Asn1ObjectIdentifier(
(new OID("1.2.840.113549.1.9.16.2.47")).value);
...
}else if (timeStampOid.equals(signedAttrs.elements[r].type)){
Attribute attribute = signedAttrs.elements[r];
getTimeStampToken(attribute);
....

как преобразовать Attribute в TimeStampToken чтобы получить время ?

public static void getTimeStampToken(Attribute attribute)
throws Exception {
Offline Oleg_tgl  
#2 Оставлено : 5 декабря 2012 г. 18:49:58(UTC)
Oleg_tgl

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

Группы: Участники
Зарегистрирован: 22.11.2012(UTC)
Сообщений: 77
Откуда: Тольятти


//import org.bouncycastle.tsp.TimeStampToken;
или
//import ru.CryptoPro.JCP.ASN.PKIXTSP.TimeStampToken;
..........................................................................................

final Asn1BerDecodeBuffer asnBuf = new Asn1BerDecodeBuffer(buffer);
final ContentInfo allContentInfo = new ContentInfo();
allContentInfo.decode(asnBuf);

final SignedData signedDataCms = (SignedData) allContentInfo.content;
SignerInfo[] signerInfo = signedDataCms.signerInfos.elements;
getSignerInfo(signerInfo);
...............................................

SignedAttributes signedAttrs = signerInfo[i].signedAttrs; //(4)
getSignedAttributes(signedAttrs);
....................................................

final Asn1ObjectIdentifier timeStampOid = new Asn1ObjectIdentifier(
(new OID("1.2.840.113549.1.9.16.2.47")).value);

...
}else if (timeStampOid.equals(signedAttrs.elements[r].type)){
Attribute attribute = signedAttrs.elements[r];
getTimeStampToken(attribute);

....

как преобразовать Attribute в TimeStampToken чтобы получить время ?

public static void getTimeStampToken(Attribute attribute)
throws Exception {

вывести время
Offline Oleg_tgl  
#3 Оставлено : 5 декабря 2012 г. 19:17:25(UTC)
Oleg_tgl

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

Группы: Участники
Зарегистрирован: 22.11.2012(UTC)
Сообщений: 77
Откуда: Тольятти

не пойму как мне данные вытаскивать из атрибутов,
может где пример есть, вроде все просмотрел
пытаюсь из подписи вытащить данные для просмотра
подпись сформирована в примере cades_examples\CAdES
это вроде вытащил - getIssuerAndSerialNumber
а вот с атрибутами сообразить не могу
а примеров не найду
(что то в ЭЦП так лихо все закручено :-)

Код:
public static void getSignedAttributes(SignedAttributes signedAttrs)
        throws Exception {
//SignedAttributes ::= SET SIZE (1..MAX) OF Attribute
/*	Attribute ::= SEQUENCE {
		attrType OBJECT IDENTIFIER,
		attrValues SET OF AttributeValue }*/
	
    final Asn1ObjectIdentifier messageDigestOid = new Asn1ObjectIdentifier(
            (new OID(CMStools.STR_CMS_OID_DIGEST_ATTR)).value);
    final Asn1ObjectIdentifier contentTypeOid = new Asn1ObjectIdentifier(
            (new OID(CMStools.STR_CMS_OID_CONT_TYP_ATTR)).value);
    final Asn1ObjectIdentifier timeStampOid = new Asn1ObjectIdentifier(
            (new OID("1.2.840.113549.1.9.16.2.47")).value);
    
//TimeStampToken - определен в документе RFC 3161 [7] и описан в документе TS 101 861 [i.9].     
    
    for (int r = 0; r < signedAttrs.elements.length; r++) {
    	System.out.print(signedAttrs.elements[r].type);

    	if (messageDigestOid.equals(signedAttrs.elements[r].type)){
 		   Attribute attribute = signedAttrs.elements[r];
		   System.out.println("Нашли - messageDiges");
	   }else if (contentTypeOid.equals(signedAttrs.elements[r].type)){
		   System.out.println("Нашли - contentType");
		   Attribute attribute = signedAttrs.elements[r];
		   getContentType(attribute);
	   }else if (timeStampOid.equals(signedAttrs.elements[r].type)){
		   Attribute attribute = signedAttrs.elements[r];
		   getTimeStampToken(attribute);
		   System.out.println("Нашли - TimeStampToken");
	   }
    }
}

Отредактировано пользователем 5 декабря 2012 г. 19:18:22(UTC)  | Причина: Не указана

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