[PROBLEMA] Sourced not found utilizzando la libreria Bouncy Castle

  • Il Forum di Tom's Hardware, la più grande community dedicata all'Hardware e all'Informatica. Iscriviti Ora!
#1
Buongiorno a tutti,

avrei bisogno di una mano, perchè non ne vengo a capo. Sto cercando di estrarre da un file .p7m un file in versione .xml. A tal proposito in rete ho trovato della doumentazione, ma quando faccio il debug, arrivo ad un certo punto (precisamente sulla classe CMSSignedData nel metodo static getData), mi viene restituito dal debugger il messaggio Source not found con il pulsante Edit the source lookup path. Francamente non capisco. Ho trovato le librerie da utilizzare in questo caso:
-bcpkix-jdk15on-160.jar
-bcprov-ext-jdk15on-160.jar
che ho provveduto a richiamare nella Referenced Libraries del progetto di Eclipse. Ma mi continua a restituire il messaggio sopra riportato.
Qui sotto riporto il codice:

Codice:
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Base64;
import org.bouncycastle.cms.CMSException;
import org.bouncycastle.cms.CMSSignedData;


public class Test {

    
    public static void main(String[] args)  {
      
         try {
          File f = new File("c:\\tmp\\originale.xml.p7m");
    
        FileInputStream inputFileStream = new FileInputStream(f);
        byte[] buffer = new byte[(int)f.length()];
        inputFileStream.read(buffer);
        inputFileStream.close(); 
        String tmpFile = f.getName();
        String[] partOfFile = tmpFile.split("\\.");
        
        Integer numLoopExtract = 0;
        for (int i = partOfFile.length - 1; i > 0; --i) {
             String itemPartOfFile = partOfFile[i].toLowerCase();
            if (itemPartOfFile.contains("p7m") || itemPartOfFile.contains("tsd")) {
                ++numLoopExtract;
            }
        }
        
        byte[] result = null;
        result = getData(buffer);
        if (result == null) {
           System.out.println("result vuoto!!!");;
        }
        for (int j = 0; j < numLoopExtract - 1; ++j) {
            result = getData(result);
        } 
        if (result == null) {
            System.out.println("result vuoto!!!");;
         }
        FileOutputStream out = new FileOutputStream("c:\\tmp\\originale.xml");
        out.write(result);
        out.close(); 
         }
         catch(FileNotFoundException ex) {
             System.out.println(ex.getMessage());
         }
         catch(IOException ex) {
             System.out.println(ex.getMessage());
         }
         catch(CMSException ex) {
             System.out.println(ex.getMessage());
         }
       
        
    }
    
     private static byte[] getData(byte[] bytes) throws CMSException {
          byte[] returnByte=null; 
          try {
           if (bytes == null) {
                return null;
            }
            byte[] bufDecoded = null;
            try {
                bufDecoded = Base64.getMimeDecoder().decode(bytes);
            }
            catch (Exception e) {
                bufDecoded = bytes.clone();
            }
          //  byte[] returnByte = null;
           CMSSignedData cms = new CMSSignedData(bufDecoded);
            if (cms.getSignedContent() == null) {
                return null;
            }
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            cms.getSignedContent().write(out);
            returnByte = out.toByteArray();
     // return null;
      
           }
           catch(IOException ex) {
               System.out.println(ex.getMessage());
           }
     return returnByte;
     }
}
Se qualcuno mi potesse dare una mano, perchè non so dove sbattere la testa.
Grazie a tutti in anticipo per l'aiuto.
Post unito automaticamente:

Aggiungo che ho provato lo stesso progetto, identico con le stesse librerie in NetBeans e ha funzionato al primo tentativo. In Eclipse ho provato ad aggiungere il progetto tramite il pulsante Edit the source lookup path, ma non ne vuole sapere Eclipse...boh
Se per favore, qualcuno mi sa dire come sistemare in Eclipse mi farebbe una cortesia.
Grazie
 
Ultima modifica:

Discussioni Simili