Changeset 0111cff in murachi
- Timestamp:
- Jul 28, 2015, 11:27:02 AM (9 years ago)
- Branches:
- master
- Children:
- 1fd3b33
- Parents:
- 2b8a08d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
murachi/src/main/java/ve/gob/cenditel/murachi/MurachiRESTWS.java
r2b8a08d r0111cff 1091 1091 * "reason":"reason", 1092 1092 * "location":"location", 1093 * "contact":"contact" 1093 * "contact":"contact", 1094 * "signatureVisbile":"true" 1094 1095 * } 1095 1096 * … … 1103 1104 * 1104 1105 * contact: corresponde a información de contacto del firmante. 1106 * 1107 * signatureVisible: true para mostrar un indicador visible de firma en la primera página 1108 * del documento pdf. false para no mostrar un indicador visible de firma en la primera página 1109 * del documento pdf. 1105 1110 * 1106 1111 * @apiSuccess {String} hash Reseña o hash del archivo que se debe cifrar con la clave privada protegida por el … … 1114 1119 * "reason":"prueba firma web", 1115 1120 * "location":"Oficina", 1116 * "contact":"582746574336" 1121 * "contact":"582746574336", 1122 * "signatureVisible":"true" 1117 1123 * }); 1118 1124 * … … 2329 2335 } 2330 2336 2331 2337 // ************************************************************************ 2338 // ************************************************************************ 2339 // ************************************************************************ 2340 2341 // pruebas de funciones para gestionar un contenedor BDOC 2342 2343 @GET 2344 @Path("/pruebaBDOC") 2345 @Produces("text/plain") 2346 public String testBDOCFunctions() { 2347 2348 Security.addProvider(new BouncyCastleProvider()); 2349 2350 Container c = createBDOCContainer(); 2351 2352 String containerId = UUID.randomUUID().toString(); 2353 System.out.println(containerId); 2354 2355 if (c==null) 2356 { 2357 System.out.println("container == null"); 2358 } 2359 else 2360 { 2361 System.out.println("container != null"); 2362 } 2363 2364 addFileToBDOCContainer("/tmp/slides-93-cfrg-9.pdf", c); 2365 2366 System.out.println("numero de archivos en el contenedor: " + Integer.toString(c.getDataFiles().size())); 2367 2368 PKCS12Signer PKCS12_SIGNER = new PKCS12Signer("/tmp/tibisay.p12", "123456".toCharArray()); 2369 2370 SignatureParameters signatureParameters = new SignatureParameters(); 2371 SignatureProductionPlace productionPlace = new SignatureProductionPlace(); 2372 productionPlace.setCity("Merida"); 2373 productionPlace.setStateOrProvince("Merida"); 2374 productionPlace.setPostalCode("5101"); 2375 productionPlace.setCountry("Venezuela"); 2376 signatureParameters.setProductionPlace(productionPlace); 2377 logger.debug("container setProductionPlace"); 2378 signatureParameters.setRoles(asList("Desarrollador")); 2379 c.setSignatureParameters(signatureParameters); 2380 c.setSignatureProfile(SignatureProfile.B_BES); 2381 2382 c.sign(PKCS12_SIGNER); 2383 2384 2385 if (deleteDataFileFromBDOCContainer("/tmp/slides-93-cfrg-9.pdf", c)) 2386 { 2387 System.out.println("eliminado archivo del contenedor"); 2388 } 2389 else 2390 { 2391 System.out.println("NO se eliminó el archivo del contenedor"); 2392 } 2393 2394 if (deleteSignatureFromBDOCContainer(0, c)) 2395 { 2396 System.out.println("SE ELIMINO la firma 2"); 2397 } 2398 else 2399 { 2400 System.out.println("no se pudo eliminar la firma 0"); 2401 } 2402 2403 System.out.println("numero de firmas restantes: "+ Integer.toString(c.getSignatures().size())); 2404 2405 c.save("/tmp/prueba.bdoc"); 2406 2407 return "prueba exitosa"; 2408 } 2409 2410 2411 /** 2412 * Crea un contenedor BDOC 2413 * @return contenedor BDOC creado 2414 */ 2415 private Container createBDOCContainer() { 2416 logger.debug("createBDOCContainer() "); 2417 System.out.println("createBDOCContainer()"); 2418 2419 Container container = null; 2420 2421 Configuration configuration = new Configuration(Configuration.Mode.PROD); 2422 2423 configuration.loadConfiguration(DIGIDOC4J_CONFIGURATION); 2424 2425 configuration.setTslLocation(DIGIDOC4J_TSL_LOCATION); 2426 2427 2428 container = Container.create(Container.DocumentType.BDOC, configuration); 2429 System.out.println("container created"); 2430 logger.debug("container created"); 2431 2432 return container; 2433 } 2434 2435 /** 2436 * Agrega un archivo a un contendor BDOC existente 2437 * @param filePath ruta absoluta al archivo que se desea agregar 2438 * @param c contenedor BDOC al que se le desea agregar el archivo 2439 */ 2440 private void addFileToBDOCContainer(String filePath, Container c) { 2441 logger.debug("addFileToBDOCContainer() "); 2442 System.out.println("addFileToBDOCContainer()"); 2443 2444 String mime = getMimeTypeWithTika(filePath); 2445 System.out.println("mimeType: " + mime); 2446 2447 c.addDataFile(filePath, mime); 2448 System.out.println("agregado archivo a contenedor"); 2449 2450 } 2451 2452 /** 2453 * Elimina un archivo de un contenedor BDOC existente. 2454 * 2455 * Se debe pasar la ruta absoluta del archivo que se desea eliminar 2456 * 2457 * @param dataFile ruta absoluta del archivo que se desea eliminar 2458 * @param c contenedor BDOC del que se desea eliminar el archivo 2459 * @return si el archivo se elimino del contenedor 2460 */ 2461 private boolean deleteDataFileFromBDOCContainer(String dataFile, Container c) { 2462 logger.debug("deleteDataFileFromBDOCContainer() "); 2463 System.out.println("deleteDataFileFromBDOCContainer()"); 2464 2465 boolean result = false; 2466 2467 // si el contenedor esta firmado no se puede eliminar un archivo 2468 if (c.getSignatures().size() > 0) 2469 { 2470 logger.debug("el contenedor esta firmado y no se puede eliminar el archivo: "+ dataFile); 2471 System.out.println("el contenedor esta firmado y no se puede eliminar el archivo: "+ dataFile); 2472 result = false; 2473 } 2474 else 2475 { 2476 int files = c.getDataFiles().size(); 2477 System.out.println("numero de archivos en el contenedor: " + Integer.toString(files)); 2478 if (files == 0) 2479 { 2480 logger.debug("el contendor no posee archivos"); 2481 System.out.println("el contenedor no posee archivos"); 2482 result = false; 2483 } 2484 else 2485 { 2486 c.removeDataFile(dataFile); 2487 logger.debug("archivo eliminado del contenedor"); 2488 System.out.println("archivo eliminado del contenedor"); 2489 result = true; 2490 } 2491 } 2492 return result; 2493 } 2494 2495 /** 2496 * Elimina una firma del contendor BDOC. 2497 * 2498 * @param signatureId id de la firma que se desea eliminar. Las firmas se enumeran de 0 en adelante. 2499 * @param c Contenedor para eliminar la firma 2500 * @return si se eliminó la firma del contenedor 2501 */ 2502 private boolean deleteSignatureFromBDOCContainer(int signatureId, Container c) { 2503 logger.debug("deleteSignatureFromBDOCContainer() "); 2504 System.out.println("deleteSignatureFromBDOCContainer()"); 2505 2506 boolean result = false; 2507 2508 // si el contenedor esta firmado no se puede eliminar un archivo 2509 int signatures = c.getSignatures().size(); 2510 System.out.println("numero de firmas: "+ Integer.toString(signatures)); 2511 2512 if (signatures < 1) 2513 { 2514 logger.debug("el contenedor no esta firmado; no se elimina ninguna firma"); 2515 System.out.println("el contenedor no esta firmado; no se elimina ninguna firma"); 2516 result = false; 2517 } 2518 else 2519 { 2520 if ((signatureId >= signatures) || (signatureId < 0)) 2521 { 2522 logger.debug("el id de firma a eliminar no es valido."); 2523 System.out.println("el id de firma a eliminar no es valido"); 2524 result = false; 2525 } 2526 else 2527 { 2528 c.removeSignature(signatureId); 2529 result = true; 2530 } 2531 } 2532 return result; 2533 } 2332 2534 2333 2535
Note: See TracChangeset
for help on using the changeset viewer.