/** Comprueba si el fichero <code>file</code> es un fichero de firma aceptado * por el manejador <code>signer</code>. En caso de no encontrar el fichero, * agrega una entrada al logger indicándolo y se lanza una * excepción. * @param signer Manejador de firma. * @param file Fichero a analizar. * @return Devuelve <code>true</code> si el fichero es una firma compatible * con el signer indicado, <code>false</code> en caso contrario. * @throws IOException Cuando no se pudo leer el fichero. */ private static boolean isSign(final AOSigner signer, final File file) throws IOException { try ( final InputStream is = new FileInputStream(file); ) { return signer.isSign(AOUtil.getDataFromInputStream(is)); } }
/** Recupera un manejador de firma capaz de tratar la firma indicada. En caso * de no tener ningún manejador compatible se devolverá <code>null</code>. * @param signData Firma electrónica * @return Manejador de firma * @throws IOException Si ocurren problemas relacionados con la lectura de la firma */ public static AOSigner getSigner(final byte[] signData) throws IOException { if (signData == null) { throw new IllegalArgumentException("No se han indicado datos de firma"); //$NON-NLS-1$ } for (final String format[] : SIGNERS_CLASSES) { // Solo buscaremos el signer compatible entre los que soportan la identificacion if (!Boolean.parseBoolean(format[2])) { continue; } if (SIGNERS.get(format[0]) == null) { try { SIGNERS.put(format[0], (AOSigner) Class.forName(format[1]).getDeclaredConstructor().newInstance()); } catch(final Exception e) { LOGGER.warning("No se ha podido instanciar un manejador para el formato de firma '" + format[0] + "': " + e); //$NON-NLS-1$ //$NON-NLS-2$ continue; } } final AOSigner signer = SIGNERS.get(format[0]); if (signer != null && signer.isSign(signData)) { return signer; } } return null; }
ODF_SIGNER.equals(signerClassName) || OOXML_SIGNER.equals(signerClassName)) && signer.isSign(dataToSign)) { textAux = ".cosign"; //$NON-NLS-1$
if (!signer.isSign(signData)) { throw new AOException("La firma introducida no se corresponde con el formato de firma especificado"); //$NON-NLS-1$