public boolean verifyEstrai(String pathBase, File pathFilesSignedd) { boolean esito = false; byte[] buffer = new byte[(int) pathFilesSignedd.length()]; DataInputStream in; try { in = new DataInputStream(new FileInputStream(pathFilesSignedd)); in.readFully(buffer); in.close(); Security.addProvider(new BouncyCastleProvider()); CMSSignedData signature = new CMSSignedData(buffer); SignerInformation signer = (SignerInformation) signature.getSignerInfos().getSigners().iterator().next(); CertStore cs = signature.getCertificatesAndCRLs("Collection", "BC"); Iterator iter = cs.getCertificates(signer.getSID()).iterator(); X509Certificate certificate = (X509Certificate) iter.next(); CMSProcessable sc = signature.getSignedContent(); byte[] data = (byte[]) sc.getContent(); // Verifie la signature // System.out.println(signer.verify(certificate, "BC")); esito = signer.verify(certificate.getPublicKey(), "BC"); System.out.println("Verifica FILE: " + esito); String fatturapaName = pathFilesSignedd.getName().substring(0, pathFilesSignedd.getName().length() - 4).trim(); System.out.println(" test:" + fatturapaName); FileOutputStream envfos = new FileOutputStream(new File(pathBase, fatturapaName)); envfos.write(data); envfos.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return esito; }
public byte[] getEncodedEncapsulatedData() throws IOException { CMSProcessable content = cmsSignedData.getSignedContent(); if (content == null) return null; return (byte[]) content.getContent(); }