Index: murachi/src/main/java/ve/gob/cenditel/murachi/MurachiRESTWS.java
===================================================================
--- murachi/src/main/java/ve/gob/cenditel/murachi/MurachiRESTWS.java	(revision 81c864a8dd99434382e64f89b7fd715eb107012e)
+++ murachi/src/main/java/ve/gob/cenditel/murachi/MurachiRESTWS.java	(revision 90b29528eafe4029521d1c6e9e238ff7ee8e5654)
@@ -15,4 +15,6 @@
 import java.io.ObjectOutputStream;
 import java.io.OutputStream;
+import java.net.URISyntaxException;
+import java.net.URL;
 import java.nio.file.Files;
 import java.nio.file.Paths;
@@ -111,4 +113,5 @@
 
 import ve.gob.cenditel.murachi.MurachiException;
+
 import org.apache.log4j.Logger;
 
@@ -118,5 +121,4 @@
 	final static Logger logger = Logger.getLogger(MurachiRESTWS.class);
 	
-
 	private static final String API_VERSION = "0.1.0";
 	
@@ -126,12 +128,4 @@
 	
 	private static final String RSA_DIGEST_ENCRYPTION_ALGORITHM = "RSA";
-
-	public static final String ACRAIZ = "/tmp/CERTIFICADO-RAIZ-SHA384.crt";
-	public static final String PSCFII = "/tmp/PSCFII-SHA256.crt";	
-	public static final String GIDSI = "/tmp/gidsi.crt";
-	
-	
-	private static final String ANSI_RED = "^[[31m";
-	private static final String ANSI_RESET = "^[[0m";
 	
 	// para reportes de advertencias de BDOC
@@ -142,6 +136,20 @@
 
 	/**
+	 * Retorna la ruta absoluta de un archivo recurso
+	 * @param resource cadena con el nombre del archivo
+	 * @return ruta absoluta de un archivo recurso
+	 */
+	String getAbsolutePathOfResource(String resource) {
+		ClassLoader classLoader = getClass().getClassLoader();
+		File file = new File(classLoader.getResource(resource).getFile());
+		logger.debug("archivo recurso solicitado: "+ resource +" path abosulto: " + file.getAbsolutePath());
+		return file.getAbsolutePath();		
+	}
+	
+	
+	/**
 	 * Retorna la version del api del servicio
 	 * @return version del api del servicio
+	 * @throws URISyntaxException 
 	 */
 	@Path("/version")
@@ -149,5 +157,5 @@
 	@Produces(MediaType.TEXT_HTML)
 	public String returnVersion() {
-		logger.info("/version: Murachi Version: " + API_VERSION);
+		logger.info("/version: Murachi Version: " + API_VERSION);		
 		return "<p>Murachi Version: " + API_VERSION + "</p>";
 	}
@@ -487,7 +495,10 @@
 				HashMap<String, String> signatureInformation;
 				
