List of usage examples for org.bouncycastle.asn1.cms SignerInfo SignerInfo
public SignerInfo(ASN1Sequence seq)
From source file:es.gob.afirma.signers.multi.cades.CAdESTriPhaseCounterSigner.java
License:Open Source License
/** Contrafirma el árbol completo de forma recursiva, todos * los nodos creando un nuevo contraSigner.<br> * @param signerInfosRaiz/*w ww . ja va 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 * @param key Clave privada a usar para firmar * @param contentType * Tipo de contenido definido por su OID. * @param contentDescription * Descripción textual del tipo de contenido firmado. * @return El SignerInfo raíz con todos sus nodos Contrafirmados. * @throws java.security.NoSuchAlgorithmException * @throws java.io.IOException * @throws java.security.cert.CertificateException * @throws es.map.es.map.afirma.exceptions.AOException */ private ASN1EncodableVector counterTree(final ASN1Set signerInfosRaiz, final P7ContentSignerParameters parameters, final PrivateKey key, final java.security.cert.Certificate[] certChain, final String contentType, final String contentDescription, final AdESPolicy policy, final boolean signingCertificateV2) throws NoSuchAlgorithmException, IOException, CertificateException, AOException { final ASN1EncodableVector counterSigners = new ASN1EncodableVector(); for (int i = 0; i < signerInfosRaiz.size(); i++) { final SignerInfo si = new SignerInfo((ASN1Sequence) signerInfosRaiz.getObjectAt(i)); counterSigners.add(getCounterSignerInfo(si, parameters, key, certChain, contentType, contentDescription, policy, signingCertificateV2)); } return counterSigners; }
From source file:es.gob.afirma.signers.multi.cades.CAdESTriPhaseCounterSigner.java
License:Open Source License
/** Contrafirma las hojas del árbol completo de forma * recursiva, todos los dodos creando un nuevo contraSigner.<br> * @param signerInfosRaiz//from ww w.j a v a 2s . c om * Nodo raí que contiene todos los signerInfos que se * deben firmar. * @param parameters * Parámetros necesarios para firmar un determinado * SignerInfo hoja. * @param key Clave privada a usar para firmar * @param contentType Tipo de contenido definido por su OID. * @param contentDescription Descripción textual del tipo de contenido firmado. * @return El SignerInfo raíz con todos sus nodos Contrafirmados. * @throws java.security.NoSuchAlgorithmException * @throws java.io.IOException * @throws java.security.cert.CertificateException * @throws es.map.es.map.afirma.exceptions.AOException */ private ASN1EncodableVector counterLeaf(final ASN1Set signerInfosRaiz, final P7ContentSignerParameters parameters, final PrivateKey key, final java.security.cert.Certificate[] certChain, final String contentType, final String contentDescription, final AdESPolicy policy, final boolean signingCertificateV2) throws NoSuchAlgorithmException, IOException, CertificateException, AOException { final ASN1EncodableVector counterSigners = new ASN1EncodableVector(); for (int i = 0; i < signerInfosRaiz.size(); i++) { final SignerInfo si = new SignerInfo((ASN1Sequence) signerInfosRaiz.getObjectAt(i)); counterSigners.add(getLeafSignerInfo(si, parameters, key, certChain, contentType, contentDescription, policy, signingCertificateV2)); } return counterSigners; }
From source file:es.gob.afirma.signers.multi.cades.CAdESTriPhaseCounterSigner.java
License:Open Source License
/** Obtiene la contrafirma de los signerInfo de forma recursiva.<br> * @param signerInfo//from w ww . j a va 2 s. c om * Nodo raí que contiene todos los signerInfos que se * deben firmar. * @param parameters * Parámetros necesarios para firmar un determinado * SignerInfo hoja. * @param key Clave privada a usar para firmar. * @param contentType * Tipo de contenido definido por su OID. * @param contentDescription * Descripción textual del tipo de contenido firmado. * @return El SignerInfo raíz parcial con todos sus nodos * Contrafirmados. * @throws java.security.NoSuchAlgorithmException * @throws java.io.IOException * @throws java.security.cert.CertificateException * @throws es.map.es.map.afirma.exceptions.AOException */ private SignerInfo getCounterSignerInfo(final SignerInfo signerInfo, final P7ContentSignerParameters parameters, final PrivateKey key, final java.security.cert.Certificate[] certChain, final String contentType, final String contentDescription, final AdESPolicy policy, final boolean signingCertificateV2) throws NoSuchAlgorithmException, IOException, CertificateException, AOException { 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 SignerInfo si = new SignerInfo((ASN1Sequence) eAtributesData.nextElement()); signerInfosU.add(getCounterSignerInfo(si, parameters, key, certChain, contentType, contentDescription, policy, signingCertificateV2)); } } else { signerInfosU.add(data); } } // FIRMA DEL NODO ACTUAL counterSigner = generateSignerInfo(parameters.getSignatureAlgorithm(), signerInfo, certChain, contentType, contentDescription, policy, signingCertificateV2); 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 ); } 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(generateSignerInfo(parameters.getSignatureAlgorithm(), signerInfo, certChain, contentType, contentDescription, policy, signingCertificateV2)); 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(), new DERSet(uAtrib) // unsignedAttr ); } } } else { signerInfosU2.add(generateSignerInfo(parameters.getSignatureAlgorithm(), signerInfo, certChain, contentType, contentDescription, policy, signingCertificateV2)); 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.signers.multi.cades.CAdESTriPhaseCounterSigner.java
License:Open Source License
/** Obtiene la contrafirma de los signerInfo de una determinada hoja de forma * recursiva.</br>/*from w ww. java2s . 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 <i>SignerInfo</i> hoja. * @param cert Certificado de firma. * @param keyEntry Clave privada a usar para firmar * @param contentType Tipo de contenido definido por su OID. * @param contentDescription Descripción textual del tipo de contenido firmado. * @return SignerInfo raíz parcial con todos sus nodos contrafirmados. * @throws java.security.NoSuchAlgorithmException * @throws java.io.IOException * @throws java.security.cert.CertificateException * @throws es.map.es.map.afirma.exceptions.AOException */ private SignerInfo getLeafSignerInfo(final SignerInfo signerInfo, final P7ContentSignerParameters parameters, final PrivateKey key, final java.security.cert.Certificate[] certChain, final String contentType, final String contentDescription, final AdESPolicy policy, final boolean signingCertificateV2) throws NoSuchAlgorithmException, IOException, CertificateException, AOException { 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 SignerInfo si = new SignerInfo((ASN1Sequence) eAtributesData.nextElement()); signerInfosU.add(getLeafSignerInfo(si, parameters, key, certChain, contentType, contentDescription, policy, signingCertificateV2)); } } 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(generateSignerInfo(parameters.getSignatureAlgorithm(), signerInfo, certChain, contentType, contentDescription, policy, signingCertificateV2)); 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(), new DERSet(uAtrib) // unsignedAttr ); } } } else { signerInfosU2.add(generateSignerInfo(parameters.getSignatureAlgorithm(), signerInfo, certChain, contentType, contentDescription, policy, signingCertificateV2)); 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:org.jmrtd.lds.SignedDataUtil.java
License:Open Source License
private static SignerInfo getSignerInfo(SignedData signedData) { ASN1Set signerInfos = signedData.getSignerInfos(); if (signerInfos.size() > 1) { LOGGER.warning("Found " + signerInfos.size() + " signerInfos"); }// w w w . j a v a 2 s. co m for (int i = 0; i < signerInfos.size(); i++) { SignerInfo info = new SignerInfo((ASN1Sequence) signerInfos.getObjectAt(i)); return info; } return null; }
From source file:org.jscep.pkcs7.SignedDataUtil.java
License:Open Source License
/** * Checks if the provided signedData was signed by the entity represented * by the provided certificate./* www.ja va2 s . co m*/ * * @param signedData the signedData to verify. * @param signer the signing entity. * @return <code>true</code> if the signedData was signed by the entity, <code>false</code> otherwise. */ public static boolean isSignedBy(SignedData signedData, X509Certificate signer) { X509Name signerName = X509Util.toX509Name(signer.getIssuerX500Principal()); BigInteger signerSerialNo = signer.getSerialNumber(); IssuerAndSerialNumber issuerIasn = new IssuerAndSerialNumber(signerName, signerSerialNo); final ASN1Set signerInfos = signedData.getSignerInfos(); @SuppressWarnings("unchecked") Enumeration<ASN1Sequence> seqs = signerInfos.getObjects(); while (seqs.hasMoreElements()) { final ASN1Sequence seq = seqs.nextElement(); SignerInfo signerInfo = new SignerInfo(seq); signerInfo.getAuthenticatedAttributes(); SignerIdentifier signerId = signerInfo.getSID(); IssuerAndSerialNumber iasn = IssuerAndSerialNumber.getInstance(signerId.getId()); if (areEqual(issuerIasn, iasn) == false) { continue; } // We've found the right issuer. ASN1OctetString signedDigest = signerInfo.getEncryptedDigest(); String sigAlg = AlgorithmDictionary.lookup(signerInfo.getDigestAlgorithm()); Signature sig; try { sig = Signature.getInstance(sigAlg); } catch (NoSuchAlgorithmException e) { return false; } try { sig.initVerify(signer); } catch (InvalidKeyException e) { return false; } try { sig.update(getHash(signerInfo)); return sig.verify(signedDigest.getOctets()); } catch (SignatureException e) { return false; } catch (IOException e) { return false; } } return false; }
From source file:org.signserver.module.mrtdsodsigner.jmrtd.SODFile.java
License:Open Source License
private static SignerInfo getSignerInfo(SignedData signedData) { ASN1Set signerInfos = signedData.getSignerInfos(); if (signerInfos.size() > 1) { LOGGER.warning("Found " + signerInfos.size() + " signerInfos"); }//from w w w . j av a 2s. c om for (int i = 0; i < signerInfos.size(); i++) { SignerInfo info = new SignerInfo((DERSequence) signerInfos.getObjectAt(i)); return info; } return null; }
From source file:passwdmanager.hig.no.lds.DG_SOD.java
private static SignerInfo getSignerInfo(SignedData signedData) { ASN1Set signerInfos = signedData.getSignerInfos(); if (signerInfos.size() > 1) { System.err.println("WARNING: found " + signerInfos.size() + " signerInfos"); }// w ww. j a v a 2s .c o m for (int i = 0; i < signerInfos.size(); i++) { SignerInfo info = new SignerInfo((DERSequence) signerInfos.getObjectAt(i)); return info; } return null; }