List of usage examples for org.bouncycastle.asn1 ASN1InputStream ASN1InputStream
public ASN1InputStream(byte[] input)
From source file:es.gob.afirma.envelopers.cms.Utils.java
License:Open Source License
/** Obtiene el contenido de un archivo encriptado. * @param file Archivo con los datos/*from ww w .ja v a2s .c o m*/ * @param config Configuracion de cifrado * @param params Parametros * @param cipher Encriptador * @return Contenido de un archivo encriptado. * @throws BadPaddingException Cuando hay problemas con un relleno de datos. * @throws IOException Cuando hay problemas con el tratamiento de datos. * @throws IllegalBlockSizeException Cuando hay problemas internos con los tamaños de bloque de cifrado. */ private static EncryptedContentInfo getEncryptedContentInfo(final byte[] file, final AOCipherConfig config, final AlgorithmParameterSpec params, final Cipher cipher) throws IOException, IllegalBlockSizeException, BadPaddingException { ASN1Encodable asn1Params; if (params != null) { final ASN1InputStream aIn = new ASN1InputStream(cipher.getParameters().getEncoded("ASN.1")); //$NON-NLS-1$ asn1Params = aIn.readObject(); aIn.close(); } else { asn1Params = DERNull.INSTANCE; } // obtenemos el OID del algoritmo de cifrado final AlgorithmIdentifier encAlgId = new AlgorithmIdentifier( new ASN1ObjectIdentifier(config.getAlgorithm().getOid()), asn1Params); // Obtenemos el identificador final ASN1ObjectIdentifier contentType = PKCSObjectIdentifiers.encryptedData; return new EncryptedContentInfo(contentType, encAlgId, new DEROctetString(cipher.doFinal(file))); }
From source file:es.gob.afirma.envelopers.cms.Utils.java
License:Open Source License
/** Obtiene los datos envueltos * @param cmsData/*from w w w . j av a 2s . c o m*/ * Bytes con los datos * @return ASN1Sequence * @throws IOException Cuando hay problemas de entrada / salida. */ static ASN1Sequence fetchWrappedData(final byte[] cmsData) throws IOException { // Leemos el fichero que contiene el envoltorio final ASN1InputStream is = new ASN1InputStream(cmsData); // Comenzamos a obtener los datos. final ASN1Sequence dsq = (ASN1Sequence) is.readObject(); is.close(); final Enumeration<?> e = dsq.getObjects(); // Elementos que contienen los elementos OID EnvelopedData. e.nextElement(); // Contenido de EnvelopedData return (ASN1Sequence) ((ASN1TaggedObject) e.nextElement()).getObject(); }
From source file:es.gob.afirma.envelopers.cms.ValidateCMS.java
License:Open Source License
/** Método que verifica que es una firma de tipo "data" * @param data//from w w w. j a va2 s . c o m * Datos CMS. * @return si es de este tipo. */ @SuppressWarnings("unused") static boolean isCMSData(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.data)) { isValid = false; } else { // Contenido de Data final ASN1TaggedObject doj = (ASN1TaggedObject) e.nextElement(); /* * Si no es un objeto de tipo Dara se pasa al manejo de la * excepcion */ new DEROctetString(doj.getObject()); } } catch (final Exception ex) { isValid = false; } return isValid; }
From source file:es.gob.afirma.envelopers.cms.ValidateCMS.java
License:Open Source License
/** Método que verifica que es una firma de tipo "Signed data" * @param data/* w w w . java 2s .co m*/ * Datos CMS. * @return si es de este tipo. */ static boolean isCMSSignedData(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.signedData)) { isValid = false; } else { // Contenido de SignedData final ASN1TaggedObject doj = (ASN1TaggedObject) e.nextElement(); final ASN1Sequence datos = (ASN1Sequence) doj.getObject(); final SignedData sd = SignedData.getInstance(datos); final ASN1Set signerInfosSd = sd.getSignerInfos(); for (int i = 0; isValid && i < signerInfosSd.size(); i++) { final SignerInfo si = SignerInfo.getInstance(signerInfosSd.getObjectAt(i)); isValid = verifySignerInfo(si); } } } catch (final Exception ex) { isValid = false; } return isValid; }
From source file:es.gob.afirma.envelopers.cms.ValidateCMS.java
License:Open Source License
/** Método que verifica que es una firma de tipo "Digested data" * @param data/*from w w w. j a v a 2 s. c o m*/ * Datos CMS. * @return si es de este tipo. */ @SuppressWarnings("unused") static boolean isCMSDigestedData(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.digestedData)) { isValid = false; } else { // Contenido de Data final ASN1TaggedObject doj = (ASN1TaggedObject) e.nextElement(); /* * Estas variables no se usan, solo es para verificar que la * conversion ha sido correcta. De no ser asi, se pasaria al * manejo de la excepcion. */ new DigestedData((ASN1Sequence) doj.getObject()); } } catch (final Exception ex) { isValid = false; } return isValid; }
From source file:es.gob.afirma.envelopers.cms.ValidateCMS.java
License:Open Source License
/** Método que verifica que es una firma de tipo "Encrypted data" * @param data//www .j a va 2 s .c o m * Datos CMS. * @return si es de este tipo. */ static boolean isCMSEncryptedData(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.encryptedData)) { isValid = false; } else { // Contenido de Data final ASN1TaggedObject doj = (ASN1TaggedObject) e.nextElement(); final ASN1Sequence asq = (ASN1Sequence) doj.getObject(); /* * Si no es de tipo EncryptedData se pasa al manejo de la * excepcion */ ASN1Integer.getInstance(asq.getObjectAt(0)); EncryptedContentInfo.getInstance(asq.getObjectAt(1)); } } catch (final Exception ex) { isValid = false; } return isValid; }
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/*ww w . j a va 2 s .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.envelopers.cms.ValidateCMS.java
License:Open Source License
/** Método que verifica que es una firma de tipo * "Signed and Enveloped data"//from www . java2 s. co m * @param data * Datos CMS. * @return si es de este tipo. */ static boolean isCMSSignedAndEnvelopedData(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.signedAndEnvelopedData)) { isValid = false; } else { // Contenido de SignedData final ASN1TaggedObject doj = (ASN1TaggedObject) e.nextElement(); final ASN1Sequence datos = (ASN1Sequence) doj.getObject(); final SignedAndEnvelopedData sd = new SignedAndEnvelopedData(datos); final ASN1Set signerInfosSd = sd.getSignerInfos(); for (int i = 0; i < signerInfosSd.size() && isValid; i++) { final SignerInfo si = SignerInfo.getInstance(signerInfosSd.getObjectAt(i)); isValid = verifySignerInfo(si); } } } catch (final Exception ex) { isValid = false; } return isValid; }
From source file:es.gob.afirma.envelopers.cms.ValidateCMS.java
License:Open Source License
/** Método que verifica que es una firma de tipo "AuthenticatedData" * @param data/*w w w .j a v a 2 s .c o m*/ * Datos CMS. * @return si es de este tipo. */ static boolean isCMSAuthenticatedData(final byte[] data) { boolean isValid = true; try { // Leemos el fichero que contiene la firma. final ASN1InputStream is = new ASN1InputStream(data); // Comenzamos a obtener los datos. final ASN1Sequence dsq = (ASN1Sequence) is.readObject(); is.close(); final Enumeration<?> e = dsq.getObjects(); // Elementos que contienen los elementos OID AuthenticatedData. final ASN1ObjectIdentifier doi = (ASN1ObjectIdentifier) e.nextElement(); if (!doi.equals(PKCSObjectIdentifiers.id_ct_authData)) { isValid = false; } else { // Contenido de AuthenticatedData final ASN1TaggedObject doj = (ASN1TaggedObject) e.nextElement(); final ASN1Sequence authenticatedData = (ASN1Sequence) doj.getObject(); AuthenticatedData.getInstance(authenticatedData); } } catch (final Exception ex) { isValid = false; } return isValid; }
From source file:es.gob.afirma.envelopers.cms.ValidateCMS.java
License:Open Source License
/** Método que verifica que es una firma de tipo * "AuthenticatedEnvelopedData"//w ww . j a v a2s. c o m * @param data * Datos CMS. * @return si es de este tipo. */ static boolean isCMSAuthenticatedEnvelopedData(final byte[] data) { boolean isValid = true; try { // Leemos el fichero que contiene la firma. final ASN1InputStream is = new ASN1InputStream(data); // Comenzamos a obtener los datos. final ASN1Sequence dsq = (ASN1Sequence) is.readObject(); is.close(); final Enumeration<?> e = dsq.getObjects(); // Elementos que contienen los elementos OID // AuthenticatedEnvelopedData. final ASN1ObjectIdentifier doi = (ASN1ObjectIdentifier) e.nextElement(); if (!doi.equals(PKCSObjectIdentifiers.id_ct_authEnvelopedData)) { isValid = false; } else { final ASN1TaggedObject doj = (ASN1TaggedObject) e.nextElement(); final ASN1Sequence authenticatedEnvelopedData = (ASN1Sequence) doj.getObject(); AuthEnvelopedData.getInstance(authenticatedEnvelopedData); } } catch (final Exception ex) { isValid = false; } return isValid; }