+				// inicializar el keystore para verificacion
+				KeyStore ks = setupKeyStore();
+				
 				for (String name : names) {
 					System.out.println("===== " + name + " =====");
-					signatureInformation = verifySignature(af, name);
+					signatureInformation = verifySignature(af, name, ks);
 					System.out.println("signatureInformation.size " + signatureInformation.size());
 					
@@ -523,5 +534,5 @@
 	 * @throws MurachiException 
 	 */
-	public HashMap<String, String> verifySignature(AcroFields fields, String name) 
+	public HashMap<String, String> verifySignature(AcroFields fields, String name, KeyStore ks) 
 			throws GeneralSecurityException, IOException, MurachiException {
 			
@@ -610,5 +621,5 @@
 		
 		
-		KeyStore ks = setupKeyStore();
+		//KeyStore ks = setupKeyStore();
 		
 		Certificate[] certs = pkcs7.getSignCertificateChain();
@@ -667,9 +678,11 @@
 			ks.load(null, null);
 			CertificateFactory cf = CertificateFactory.getInstance("X.509");
-			ks.setCertificateEntry("acraiz",cf.generateCertificate(new FileInputStream(ACRAIZ)));
-			ks.setCertificateEntry("pscfii",cf.generateCertificate(new FileInputStream(PSCFII)));
-			ks.setCertificateEntry("gidsi",cf.generateCertificate(new FileInputStream(GIDSI)));
-			
-			
+			ks.setCertificateEntry("acraiz",
+					cf.generateCertificate(new FileInputStream(getAbsolutePathOfResource("CERTIFICADO-RAIZ-SHA384.crt"))));
+			ks.setCertificateEntry("pscfii", 
+					cf.generateCertificate(new FileInputStream(getAbsolutePathOfResource("PSCFII-SHA256.crt"))));
+			ks.setCertificateEntry("gidsi", 
+					cf.generateCertificate(new FileInputStream(getAbsolutePathOfResource("gidsi.crt"))));
+						
 		} catch (KeyStoreException e) {	
 			logger.error("setupKeyStore() ocurrio una excepcion", e);
@@ -1286,5 +1299,5 @@
 		
 		if (signatureValidationResult.size() > 0) {
-			System.out.println(ANSI_RED + "Signature " + signature.getId() + " is not valid" + ANSI_RESET);
+			System.out.println("Signature " + signature.getId() + " is not valid");
 	        signatureMap.put("isValid", Boolean.toString(false));
 	        int counter = 1;
@@ -1376,5 +1389,5 @@
 	        System.out.println("Signature " + signature.getId() + " is valid");
 	      } else {
-	        System.out.println(ANSI_RED + "Signature " + signature.getId() + " is not valid" + ANSI_RESET);
+	        System.out.println("Signature " + signature.getId() + " is not valid");
 	        for (DigiDoc4JException exception : signatureValidationResult) {
 	          System.out.println((isDDoc ? "        " : "   Error: ")
Index: murachi/src/main/resources/CERTIFICADO-RAIZ-SHA384.crt
===================================================================
--- murachi/src/main/resources/CERTIFICADO-RAIZ-SHA384.crt	(revision 90b29528eafe4029521d1c6e9e238ff7ee8e5654)
+++ murachi/src/main/resources/CERTIFICADO-RAIZ-SHA384.crt	(revision 90b29528eafe4029521d1c6e9e238ff7ee8e5654)
@@ -0,0 +1,54 @@
+-----BEGIN CERTIFICATE-----
+MIIJmDCCB4CgAwIBAgIBCjANBgkqhkiG9w0BAQwFADCCAR4xPjA8BgNVBAMTNUF1
+dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIFJhaXogZGVsIEVzdGFkbyBWZW5lem9s
+YW5vMQswCQYDVQQGEwJWRTEQMA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UECBMQRGlz
+dHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0
+aWZpY2FjaW9uIEVsZWN0cm9uaWNhMUMwQQYDVQQLEzpTdXBlcmludGVuZGVuY2lh
+IGRlIFNlcnZpY2lvcyBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMSUwIwYJ
+KoZIhvcNAQkBFhZhY3JhaXpAc3VzY2VydGUuZ29iLnZlMB4XDTEwMTIyODE2NDEz
+NloXDTMwMTIyMzIzNTk1OVowggEeMT4wPAYDVQQDEzVBdXRvcmlkYWQgZGUgQ2Vy
+dGlmaWNhY2lvbiBSYWl6IGRlbCBFc3RhZG8gVmVuZXpvbGFubzELMAkGA1UEBhMC
+VkUxEDAOBgNVBAcTB0NhcmFjYXMxGTAXBgNVBAgTEERpc3RyaXRvIENhcGl0YWwx
+NjA0BgNVBAoTLVNpc3RlbWEgTmFjaW9uYWwgZGUgQ2VydGlmaWNhY2lvbiBFbGVj
+dHJvbmljYTFDMEEGA1UECxM6U3VwZXJpbnRlbmRlbmNpYSBkZSBTZXJ2aWNpb3Mg
+ZGUgQ2VydGlmaWNhY2lvbiBFbGVjdHJvbmljYTElMCMGCSqGSIb3DQEJARYWYWNy
+YWl6QHN1c2NlcnRlLmdvYi52ZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
+ggIBAME77xNS8ZlW47RsBeEaaRZhJoZ4rw785UAFCuPZOAVMqNS1wMYqzy95q6Gk
+UO81ER/ugiQX/KMcq/4HBn83fwdYWxPZfwBfK7BP2p/JsFgzYeFP0BXOLmvoJIzl
+Jb6FW+1MPwGBjuaZGFImWZsSmGUclb51mRYMZETh9/J5CLThR1exStxHQptwSzra
+zNFpkQY/zmj7+YZNA9yDoroVFv6sybYOZ7OxNDo7zkSLo45I7gMwtxqWZ8VkJZkC
+8+p0dX6mkhUT0QAV64Zc9HsZiH/oLhEkXjhrgZ28cF73MXIqLx1fyM4kPH1yOJi/
+R72nMwL7D+Sd6mZgI035TxuHXc2/uOwXfKrrTjaJDz8Jp6DdessOkxIgkKXRjP+F
+K3ze3n4NUIRGhGRtyvEjK95/2g02t6PeYiYVGur6ruS49n0RAaSS0/LJb6XzaAAe
+0mmO2evnEqxIKwy2mZRNPfAVW1l3wCnWiUwryBU6OsbFcFFrQm+00wOicXvOTHBM
+aiCVAVZTb9RSLyi+LJ1llzJZO3pq3IRiiBj38Nooo+2ZNbMEciSgmig7YXaUcmud
+SVQvLSL+Yw+SqawyezwZuASbp7d/0rutQ59d81zlbMt3J7yB567rT2IqIydQ8qBW
+k+fmXzghX+/FidYsh/aK+zZ7Wy68kKHuzEw1Vqkat5DGs+VzAgMBAAGjggLbMIIC
+1zASBgNVHRMBAf8ECDAGAQH/AgECMDcGA1UdEgQwMC6CD3N1c2NlcnRlLmdvYi52
+ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAzNi0wMB0GA1UdDgQWBBStuyIdxuDS
+Aaj9dlBSk+2YwU2u0zCCAVAGA1UdIwSCAUcwggFDgBStuyIdxuDSAaj9dlBSk+2Y
+wU2u06GCASakggEiMIIBHjE+MDwGA1UEAxM1QXV0b3JpZGFkIGRlIENlcnRpZmlj
+YWNpb24gUmFpeiBkZWwgRXN0YWRvIFZlbmV6b2xhbm8xCzAJBgNVBAYTAlZFMRAw
+DgYDVQQHEwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0cml0byBDYXBpdGFsMTYwNAYD
+VQQKEy1TaXN0ZW1hIE5hY2lvbmFsIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25p
+Y2ExQzBBBgNVBAsTOlN1cGVyaW50ZW5kZW5jaWEgZGUgU2VydmljaW9zIGRlIENl
+cnRpZmljYWNpb24gRWxlY3Ryb25pY2ExJTAjBgkqhkiG9w0BCQEWFmFjcmFpekBz
+dXNjZXJ0ZS5nb2IudmWCAQowCwYDVR0PBAQDAgEGMDcGA1UdEQQwMC6CD3N1c2Nl
+cnRlLmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAzNi0wMFQGA1UdHwRN
+MEswJKAioCCGHmh0dHA6Ly93d3cuc3VzY2VydGUuZ29iLnZlL2xjcjAjoCGgH4Yd
+bGRhcDovL2FjcmFpei5zdXNjZXJ0ZS5nb2IudmUwNwYIKwYBBQUHAQEEKzApMCcG
+CCsGAQUFBzABhhtodHRwOi8vb2NzcC5zdXNjZXJ0ZS5nb2IudmUwQAYDVR0gBDkw
+NzA1BgVghl4BAjAsMCoGCCsGAQUFBwIBFh5odHRwOi8vd3d3LnN1c2NlcnRlLmdv
+Yi52ZS9kcGMwDQYJKoZIhvcNAQEMBQADggIBABxZEOVepFHBR7tlsgtV4i+poye8
+4TyKx2wDVqOpKaKbipXYH/e2EmAWvnr0/QOBT/2BgapPgXAeLu/AkhJ7uw+FiMT5
+HUG1uiQqwygmE8r5APvXw1z5aOkbwRgiyaJsZMP4OcNOId3Wwt7ltizJXDjw3l5q
+5Cf0uDPEy2GSM1OozPydzVP7KAvv7X+wj3QitjVXgKiuBa4pCjuypP0949TBkPY/
+zrzkRP7RwX4oL/0AJDIgiMRvGHuRDkiQvJZiYIFtFAAaUbq1XWmNYUccLKxORSCp
+SEWjh0mjeJDdNkJ/2HZv/W2DAcb5f5ggf5YuImCroifAsDUk0Mm/M5kiUw5uH2JM
+JvwkM8rBA8ypF2FjMyTMaEDvr6LihcOIMNNFG+5W6lYKDwpHmzBZ2EnRMJAMJyom
+CChcMh8n160LSeUXUWPP5g07YFEavUMJUOaRtWPmZJeqC5cTAQaGXKUflb5Qjguy
+0mR/26tM5kPG5IWNav6N/ruUVR6RUycI07pnPTqhycHFFLr5Q1zFjiGMgqL9KjIl
+1RaMFVbAmPwuso4ZpBZxw0vdcf5x7CId8MGMmIGHtL8CuMQwMUfCwLCvezNjCt2s
+RZvBzICH9NmYXpyG/poE/2ZK/HthVL5XYwUHxqcBdVnkbjk7APSqnfOfiL/P0SUr
+339z7RaGqZBlD3Ap
+-----END CERTIFICATE-----
Index: murachi/src/main/resources/PSCFII-SHA256.crt
===================================================================
--- murachi/src/main/resources/PSCFII-SHA256.crt	(revision 90b29528eafe4029521d1c6e9e238ff7ee8e5654)
+++ murachi/src/main/resources/PSCFII-SHA256.crt	(revision 90b29528eafe4029521d1c6e9e238ff7ee8e5654)
@@ -0,0 +1,54 @@
+-----BEGIN CERTIFICATE-----
+MIIJsjCCB5qgAwIBAgIBDTANBgkqhkiG9w0BAQsFADCCAR4xPjA8BgNVBAMTNUF1
+dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIFJhaXogZGVsIEVzdGFkbyBWZW5lem9s
+YW5vMQswCQYDVQQGEwJWRTEQMA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UECBMQRGlz
+dHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0
+aWZpY2FjaW9uIEVsZWN0cm9uaWNhMUMwQQYDVQQLEzpTdXBlcmludGVuZGVuY2lh
+IGRlIFNlcnZpY2lvcyBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMSUwIwYJ
+KoZIhvcNAQkBFhZhY3JhaXpAc3VzY2VydGUuZ29iLnZlMB4XDTExMDEyNTE2MTAw
+MFoXDTIxMDEyMjIzNTk1OVowgfUxCzAJBgNVBAYTAlZFMRAwDgYDVQQIEwdNaXJh
+bmRhMQ8wDQYDVQQHEwZCYXJ1dGExNjA0BgNVBAoTLVNpc3RlbWEgTmFjaW9uYWwg
+ZGUgQ2VydGlmaWNhY2lvbiBFbGVjdHJvbmljYTEqMCgGA1UECxMhRnVuZGFjaW9u
+IEluc3RpdHV0byBkZSBJbmdlbmllcmlhMTowOAYDVQQDEzFQU0MgUHVibGljbyBk
+ZWwgTXBwQ1RJSSBwYXJhIGVsIEVzdGFkbyBWZW5lem9sYW5vMSMwIQYJKoZIhvcN
+AQkBFhRhZG1pbi1wa2lAZmlpLmdvYi52ZTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
+ADCCAgoCggIBAKtOL+lSslgzLqw5kTyiJca44qM8oO3uWd11zJlsqs5yNlAXLj95
+B0mmWdKhK/gPUykrXo9NYSOChfhwWFw6MxXZPkFzzL3RDvJAr69tsx1ovmexai5p
+NFTWp495wZd8nEV93wEEoC9okiHa3Orps+ovEul566m6zXTcjBPMPCOSsq/IXpqc
+pEtTz2y2JRMCuMvoCgTWUZBibqJN/anWEQxWXxY8e74HzcXjkRTDiPuhxKq/KHWn
+05Wu/ukZDbyT+ejrcgq1HQod1JRenWrWrzAKm9LmIVIdXLm9iHsVNuc/aLO1GE1F
+YocCrCFv70ug7eGGrYDn8UPdAmghHpZYxv+Op5driqV5Wo60QDQ21ga0XVJmCVK5
+nx5RZUMPlXgUFUY8QbLyVUA2ZB4IBEjqKaaDLwN6SVEDB6zViUlOo95JPS5WkNYC
+VroOBy2NTeXtkqRCfHzDsg1oD6TNVRwUxURDNQIbAbuREZgKqen6gBBLa73w+JrX
+UwKYVmCvqWhvTRyLV0cnT6JEFh/6/rdG4KInxyuFb7p4q4E0XaYyC3hU/67eYfSD
+xXE2fnTRLbLE4DY/NaD3p8fHcOW/xJRVmGPoWZVctZiqz2A/ObH5wZaUaCGpUw0M
+N5OjG1bo998w6/UIHNgMCe9leJ7rnF02UbJYQ/owCiz53IK/bu2jCTinAgMBAAGj
+ggMfMIIDGzASBgNVHRMBAf8ECDAGAQH/AgEBMDcGA1UdEgQwMC6CD3N1c2NlcnRl
+LmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAzNi0wMB0GA1UdDgQWBBSq
+lJhbAcgXGFAotfbhX/v8iV5prjCCAVAGA1UdIwSCAUcwggFDgBStuyIdxuDSAaj9
+dlBSk+2YwU2u06GCASakggEiMIIBHjE+MDwGA1UEAxM1QXV0b3JpZGFkIGRlIENl
+cnRpZmljYWNpb24gUmFpeiBkZWwgRXN0YWRvIFZlbmV6b2xhbm8xCzAJBgNVBAYT
+AlZFMRAwDgYDVQQHEwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0cml0byBDYXBpdGFs
+MTYwNAYDVQQKEy1TaXN0ZW1hIE5hY2lvbmFsIGRlIENlcnRpZmljYWNpb24gRWxl
+Y3Ryb25pY2ExQzBBBgNVBAsTOlN1cGVyaW50ZW5kZW5jaWEgZGUgU2VydmljaW9z
+IGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExJTAjBgkqhkiG9w0BCQEWFmFj
+cmFpekBzdXNjZXJ0ZS5nb2IudmWCAQowDgYDVR0PAQH/BAQDAgEGME4GA1UdEQRH
+MEWCDzE1MC4xODcuMTA4LjExMKAVBgVghl4CAaAMDApQU0MtMDAwMDAxoBsGBWCG
+XgICoBIMEFJJRi1HLTIwMDA0NjUwLTMwdgYDVR0fBG8wbTBGoESgQoZAaHR0cDov
+L3d3dy5zdXNjZXJ0ZS5nb2IudmUvbGNyL0NFUlRJRklDQURPLVJBSVotU0hBMzg0
+Q1JMREVSLmNybDAjoCGgH4YdbGRhcDovL2FjcmFpei5zdXNjZXJ0ZS5nb2IudmUw
+PgYIKwYBBQUHAQEEMjAwMC4GCCsGAQUFBzABhiJodHRwOi8vb2NzcC5hY3JhaXou
+c3VzY2VydGUuZ29iLnZlMEEGA1UdIAQ6MDgwNgYGYIZeAwECMCwwKgYIKwYBBQUH
+AgEWHmh0dHA6Ly93d3cuc3VzY2VydGUuZ29iLnZlL2RwYzANBgkqhkiG9w0BAQsF
+AAOCAgEAIZ0h22MVvdEOWG894RI6+GPcln+flrFPLYKbAhz+i+TZYDwr6JhAApDL
+UNFH9FBGG+BGHp2HX5SJMmmu4J/8DmDd62MOZ6v/uORoYJpMFM/TMnRrUvKeHQ9x
+oywwHW5rXdR3JvAuL3LbHHwe00conjN6s/aZSsS0wLkCs8ErM+nVHzhVhTsuCML4
+1LthJEAnMUT1s6+vy0dIDkFQFcPWCcQsy0ZANngcW2vcbrgrMElTlIg/sgmuWIdQ
+K8lbKEvBkrhRuJ+zOiCgZ7fiadRg0lNsO8gZtWF7aY6vBh4jskWal7S0au7Yxeha
+E+w7mQ5AqDP7lNtgYXfVq1LG5HXZ8lKRRzEnxhPMZnzb4mVTwxaisN3uJtscwZL/
+iCteUUMNqPh/mjhBxIUUXR+1En16jwRdzIlQYtLOecHBvvdDThYFfODzeCj1g7nf
+kOkdNa+/iWOw6VlQ6RMsCmNhl5PLzU+2/EZGJiekbjAq+pqbwPnq3IWh4zYrVHCZ
+vkSXmWw+whS9K9l6iBaMpKTQkSAykcBDOrjxEz7PSFbX6VAEJnPrlbToKBhQvuA8
+mlThIhiMwYcXg/iuCRFjX4E9mVqadJUQYBqd1zgumOBPSHsUBUiti3Yl7c09r05x
+x0a42Lt7MG7fnJ+4LBiQ3//wqFU2LaVCTU/N4nGMy836rOK2rs4=
+-----END CERTIFICATE-----
