Boa tarde a todos
Na verdade minha dúvida é sobre como trabalhar com DERObjects
No Código abaixo eu pego os atributos autenticados da assinatura
CMSSignedData signedDoc = new CMSSignedData(new FileInputStream("c:/arquivoassinado.txt"));
Collection signatures = = signedDoc.getSignerInfos().getSigners();
SignerInformation element = (SignerInformation) signatures.iterator().next();
HashTable ht = element.getSignedAttributes().toHashTable();
(...)
ASN1InputStream asn = new ASN1InputStream(new ByteArrayInputStream(attribute.getEncoded()));
DERSequence d = (DERSequence) asn.readObject();
DERSet d2 = (DERSet) d.getObjectAt(1);//pego o indice 1 pq o 0 é o OID
/*
Na linha abaixo pego o índice 0 pq em tese é o primeiro ítem da lista que não necessáriamente é um DEROctetString pode ser um DERObjectIdentifier ou o que for.
*/
DEROctetString doct = (DEROctetString) d2.getObjectAt(0);
(...)
mas quando eu tento criar uma DERString do DEROctetString o getString traz um valor sem sentido.
na verdade o único valor que consigo pegar é o digest que é uma string simples e não precisa vazer sentido mesmo.
quando é o conteúdo do arquivo assinado, ele gera um arquivo corrompido
DERString ds = new DERGeneralString(doct.getDEREncoded());
//ou
DERString ds = new DERGeneralString(doct.getOctets());
sysout(ds.getString());
Como eu faço pra pegar os valores dos atributos.
Existe alguma bibliografia sobre como trabalhar com padrões ASN1?
Não é possível que seja um padrão tão ilógico.
Para cada objeto de um certificado ou assinatura é uma maneira diferente de captura o valor?
Obrigado
Arturo Garcia