Bonjour a tous,
J'essaie de réaliser une application de signature électronique en utilisant l'api java "Java XML Digital Signature API" qui vient avec Java 6. Jusque là, j'arrive à tout faire (signature, vérification, transformation ....) sur des documents xml aussi bien que binaires (images, pdf...). le seul problème est qu'en essayant d'afficher le contenu signé je tombe sur un ArrayIndexOutOfBoundException.
ce probleme n'est pas tout le temps présant. il n'apparait que si le nombre d'objets signés est superieur à 1, et que le deuxieme objet depasse en taille les 12Koctets.
voila mon code:
Donc pour recapituler: Il faut activer la mise en cache des references pour pouvoir recuperer le contenu signé apres la signature. dans mon cas, il me suffit d'activer le "reference caching" pour que la ligne signature.sign(signContext) me lance un ArrayIndexOutOfBoundException.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 signContext.setProperty("javax.xml.crypto.dsig.cacheReference", Boolean.TRUE); signature.sign(signContext); InputStream signedContent = reference.getDigestInputStream();
je pensais à une augmentation de taille de la cache, mais sans succes. et franchement je pense pas que ça sera reglé si je reussis à le faire parce que j'arrive a signer des documents XML d'une taille de 500Ko sans piece jointe (2eme reference) sans probleme, alors que je peut pas signer un document de 6Ko avec une piece jointe de 30ko
Quelcun a-t-il une idée sur ce propos?
Partager