Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Current »

Recuperación del algoritmo de una firma

Introducción

A la hora de tratar con documentos de gran tamaño, es necesario realizar las verificaciones de las firmas utilizando el hash del documento.

El problema radica en que hay aplicaciones que reciben firmas externas sin información asociada, de tal manera que al desconocerse el algoritmo utilizado no se puede verificar vía hash.

Es aquí donde entra esta librería, la cual permite recuperar el algoritmo que se utilizó al realizar la firma, solventando de esta manera el problema con las firmas externas o aquellas cuyo algoritmo se desconoce.

Librería

La librería está en el repositorio de Bitbucket COMMONS con el nombre de algchecker

https://bitbucket.org/amm_lote2/commons/src/master/

Formatos de firma soportados

Formato

Empaquetado

CAdES

Detached, Enveloping

XAdES

Detached, Enveloping, Enveloped

PAdES

Enveloped

CMS

Detached, Enveloping

XMLDSIG

Detached, Enveloping, Enveloped

Formatos de algortimo

Algoritmo

JavaName

OID

XML

SHA1

SHA-1

1.3.14.3.2.26

http://www.w3.org/2000/09/xmldsig#sha1

SHA224

SHA-224

2.16.840.1.101.3.4.2.4

http://www.w3.org/2001/04/xmldsig-more#sha224

SHA256

SHA-256

2.16.840.1.101.3.4.2.1

http://www.w3.org/2001/04/xmlenc#sha256

SHA384

SHA-384

2.16.840.1.101.3.4.2.2

http://www.w3.org/2001/04/xmldsig-more#sha384

SHA512

SHA-512

2.16.840.1.101.3.4.2.3

http://www.w3.org/2001/04/xmlenc#sha512

Excepciones

La librería lanza excepciones del tipo AlgorithmCheckException. Se pueden dar estas excepciones por dos motivos:

  • No se ha encontrado el algoritmo en la firma digital.

  • No se ha podido recuperar el algoritmo de la firma ya que han aparecido excepciones durante el proceso.

Ejemplo de uso

byte[] data = 
Files.readAllBytes(Paths.get("PATH_TO_SIGNATURE"));
AlgorithmChecker checker = new AlgorithmChecker
.ACBuilder(DigitalSignature.CAdES,data)
.build();
DigestAlgorithm algorithm = checker.getAlgorithm();
String name = algorithm.getName();
String javaName = algorithm.getJavaName();
String oid = algorithm.getOid();
String xml = algorithm.getUri();
  • No labels