Commit aa892909 by antonioaraujob

Agregados los archivos de configuración digidoc4j.yaml y venezuela-tsl.xml al…

Agregados los archivos de configuración digidoc4j.yaml y venezuela-tsl.xml al directorio de recursos.
parent 6bb4976f
......@@ -104,6 +104,11 @@
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>1.9</version>
</dependency>
</dependencies>
......
......@@ -114,6 +114,7 @@ import org.digidoc4j.signers.PKCS12Signer;
import ve.gob.cenditel.murachi.MurachiException;
import org.apache.log4j.Logger;
import org.apache.tika.Tika;
@Path("/archivos")
public class MurachiRESTWS {
......@@ -129,6 +130,12 @@ public class MurachiRESTWS {
private static final String RSA_DIGEST_ENCRYPTION_ALGORITHM = "RSA";
private final String DIGIDOC4J_CONFIGURATION = getAbsolutePathOfResource("digidoc4j.yaml");
private final String DIGIDOC4J_TSL_LOCATION = "file://" + getAbsolutePathOfResource("venezuela-tsl.xml");
// para reportes de advertencias de BDOC
private static boolean bdocWarnings = true;
......@@ -359,6 +366,7 @@ public class MurachiRESTWS {
* @apiVersion 0.1.0
* @apiDescription Carga un archivo a través de un formulario y retorna un json con la información de la firma.
*
* @apiSuccess {String} fileId Identificador único del archivo en el servidor
* @apiSuccess {Boolean} fileExist El archivo se cargó exitosamente en el servidor.
* @apiSuccess {String} error Extension not supported. En caso de que el archivo sea diferente de PDF y BDOC.
*
......@@ -587,6 +595,8 @@ public class MurachiRESTWS {
JSONObject jsonObject = new JSONObject();
jsonObject.put("fileId", idFile);
if (!tmpFile.exists()) {
System.out.println("File : " + file + " does not exists.");
jsonObject.put("fileExist", "false");
......@@ -596,7 +606,9 @@ public class MurachiRESTWS {
System.out.println("File : " + file + " exists.");
jsonObject.put("fileExist", "true");
String mime = getMimeType(file);
//String mime = getMimeType(file);
String mime = getMimeTypeWithTika(file);
System.out.println("mimetype : " + mime);
if (mime.equals("application/pdf")){
......@@ -632,6 +644,10 @@ public class MurachiRESTWS {
logger.debug("verifySignaturesInPdf: "+ pdfFile);
java.nio.file.Path path = Paths.get(pdfFile);
String idFile = path.getFileName().toString();
JSONObject jsonSignatures = new JSONObject();
JSONArray jsonArray = new JSONArray();
......@@ -643,11 +659,16 @@ public class MurachiRESTWS {
AcroFields af = reader.getAcroFields();
ArrayList<String> names = af.getSignatureNames();
if (names.size() <= 0) {
jsonSignatures.put("signatureNumber", "0");
jsonSignatures.put("fileExist", "true");
jsonSignatures.put("fileId", idFile);
jsonSignatures.put("numberOfSignatures", "0");
jsonSignatures.put("mimeType", "application/pdf");
}else{
jsonSignatures.put("fileExist", "true");
jsonSignatures.put("fileId", idFile);
jsonSignatures.put("numberOfSignatures", names.size());
jsonSignatures.put("mimeType", "application/pdf");
HashMap<String, String> signatureInformation;
......@@ -1513,20 +1534,44 @@ public class MurachiRESTWS {
*/
private JSONObject verifySignaturesInBdoc(String bdocFile) {
System.out.println("verifySignaturesInBdoc(String bdocFile)");
JSONObject jsonSignatures = new JSONObject();
JSONArray jsonSignaturesArray = new JSONArray();
JSONArray jsonContainerValidationExceptionArray = new JSONArray();
java.nio.file.Path path = Paths.get(bdocFile);
String idFile = path.getFileName().toString();
Security.addProvider(new BouncyCastleProvider());
Container container;
container = Container.open(bdocFile);
Container container = null;
Configuration configuration = new Configuration(Configuration.Mode.PROD);
configuration.loadConfiguration(DIGIDOC4J_CONFIGURATION);
configuration.setTslLocation(DIGIDOC4J_TSL_LOCATION);
try
{
container = Container.open(bdocFile, configuration);
} catch(DigiDoc4JException e)
{
jsonSignatures.put("error", "File is not a valid BDOC container");
return jsonSignatures;
}
int numberOfSignatures = container.getSignatures().size();
if (numberOfSignatures == 0){
jsonSignatures.put("signatureNumber", "0");
System.out.println("signatureNumber: 0");
}else{
jsonSignatures.put("fileExist", "true");
System.out.println("fileExist: true");
jsonSignatures.put("fileId", idFile);
jsonSignatures.put("mimeType", "application/pdf");
// informacion de archivos dentro del contenedor
if (container.getDataFiles().size() > 0){
......@@ -2275,10 +2320,11 @@ public class MurachiRESTWS {
Security.addProvider(new BouncyCastleProvider());
Configuration configuration = new Configuration(Configuration.Mode.TEST);
Configuration configuration = new Configuration(Configuration.Mode.PROD);
configuration.loadConfiguration("/home/aaraujo/desarrollo/2015/workspace-luna/JAXRS-Murachi/WebContent/WEB-INF/lib/digidoc4j.yaml");
configuration.setTslLocation("http://localhost/trusted-test-mp.xml");
configuration.loadConfiguration("/tmp/digidoc4j.yaml");
//configuration.setTslLocation("http://localhost/trusted-test-mp.xml");
configuration.setTslLocation("file:///tmp/venezuela-tsl.xml");
Container container = Container.create(configuration);
SignatureParameters signatureParameters = new SignatureParameters();
......@@ -2288,8 +2334,8 @@ public class MurachiRESTWS {
signatureParameters.setRoles(asList("Desarrollador"));
container.setSignatureParameters(signatureParameters);
container.setSignatureProfile(SignatureProfile.B_BES);
container.addDataFile("/tmp/01311213-5756-4707-a73d-6d42b09b26fd", "text/plain");
container.sign(new PKCS12Signer("/tmp/JuanHilario.p12", "123456".toCharArray()));
container.addDataFile("/tmp/salida.txt", "text/plain");
container.sign(new PKCS12Signer("/tmp/tibisay.p12", "123456".toCharArray()));
// Container container = Container.open("util/faulty/bdoc21-bad-nonce-content.bdoc");
container.save("/tmp/signed.bdoc");
ValidationResult result = container.validate();
......@@ -2573,6 +2619,38 @@ public class MurachiRESTWS {
}
/**
* Retorna el mimeType del archivo pasado como argumento
* @param absolutFilePath ruta absoluta del archivo
* @return mimeType del archivo pasado como argumento
*/
public String getMimeTypeWithTika(String absolutFilePath) {
String mimeType = "";
Tika tika = new Tika();
File file = new File(absolutFilePath);
try {
mimeType = tika.detect(file);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
/*
java.nio.file.Path source = Paths.get(absolutFilePath);
try {
result = Files.probeContentType(source);
System.out.println(result);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
*/
return mimeType;
}
/**
* Convierte una cadena Hexadecimal en un arreglo de bytes
* @param s cadena hexadecimal
* @return arreglo de bytes resultantes de la conversion de la cadena hexadecimal
......
DIGIDOC_CAS:
- DIGIDOC_CA:
NAME: AS Sertifitseerimiskeskus
TRADENAME: SK
CERTS:
- jar://certs/EID-SK.crt
- jar://certs/ESTEID-SK.crt
- jar://certs/ESTEID-SK 2007.crt
- jar://certs/EID-SK 2007.crt
- jar://certs/JUUR-SK.crt
- jar://certs/KLASS3-SK.crt
- jar://certs/EECCRCA.crt
- jar://certs/ESTEID-SK 2011.crt
- jar://certs/EID-SK 2011.crt
- jar://certs/KLASS3-SK 2010.crt
- jar://certs/KLASS3-SK 2010 EECCRCA.crt
- jar://certs/TEST-SK.crt
- jar://certs/TEST EECCRCA.crt
- jar://certs/TEST ESTEID-SK 2011.crt
- jar://certs/TEST EID-SK 2011.crt
- jar://certs/TEST KLASS3 2010.crt
- jar://certs/TEST Juur-SK.crt
OCSPS:
- OCSP:
CA_CN: ESTEID-SK
CA_CERT: jar://certs/ESTEID-SK 2007.crt
CN: ESTEID-SK 2007 OCSP RESPONDER
CERTS:
- jar://certs/ESTEID-SK 2007 OCSP.crt
URL: http://ocsp.sk.ee
- OCSP:
CA_CN: KLASS3-SK
CA_CERT: jar://certs/KLASS3-SK.crt
CN: KLASS3-SK OCSP RESPONDER
CERTS:
- jar://certs/KLASS3-SK OCSP.crt
- jar://certs/KLASS3-SK OCSP 2006.crt
URL: http://ocsp.sk.ee
- OCSP:
CA_CN: EID-SK
CA_CERT: jar://certs/EID-SK 2007.crt
CN: EID-SK 2007 OCSP RESPONDER
CERTS:
- jar://certs/EID-SK 2007 OCSP.crt
URL: http://ocsp.sk.ee
- OCSP:
CERTS:
- jar://certs/EID-SK 2007 OCSP.crt
CN: EID-SK OCSP RESPONDER 2007
CA_CERT: jar://certs/EID-SK 2007.crt
CA_CN: EID-SK 2007
URL: http://ocsp.sk.ee
- OCSP:
CN: ESTEID-SK 2007 OCSP RESPONDER
CERTS:
- jar://certs/ESTEID-SK 2007 OCSP.crt
CA_CERT: jar://certs/ESTEID-SK 2007.crt
CA_CN: ESTEID-SK 2007
URL: http://ocsp.sk.ee
- OCSP:
CN: ESTEID-SK 2007 OCSP RESPONDER 2010
CERTS:
- jar://certs/ESTEID-SK 2007 OCSP 2010.crt
CA_CERT: jar://certs/ESTEID-SK 2007.crt
CA_CN: ESTEID-SK 2007
URL: http://ocsp.sk.ee
- OCSP:
CERTS:
- jar://certs/EID-SK 2007 OCSP 2010.crt
CN: EID-SK 2007 OCSP RESPONDER 2010
CA_CERT: jar://certs/EID-SK 2007.crt
CA_CN: EID-SK 2007
URL: http://ocsp.sk.ee
- OCSP:
CERTS:
- jar://certs/EID-SK 2007 OCSP.crt
CN: EID-SK 2007 OCSP RESPONDER
CA_CERT: jar://certs/EID-SK 2007.crt
CA_CN: EID-SK 2007
URL: http://ocsp.sk.ee
- OCSP:
CERTS:
- jar://certs/ESTEID-SK OCSP 2005.crt
CN: ESTEID-SK OCSP RESPONDER 2005
CA_CERT: jar://certs/ESTEID-SK.crt
CA_CN: ESTEID-SK
URL: http://ocsp.sk.ee
- OCSP:
CERTS:
- jar://certs/SK OCSP 2011.crt
CN: SK OCSP RESPONDER 2011
CA_CERT: jar://certs/EECCRCA.crt
CA_CN: EE Certification Centre Root CA
URL: http://ocsp.sk.ee
- OCSP:
CA_CN: KLASS3-SK
CA_CERT: jar://certs/KLASS3-SK.crt
CN: KLASS3-SK OCSP RESPONDER 2009
CERTS:
- jar://certs/KLASS3-SK OCSP 2009.crt
URL: http://ocsp.sk.ee
- OCSP:
CERTS:
- jar://certs/ESTEID-SK OCSP.crt
CN: ESTEID-SK OCSP RESPONDER
CA_CERT: jar://certs/ESTEID-SK.crt
CA_CN: ESTEID-SK
URL: http://ocsp.sk.ee
- OCSP:
CERTS:
- jar://certs/EID-SK OCSP.crt
- jar://certs/EID-SK OCSP 2006.crt
CN: EID-SK OCSP RESPONDER
CA_CERT: jar://certs/EID-SK.crt
CA_CN: EID-SK
URL: http://ocsp.sk.ee
- OCSP:
CERTS:
- jar://certs/KLASS3-SK 2010 OCSP.crt
CN: KLASS3-SK 2010 OCSP RESPONDER
CA_CERT: jar://certs/KLASS3-SK 2010.crt
CA_CN: KLASS3-SK 2010
URL: http://ocsp.sk.ee
- OCSP:
CERTS:
- jar://certs/TEST-SK OCSP 2005.crt
CN: TEST-SK OCSP RESPONDER 2005
CA_CERT: jar://certs/TEST-SK.crt
CA_CN: TEST-SK
URL: http://www.openxades.org/cgi-bin/ocsp.cgi
- OCSP:
CERTS:
- jar://certs/TEST SK OCSP 2011.crt
CN: TEST of SK OCSP RESPONDER 2011
CA_CERT: jar://certs/TEST EECCRCA.crt
CA_CN: TEST of EE Certification Centre Root CA
URL: http://www.openxades.org/cgi-bin/ocsp.cgi
- OCSP:
CA_CN: TEST of ESTEID-SK 2011
CA_CERT: jar://certs/TEST ESTEID-SK 2011.crt
CN: TEST of SK OCSP RESPONDER 2011
CERTS:
- jar://certs/TEST SK OCSP 2011.crt
URL: http://www.openxades.org/cgi-bin/ocsp.cgi
- OCSP:
CERTS:
- jar://certs/TEST SK OCSP 2011.crt
CN: TEST of SK OCSP RESPONDER 2011
CA_CERT: jar://certs/KLASS3-SK 2010.crt
CA_CN: KLASS3-SK 2010
URL: http://www.openxades.org/cgi-bin/ocsp.cgi
- OCSP:
CERTS:
- jar://certs/SK_proxy_OCSP_responder_2009.pem.cer
CA_CN: KLASS3-SK
CA_CERT: jar://certs/KLASS3-SK.crt
CN: SK Proxy OCSP Responder 2009
URL: http://ocsp.sk.ee
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment