List of usage examples for org.bouncycastle.asn1.pkcs PKCSObjectIdentifiers envelopedData
ASN1ObjectIdentifier envelopedData
To view the source code for org.bouncycastle.asn1.pkcs PKCSObjectIdentifiers envelopedData.
Click Source Link
From source file:es.gob.afirma.envelopers.cms.CMSEnvelopedData.java
License:Open Source License
/** Método que inserta remitentes en el "OriginatorInfo" de un sobre * de tipo envelopedData.// ww w. j av a2 s . c o m * @param data * Datos CMS que admiten multiples remitentes/firmantes. * @param signerCertificateChain * Cadena de certificados a agregar. * @return La nueva firma enveloped con los remitentes que tenía (si * los tuviera) con la cadena de certificados nueva. * @throws IOException Si hay errores de lectura de datos * @throws CertificateEncodingException Cuando el certificado proporcionado es inválido */ public static byte[] addOriginatorInfo(final byte[] data, final X509Certificate[] signerCertificateChain) throws IOException, CertificateEncodingException { final ASN1InputStream is = new ASN1InputStream(data); // LEEMOS EL FICHERO QUE NOS INTRODUCEN final ASN1Sequence dsq = (ASN1Sequence) is.readObject(); is.close(); final Enumeration<?> e = dsq.getObjects(); // Elementos que contienen los elementos OID Data final ASN1ObjectIdentifier doi = (ASN1ObjectIdentifier) e.nextElement(); if (doi.equals(PKCSObjectIdentifiers.envelopedData)) { // Contenido de Data final ASN1TaggedObject doj = (ASN1TaggedObject) e.nextElement(); final EnvelopedData ed = EnvelopedData.getInstance(doj.getObject()); // Obtenemos los originatorInfo OriginatorInfo origInfo = ed.getOriginatorInfo(); ASN1Set certs = null; if (origInfo != null) { certs = origInfo.getCertificates(); } // Si no hay certificados, se deja como esta. final OriginatorInfo origInfoChecked = Utils.checkCertificates(signerCertificateChain, certs); if (origInfoChecked != null) { origInfo = origInfoChecked; } // Se crea un nuevo EnvelopedData a partir de los datos // anteriores con los nuevos originantes. return new ContentInfo(PKCSObjectIdentifiers.envelopedData, new EnvelopedData(origInfo, ed.getRecipientInfos(), ed.getEncryptedContentInfo(), ed.getUnprotectedAttrs())) .getEncoded(ASN1Encoding.DER); } return null; }
From source file:es.gob.afirma.envelopers.cms.ValidateCMS.java
License:Open Source License
/** Método que verifica que es una firma de tipo "Enveloped data" * @param data//from w w w. jav a 2s. c o m * Datos CMS. * @return si es de este tipo. */ static boolean isCMSEnvelopedData(final byte[] data) { boolean isValid = true; try { final ASN1InputStream is = new ASN1InputStream(data); final ASN1Sequence dsq = (ASN1Sequence) is.readObject(); is.close(); final Enumeration<?> e = dsq.getObjects(); // Elementos que contienen los elementos OID Data final ASN1ObjectIdentifier doi = (ASN1ObjectIdentifier) e.nextElement(); if (!doi.equals(PKCSObjectIdentifiers.envelopedData)) { isValid = false; } else { // Contenido de Data final ASN1TaggedObject doj = (ASN1TaggedObject) e.nextElement(); /* * Si no se construye el objeto correctamente, se pasa al manejo * de la excepcion */ EnvelopedData.getInstance(doj.getObject()); } } catch (final Exception ex) { isValid = false; } return isValid; }
From source file:es.gob.afirma.signers.cades.CAdESValidator.java
License:Open Source License
/** Verifica si los datos proporcionados se corresponden con una estructura de tipo <i>EnvelopedData</i>. * @param data Datos PKCS#7/CMS/CAdES.//from ww w. ja v a2 s.co m * @return <code>true</code> si los datos proporcionados se corresponden con una estructura de tipo <i>EnvelopedData</i>, * <code>false</code> en caso contrario. * @throws IOException Si ocurren problemas relacionados con la lectura de los datos */ static boolean isCAdESEnvelopedData(final byte[] data) throws IOException { boolean isValid = false; // LEEMOS EL FICHERO QUE NOS INTRODUCEN final ASN1InputStream is = new ASN1InputStream(data); final ASN1Sequence dsq; try { dsq = (ASN1Sequence) is.readObject(); } catch (final Exception e) { // No es una secuencia valida return false; } finally { is.close(); } final Enumeration<?> e = dsq.getObjects(); // Elementos que contienen los elementos OID Data final ASN1ObjectIdentifier doi = (ASN1ObjectIdentifier) e.nextElement(); if (doi.equals(PKCSObjectIdentifiers.envelopedData)) { isValid = true; } // Contenido de Data final ASN1TaggedObject doj = (ASN1TaggedObject) e.nextElement(); try { /* los retornos no se usan, solo es para verificar que la conversion * ha sido correcta. De no ser asi, se pasaria al manejo de la * excepcion. */ EnvelopedData.getInstance(doj.getObject()); } catch (final Exception ex) { LOGGER.info("Los datos proporcionados no son de tipo EnvelopedData: " + ex); //$NON-NLS-1$ return false; } return isValid; }