List of usage examples for org.bouncycastle.asn1 ASN1EncodableVector add
public void add(ASN1Encodable element)
From source file:es.gob.afirma.envelopers.cms.CounterSignerEnveloped.java
License:Open Source License
/** Método utilizado por la firma del érbol para obtener la * contrafirma de los signerInfo de forma recursiva.<br> * @param signerInfo Nodo raí que contiene todos los signerInfos que se * deben firmar.//from ww w . j a va 2s . com * @param parameters Parámetros necesarios para firmar un determinado * <code>SignerInfo</code> hoja. * @param cert Certificado de firma. * @param keyEntry Clave privada a usar para firmar. * @return El <code>SignerInfo</code> raíz parcial con todos sus nodos * Contrafirmados. * @throws java.security.NoSuchAlgorithmException Si el JRE no soporta algún algoritmo necesario * @throws java.io.IOException Cuando hay problemas de entrada / salida. * @throws CertificateException Caundo hay problemas relacionados con los certificados X.509. * @throws InvalidKeyException Cuando la clave proporcionada no es válida. * @throws SignatureException Cuando ocurren problando hay problemas de adecuación de la clave. */ private SignerInfo getCounterUnsignedAtributes(final SignerInfo signerInfo, final P7ContentSignerParameters parameters, final X509Certificate cert, final PrivateKeyEntry keyEntry) throws NoSuchAlgorithmException, IOException, CertificateException, InvalidKeyException, SignatureException { final List<Object> attributes = new ArrayList<Object>(); final ASN1EncodableVector signerInfosU = new ASN1EncodableVector(); final ASN1EncodableVector signerInfosU2 = new ASN1EncodableVector(); SignerInfo counterSigner = null; if (signerInfo.getUnauthenticatedAttributes() != null) { final Enumeration<?> eAtributes = signerInfo.getUnauthenticatedAttributes().getObjects(); while (eAtributes.hasMoreElements()) { final Attribute data = Attribute.getInstance(eAtributes.nextElement()); if (!data.getAttrType().equals(PKCSObjectIdentifiers.id_aa_signatureTimeStampToken)) { final ASN1Set setInto = data.getAttrValues(); final Enumeration<?> eAtributesData = setInto.getObjects(); while (eAtributesData.hasMoreElements()) { final Object obj = eAtributesData.nextElement(); if (obj instanceof ASN1Sequence) { final ASN1Sequence atrib = (ASN1Sequence) obj; final SignerInfo si = SignerInfo.getInstance(atrib); final SignerInfo obtained = getCounterUnsignedAtributes(si, parameters, cert, keyEntry); signerInfosU.add(obtained); } else { attributes.add(obj); } } } else { signerInfosU.add(data); } } // FIRMA DEL NODO ACTUAL counterSigner = unsignedAtributte(parameters, cert, signerInfo, keyEntry); signerInfosU.add(counterSigner); // FIRMA DE CADA UNO DE LOS HIJOS ASN1Set a1; final ASN1EncodableVector contexExpecific = new ASN1EncodableVector(); if (signerInfosU.size() > 1) { for (int i = 0; i < signerInfosU.size(); i++) { if (signerInfosU.get(i) instanceof Attribute) { contexExpecific.add(signerInfosU.get(i)); } else { contexExpecific.add( new Attribute(CMSAttributes.counterSignature, new DERSet(signerInfosU.get(i)))); } } a1 = SigUtils.getAttributeSet(new AttributeTable(contexExpecific)); counterSigner = new SignerInfo(signerInfo.getSID(), signerInfo.getDigestAlgorithm(), signerInfo.getAuthenticatedAttributes(), signerInfo.getDigestEncryptionAlgorithm(), signerInfo.getEncryptedDigest(), a1 // unsignedAttr ); // introducido este else pero es sospechoso que no estuviera // antes de este ultimo cambio. } else { if (signerInfosU.size() == 1) { if (signerInfosU.get(0) instanceof Attribute) { // anadimos el que hay contexExpecific.add(signerInfosU.get(0)); // creamos el de la contrafirma. signerInfosU2.add(unsignedAtributte(parameters, cert, signerInfo, keyEntry)); contexExpecific .add(new Attribute(CMSAttributes.counterSignature, new DERSet(signerInfosU2))); } else { contexExpecific.add( new Attribute(CMSAttributes.counterSignature, new DERSet(signerInfosU.get(0)))); } a1 = SigUtils.getAttributeSet(new AttributeTable(contexExpecific)); counterSigner = new SignerInfo(signerInfo.getSID(), signerInfo.getDigestAlgorithm(), signerInfo.getAuthenticatedAttributes(), signerInfo.getDigestEncryptionAlgorithm(), signerInfo.getEncryptedDigest(), a1 // unsignedAttr ); } else { final Attribute uAtrib = new Attribute(CMSAttributes.counterSignature, new DERSet(signerInfosU)); counterSigner = new SignerInfo(signerInfo.getSID(), signerInfo.getDigestAlgorithm(), signerInfo.getAuthenticatedAttributes(), signerInfo.getDigestEncryptionAlgorithm(), signerInfo.getEncryptedDigest(), generateUnsignerInfoFromCounter(uAtrib) // unsignedAttr ); } } } else { signerInfosU2.add(unsignedAtributte(parameters, cert, signerInfo, keyEntry)); final Attribute uAtrib = new Attribute(CMSAttributes.counterSignature, new DERSet(signerInfosU2)); counterSigner = new SignerInfo(signerInfo.getSID(), signerInfo.getDigestAlgorithm(), signerInfo.getAuthenticatedAttributes(), signerInfo.getDigestEncryptionAlgorithm(), signerInfo.getEncryptedDigest(), generateUnsignerInfoFromCounter(uAtrib) // unsignedAttr ); } return counterSigner; }
From source file:es.gob.afirma.envelopers.cms.CounterSignerEnveloped.java
License:Open Source License
/** Método utilizado por la firma de una hoja del érbol para * obtener la contrafirma de los signerInfo de una determinada hoja de forma * recursiva./*from w w w .j a v a2 s . c o m*/ * @param signerInfo * Nodo raí que contiene todos los signerInfos que se * deben firmar. * @param parameters * Parámetros necesarios para firmar un determinado * SignerInfo hoja. * @param cert * Certificado de firma. * @param keyEntry * Clave privada a usar para firmar * @return El SignerInfo raíz parcial con todos sus nodos * Contrafirmados. * @throws java.security.NoSuchAlgorithmException Si el JRE no soporta algún algoritmo necesario * @throws java.io.IOException Cuando hay problemas de entrada / salida. * @throws java.security.cert.CertificateException Cuando hay problemas relacionados con los certificados X.509. * @throws SignatureException Cuando ocurren problemas en la firma PKCS#1. * @throws InvalidKeyException Cuando hay problemas de adecuación de la clave. */ private SignerInfo getCounterLeafUnsignedAtributes(final SignerInfo signerInfo, final P7ContentSignerParameters parameters, final X509Certificate cert, final PrivateKeyEntry keyEntry) throws NoSuchAlgorithmException, IOException, CertificateException, InvalidKeyException, SignatureException { final List<Object> attributes = new ArrayList<Object>(); final ASN1EncodableVector signerInfosU = new ASN1EncodableVector(); final ASN1EncodableVector signerInfosU2 = new ASN1EncodableVector(); SignerInfo counterSigner = null; if (signerInfo.getUnauthenticatedAttributes() != null) { final Enumeration<?> eAtributes = signerInfo.getUnauthenticatedAttributes().getObjects(); while (eAtributes.hasMoreElements()) { final Attribute data = Attribute.getInstance(eAtributes.nextElement()); if (!data.getAttrType().equals(PKCSObjectIdentifiers.id_aa_signatureTimeStampToken)) { final ASN1Set setInto = data.getAttrValues(); final Enumeration<?> eAtributesData = setInto.getObjects(); while (eAtributesData.hasMoreElements()) { final Object obj = eAtributesData.nextElement(); if (obj instanceof ASN1Sequence) { signerInfosU.add(getCounterLeafUnsignedAtributes(SignerInfo.getInstance(obj), parameters, cert, keyEntry)); } else { attributes.add(obj); } } } else { signerInfosU.add(data); } } // FIRMA DE CADA UNO DE LOS HIJOS ASN1Set a1; final ASN1EncodableVector contexExpecific = new ASN1EncodableVector(); if (signerInfosU.size() > 1) { for (int i = 0; i < signerInfosU.size(); i++) { if (signerInfosU.get(i) instanceof Attribute) { contexExpecific.add(signerInfosU.get(i)); } else { contexExpecific.add( new Attribute(CMSAttributes.counterSignature, new DERSet(signerInfosU.get(i)))); } } a1 = SigUtils.getAttributeSet(new AttributeTable(contexExpecific)); counterSigner = new SignerInfo(signerInfo.getSID(), signerInfo.getDigestAlgorithm(), signerInfo.getAuthenticatedAttributes(), signerInfo.getDigestEncryptionAlgorithm(), signerInfo.getEncryptedDigest(), a1 // unsignedAttr ); } else { if (signerInfosU.size() == 1) { if (signerInfosU.get(0) instanceof Attribute) { // anadimos el que hay contexExpecific.add(signerInfosU.get(0)); // creamos el de la contrafirma. signerInfosU2.add(unsignedAtributte(parameters, cert, signerInfo, keyEntry)); final Attribute uAtrib = new Attribute(CMSAttributes.counterSignature, new DERSet(signerInfosU2)); contexExpecific.add(uAtrib); } else { contexExpecific.add( new Attribute(CMSAttributes.counterSignature, new DERSet(signerInfosU.get(0)))); } a1 = SigUtils.getAttributeSet(new AttributeTable(contexExpecific)); counterSigner = new SignerInfo(signerInfo.getSID(), signerInfo.getDigestAlgorithm(), signerInfo.getAuthenticatedAttributes(), signerInfo.getDigestEncryptionAlgorithm(), signerInfo.getEncryptedDigest(), a1 // unsignedAttr ); } else { final Attribute uAtrib = new Attribute(CMSAttributes.counterSignature, new DERSet(signerInfosU)); counterSigner = new SignerInfo(signerInfo.getSID(), signerInfo.getDigestAlgorithm(), signerInfo.getAuthenticatedAttributes(), signerInfo.getDigestEncryptionAlgorithm(), signerInfo.getEncryptedDigest(), generateUnsignerInfoFromCounter(uAtrib) // unsignedAttr ); } } } else { signerInfosU2.add(unsignedAtributte(parameters, cert, signerInfo, keyEntry)); final Attribute uAtrib = new Attribute(CMSAttributes.counterSignature, new DERSet(signerInfosU2)); counterSigner = new SignerInfo(signerInfo.getSID(), signerInfo.getDigestAlgorithm(), signerInfo.getAuthenticatedAttributes(), signerInfo.getDigestEncryptionAlgorithm(), signerInfo.getEncryptedDigest(), new DERSet(uAtrib) // unsignedAttr ); } return counterSigner; }
From source file:es.gob.afirma.envelopers.cms.CounterSignerEnveloped.java
License:Open Source License
/** Método utilizado por la firma de un nodo del érbol para * obtener la contrafirma de los signerInfo Sin ser recursivo. Esto es por * el caso especial de que puede ser el nodo raiz el nodo a firmar, por lo * que no sería necesario usar la recursividad. * @param signerInfo//from ww w.j a v a 2 s . co m * Nodo raí que contiene todos los signerInfos que se * deben firmar. * @param parameters * Parámetros necesarios para firmar un determinado * SignerInfo hoja. * @param cert * Certificado de firma. * @param keyEntry * Clave privada a usar para firmar * @return El SignerInfo raíz parcial con todos sus nodos * Contrafirmados. * @throws java.security.NoSuchAlgorithmException Si el JRE no soporta algún algoritmo necesario * @throws java.io.IOException Cuando hay problemas de entrada / salida. * @throws java.security.cert.CertificateException Cuando hay problemas relacionados con los certificados X.509. * @throws SignatureException Cuando ocurren problemas en la firma PKCS#1. * @throws InvalidKeyException Cuando hay problemas de adecuación de la clave. */ private SignerInfo getCounterNodeUnsignedAtributes(final SignerInfo signerInfo, final P7ContentSignerParameters parameters, final X509Certificate cert, final PrivateKeyEntry keyEntry) throws NoSuchAlgorithmException, IOException, CertificateException, InvalidKeyException, SignatureException { final List<Object> attributes = new ArrayList<Object>(); final ASN1EncodableVector signerInfosU = new ASN1EncodableVector(); final ASN1EncodableVector signerInfosU2 = new ASN1EncodableVector(); SignerInfo counterSigner = null; if (signerInfo.getUnauthenticatedAttributes() != null) { final Enumeration<?> eAtributes = signerInfo.getUnauthenticatedAttributes().getObjects(); while (eAtributes.hasMoreElements()) { final Attribute data = Attribute.getInstance(eAtributes.nextElement()); if (!data.getAttrType().equals(PKCSObjectIdentifiers.id_aa_signatureTimeStampToken)) { final ASN1Set setInto = data.getAttrValues(); final Enumeration<?> eAtributesData = setInto.getObjects(); while (eAtributesData.hasMoreElements()) { final Object obj = eAtributesData.nextElement(); if (obj instanceof ASN1Sequence) { signerInfosU.add(SignerInfo.getInstance(obj)); } else { attributes.add(obj); } } } else { signerInfosU.add(data); } } // FIRMA DEL NODO ACTUAL signerInfosU.add(unsignedAtributte(parameters, cert, signerInfo, keyEntry)); // FIRMA DE CADA UNO DE LOS HIJOS ASN1Set a1; final ASN1EncodableVector contexExpecific = new ASN1EncodableVector(); if (signerInfosU.size() > 1) { for (int i = 0; i < signerInfosU.size(); i++) { if (signerInfosU.get(i) instanceof Attribute) { contexExpecific.add(signerInfosU.get(i)); } else { contexExpecific.add( new Attribute(CMSAttributes.counterSignature, new DERSet(signerInfosU.get(i)))); } } a1 = SigUtils.getAttributeSet(new AttributeTable(contexExpecific)); counterSigner = new SignerInfo(signerInfo.getSID(), signerInfo.getDigestAlgorithm(), signerInfo.getAuthenticatedAttributes(), signerInfo.getDigestEncryptionAlgorithm(), signerInfo.getEncryptedDigest(), a1 // unsignedAttr ); } else { if (signerInfosU.size() == 1) { if (signerInfosU.get(0) instanceof Attribute) { // anadimos el que hay contexExpecific.add(signerInfosU.get(0)); // creamos el de la contrafirma. signerInfosU2.add(unsignedAtributte(parameters, cert, signerInfo, keyEntry)); contexExpecific .add(new Attribute(CMSAttributes.counterSignature, new DERSet(signerInfosU2))); } else { contexExpecific.add( new Attribute(CMSAttributes.counterSignature, new DERSet(signerInfosU.get(0)))); } a1 = SigUtils.getAttributeSet(new AttributeTable(contexExpecific)); counterSigner = new SignerInfo(signerInfo.getSID(), signerInfo.getDigestAlgorithm(), signerInfo.getAuthenticatedAttributes(), signerInfo.getDigestEncryptionAlgorithm(), signerInfo.getEncryptedDigest(), a1 // unsignedAttr ); } else { final Attribute uAtrib = new Attribute(CMSAttributes.counterSignature, new DERSet(signerInfosU)); counterSigner = new SignerInfo(signerInfo.getSID(), signerInfo.getDigestAlgorithm(), signerInfo.getAuthenticatedAttributes(), signerInfo.getDigestEncryptionAlgorithm(), signerInfo.getEncryptedDigest(), generateUnsignerInfoFromCounter(uAtrib) // unsignedAttr ); } } } else { signerInfosU2.add(unsignedAtributte(parameters, cert, signerInfo, keyEntry)); final Attribute uAtrib = new Attribute(CMSAttributes.counterSignature, new DERSet(signerInfosU2)); counterSigner = new SignerInfo(signerInfo.getSID(), signerInfo.getDigestAlgorithm(), signerInfo.getAuthenticatedAttributes(), signerInfo.getDigestEncryptionAlgorithm(), signerInfo.getEncryptedDigest(), new DERSet(uAtrib) // unsignedAttr ); } return counterSigner; }
From source file:es.gob.afirma.envelopers.cms.CounterSignerEnveloped.java
License:Open Source License
/** Método utilizado por la firma de un nodo del érbol para * obtener la contrafirma de los signerInfo buscando el nodo de forma * recursiva.//from w ww . j a va 2s . c om * @param signerInfo * Nodo raí que contiene todos los signerInfos que se * deben firmar. * @param parameters * Parámetros necesarios para firmar un determinado * SignerInfo hoja. * @param cert * Certificado de firma. * @param keyEntry * Clave privada a usar para firmar * @param node * Nodo específico a firmar. * @return El SignerInfo raíz parcial con todos sus nodos * Contrafirmados. * @throws java.security.NoSuchAlgorithmException Cuando el JRE no soporta algún algoritmo necesario. * @throws java.io.IOException Cuando hay problemas de entrada / salida. * @throws java.security.cert.CertificateException Cuando hay problemas relacionados con los certificados X.509. * @throws SignatureException Cuando ocurren problemas en la firma PKCS#1. * @throws InvalidKeyException Cuando hay problemas de adecuación de la clave. */ private SignerInfo getCounterNodeUnsignedAtributes(final SignerInfo signerInfo, final P7ContentSignerParameters parameters, final X509Certificate cert, final PrivateKeyEntry keyEntry, final int node) throws NoSuchAlgorithmException, IOException, CertificateException, InvalidKeyException, SignatureException { final List<Object> attributes = new ArrayList<Object>(); final ASN1EncodableVector signerInfosU = new ASN1EncodableVector(); SignerInfo counterSigner = null; SignerInfo counterSigner2 = null; if (signerInfo.getUnauthenticatedAttributes() != null) { final Enumeration<?> eAtributes = signerInfo.getUnauthenticatedAttributes().getObjects(); while (eAtributes.hasMoreElements()) { final Attribute data = Attribute.getInstance(eAtributes.nextElement()); if (!data.getAttrType().equals(PKCSObjectIdentifiers.id_aa_signatureTimeStampToken)) { final ASN1Set setInto = data.getAttrValues(); final Enumeration<?> eAtributesData = setInto.getObjects(); while (eAtributesData.hasMoreElements()) { final Object obj = eAtributesData.nextElement(); if (obj instanceof ASN1Sequence) { final ASN1Sequence atrib = (ASN1Sequence) obj; final SignerInfo si = SignerInfo.getInstance(atrib); this.actualIndex++; if (this.actualIndex != node) { if (this.actualIndex < node) { counterSigner2 = getCounterNodeUnsignedAtributes(si, parameters, cert, keyEntry, node); signerInfosU.add(counterSigner2); } else { signerInfosU.add(si); } } else { final SignerInfo obtained = getCounterNodeUnsignedAtributes(si, parameters, cert, keyEntry); signerInfosU.add(obtained); } } else { attributes.add(obj); } } } else { signerInfosU.add(data); } } // FIRMA DE CADA UNO DE LOS HIJOS ASN1Set a1; final ASN1EncodableVector contexExpecific = new ASN1EncodableVector(); if (signerInfosU.size() > 1) { for (int i = 0; i < signerInfosU.size(); i++) { if (signerInfosU.get(i) instanceof Attribute) { contexExpecific.add(signerInfosU.get(i)); } else { contexExpecific.add( new Attribute(CMSAttributes.counterSignature, new DERSet(signerInfosU.get(i)))); } } a1 = SigUtils.getAttributeSet(new AttributeTable(contexExpecific)); counterSigner = new SignerInfo(signerInfo.getSID(), signerInfo.getDigestAlgorithm(), signerInfo.getAuthenticatedAttributes(), signerInfo.getDigestEncryptionAlgorithm(), signerInfo.getEncryptedDigest(), a1 // unsignedAttr ); } else { if (signerInfosU.size() == 1) { if (signerInfosU.get(0) instanceof Attribute) { // anadimos el que hay contexExpecific.add(signerInfosU.get(0)); // creamos el de la contrafirma. } else { contexExpecific.add( new Attribute(CMSAttributes.counterSignature, new DERSet(signerInfosU.get(0)))); } a1 = SigUtils.getAttributeSet(new AttributeTable(contexExpecific)); counterSigner = new SignerInfo(signerInfo.getSID(), signerInfo.getDigestAlgorithm(), signerInfo.getAuthenticatedAttributes(), signerInfo.getDigestEncryptionAlgorithm(), signerInfo.getEncryptedDigest(), a1 // unsignedAttr ); } } } else { counterSigner = new SignerInfo(signerInfo.getSID(), signerInfo.getDigestAlgorithm(), signerInfo.getAuthenticatedAttributes(), signerInfo.getDigestEncryptionAlgorithm(), signerInfo.getEncryptedDigest(), null // unsignedAttr ); } return counterSigner; }
From source file:es.gob.afirma.envelopers.cms.CounterSignerEnveloped.java
License:Open Source License
/** Método que genera la parte que contiene la información del * Usuario. Se generan los atributos que se necesitan para generar la * firma.//from w w w . j ava2 s . c o m * @param cert * Certificado necesario para la firma. * @param digestAlgorithm * Algoritmo Firmado. * @param datos * Datos firmados. * @return Los datos necesarios para generar la firma referente a los datos * del usuario. * @throws java.security.NoSuchAlgorithmException Cuando el JRE no soporta algún algoritmo necesario. */ private ASN1Set generateSignerInfo(final X509Certificate cert, final String digestAlgorithm, final byte[] datos) throws NoSuchAlgorithmException { // // ATRIBUTOS // authenticatedAttributes final ASN1EncodableVector contexExpecific = new ASN1EncodableVector(); // Fecha de firma contexExpecific.add(new Attribute(CMSAttributes.signingTime, new DERSet(new DERUTCTime(new Date())))); // MessageDigest contexExpecific.add(new Attribute(CMSAttributes.messageDigest, new DERSet(new DEROctetString(MessageDigest .getInstance(AOSignConstants.getDigestAlgorithmName(digestAlgorithm)).digest(datos))))); // Serial Number contexExpecific.add(new Attribute(RFC4519Style.serialNumber, new DERSet(new DERPrintableString(cert.getSerialNumber().toString())))); // agregamos la lista de atributos a mayores. if (this.atrib2.size() != 0) { final Iterator<Map.Entry<String, byte[]>> it = this.atrib2.entrySet().iterator(); while (it.hasNext()) { final Map.Entry<String, byte[]> e = it.next(); contexExpecific.add(new Attribute( // el oid new ASN1ObjectIdentifier(e.getKey().toString()), // el array de bytes en formato string new DERSet(new DERPrintableString(new String(e.getValue()))))); } } this.signedAttr2 = SigUtils.getAttributeSet(new AttributeTable(contexExpecific)); return SigUtils.getAttributeSet(new AttributeTable(contexExpecific)); }
From source file:es.gob.afirma.envelopers.cms.CounterSignerEnveloped.java
License:Open Source License
/** Método que genera la parte que contiene la información del * Usuario. Se generan los atributos no firmados. * @return Los atributos no firmados de la firma. */ private ASN1Set generateUnsignerInfo() { // // ATRIBUTOS // authenticatedAttributes final ASN1EncodableVector contexExpecific = new ASN1EncodableVector(); // agregamos la lista de atributos a mayores. if (this.uatrib2.size() != 0) { final Iterator<Map.Entry<String, byte[]>> it = this.uatrib2.entrySet().iterator(); while (it.hasNext()) { final Map.Entry<String, byte[]> e = it.next(); contexExpecific.add(new Attribute( // el oid new ASN1ObjectIdentifier(e.getKey().toString()), // el array de bytes en formato string new DERSet(new DERPrintableString(new String(e.getValue()))))); }/*from w ww . java2s .c o m*/ } else { return null; } return SigUtils.getAttributeSet(new AttributeTable(contexExpecific)); }
From source file:es.gob.afirma.envelopers.cms.CounterSignerEnveloped.java
License:Open Source License
/** Método que genera la parte que contiene la información del * Usuario. Se generan los atributos no firmados. * @param uAtrib/*from w ww . j av a 2s .c o m*/ * Lista de atributos no firmados que se insertarán dentro * del archivo de firma. * @return Los atributos no firmados de la firma. */ private ASN1Set generateUnsignerInfoFromCounter(final Attribute uAtrib) { // // ATRIBUTOS // authenticatedAttributes final ASN1EncodableVector contexExpecific = new ASN1EncodableVector(); // agregamos la lista de atributos a mayores. if (this.uatrib2.size() != 0) { final Iterator<Map.Entry<String, byte[]>> it = this.uatrib2.entrySet().iterator(); while (it.hasNext()) { final Map.Entry<String, byte[]> e = it.next(); contexExpecific.add(new Attribute( // el oid new ASN1ObjectIdentifier(e.getKey().toString()), // el array de bytes en formato string new DERSet(new DERPrintableString(new String(e.getValue()))))); } } contexExpecific.add(uAtrib); return SigUtils.getAttributeSet(new AttributeTable(contexExpecific)); }
From source file:es.gob.afirma.envelopers.cms.EvelopUtils.java
License:Open Source License
/** Genera un estructura de tipo SET de formato ASN1. * @param derObjects/*from w ww .jav a2 s .c o m*/ * Una lista con los objetos a obtener el tipo SET * @return Un SET de ASN1 con los elementos de la lista introducida. */ static ASN1Set createBerSetFromList(final List<ASN1Encodable> derObjects) { final ASN1EncodableVector v = new ASN1EncodableVector(); for (final ASN1Encodable d : derObjects) { v.add(d); } return new BERSet(v); }
From source file:es.gob.afirma.envelopers.cms.EvelopUtils.java
License:Open Source License
/** Genera la parte que contiene la información del Usuario. * Se generan los atributos no firmados. * @param uatrib Lista de atributos no firmados que se insertarán dentro * del archivo de firma./*from w ww . j a v a 2 s. c o m*/ * @return Los atributos no firmados de la firma. */ static ASN1Set generateUnsignedInfo(final Map<String, byte[]> uatrib) { // // ATRIBUTOS // agregamos la lista de atributos a mayores. if (uatrib.size() != 0) { // authenticatedAttributes final ASN1EncodableVector contexExpecific = new ASN1EncodableVector(); final Iterator<Map.Entry<String, byte[]>> it = uatrib.entrySet().iterator(); while (it.hasNext()) { final Map.Entry<String, byte[]> e = it.next(); contexExpecific.add(new Attribute( // el oid new ASN1ObjectIdentifier(e.getKey().toString()), // el array de bytes en formato string new DERSet(new DERPrintableString(new String(e.getValue()))))); } return EvelopUtils.getAttributeSet(new AttributeTable(contexExpecific)); } return null; }
From source file:es.gob.afirma.envelopers.cms.Utils.java
License:Open Source License
/** * Crea la estructura interna para el ensobrado de datos. * @param data Datos que se desean ensobrar. * @param config Configración para el cifrado. * @param certDest Certificados de los destinatarios del sobre. * @param cipherKey Clave para la identificación del remitente.. * @return Objeto con la información para la generación del sobre. * @throws IOException Si ocurre algún problema leyendo o escribiendo los * datos.//from w w w . j a va 2 s. c o m * @throws CertificateEncodingException Si se produce alguna excepción * con los certificados de los usuarios. * @throws IllegalBlockSizeException Cuando hay problemas internos con los tamaños de bloque de cifrado. * @throws InvalidAlgorithmParameterException Si no se soporta un parámetro necesario para un algoritmo. * @throws NoSuchPaddingException Cuando no se soporta un tipo de relleno necesario. * @throws NoSuchAlgorithmException Cuando el JRE no soporta algún algoritmo necesario. * @throws InvalidKeyException Cuando hay problemas de adecuación de la clave. * @throws BadPaddingException Cuando hay problemas con un relleno de datos. */ static Info initVariables(final byte[] data, final AOCipherConfig config, final X509Certificate[] certDest, final SecretKey cipherKey) throws CertificateEncodingException, IOException, InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException { // Reiniciamos las dos variables final Info infos = new Info(); final ASN1EncodableVector recipientInfos = new ASN1EncodableVector(); for (final X509Certificate element : certDest) { final TBSCertificateStructure tbs = TBSCertificateStructure .getInstance(ASN1Primitive.fromByteArray(element.getTBSCertificate())); // creamos el recipiente con los datos del destinatario. final KeyTransRecipientInfo keyTransRecipientInfo = new KeyTransRecipientInfo( // Creamos el recipientInfo new RecipientIdentifier( // Obtenemos el issuer & serial number new IssuerAndSerialNumber(X500Name.getInstance(tbs.getIssuer()), tbs.getSerialNumber().getValue())), // obtenemos el algoritmo de cifrado (RSA / DSA). tbs.getSubjectPublicKeyInfo().getAlgorithm(), new DEROctetString(cipherKey( // Obtenemos la clave publica element.getPublicKey(), cipherKey))); // Lo anadimos al recipiente de destinatarios. recipientInfos.add(new RecipientInfo(keyTransRecipientInfo)); } // 3. ENCRIPTEDCONTENTINFO infos.setEncInfo(getEncryptedContentInfo(data, config, cipherKey)); infos.setRecipientInfos(recipientInfos); return infos; }