IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Comment remplacer une API standard obsolète


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Comment remplacer une API standard obsolète
    Bonjour à tous !

    Le titre de la discussion n'est peut-être pas très parlant alors je vais l'illustrer par l'exemple.

    Je fais un petit programme qui a pour but de vérifier une signature XML.
    Pour cela, une API existe (javax.xml.crypto.dsig.*) mais cette API a apparemment évolué au cours des versions de Java.
    En faisant des tests, j'ai remarqué que l'algorithme de hachage SHA-256 fonctionnant avec Java 1.6.22 alors que Java 1.6.13 ne prend en compte que le SHA-1.

    Donc, comme je sais que tout le monde n'a pas la dernière version de Java (moi y compris :/), je voudrais inclure la dernière version de l'API qui m'intéresse dans mon application afin qu'elle puisse fonctionner sur des versions plus anciennes de Java. Mais, d'après ce que je comprends, je me retrouve donc avec deux packages javax.xml.crypto.dsig.* dans mon classpath et c'est celui de Java qui est utilisé.

    Ma question est donc : Existe-t-il un moyen de pouvoir utiliser le package que j'ai inclus dans l'application plutôt que celui de l'utilisateur ? Et, si oui, comment ?

    Merci d'avoir pris le temps de me lire et un grand merci à ceux qui prendront le temps de me répondre

    DiJiCode

  2. #2
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 502
    Points
    15 502
    Par défaut
    Tu peux probablement le faire en utilisant l'option "-Xbootclasspath", dans la ligne de commande. Le bootclasspath permet de remplacer la bibliothèque standard.

    Mais ce que tu souhaites faire n'est pas une bonne idée. Ce genre de chose risque fortement de poser des problèmes techniques(mélanger du code de deux version différentes) et légaux (il est interdit de distribuer un JRE/JDK d'Oracle incomplet).
    Si tu veux utiliser SHA-256 sur des versions antérieures de java regardes plutôt du coté de bibliothèque externes comme commons codec d'Apache.

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Pour les problèmes techniques, ça ne devrait pas poser de soucis vu que j'ai trouvé cette API seule en téléchargement (visiblement, elle n'aurait pas toujours été une API standard). Maintenant, s'il y a des risques au niveau de la légalité, comme je ne m'y connais pas trop dans ce domaine, je préfère éviter de faire comme ça effectivement ^^

    Je vais jeter un œil au lien que tu as écrit

    Merci

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ou bouncycastle, avec, parmis plein d'autres, sa classe SHA256DIgest

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    En fait, ce qui m'arrangeait avec l'API java, c'est que je me contentais de lui passer le document XML et l'API me retournait tout ce dont j'avais besoin... Ça m'arrangeait pas mal de ne pas avoir à "parser" le document XML moi-même :p

    Enfin, si je ne peux pas utiliser l'API standard de java pour ça, je dois visiblement récupérer moi-même les infos dans le document XML donc, pour traiter ces infos, j'utiliserai bouncycastle puisque je l'utilise déjà pour gérer le format p7s.

    Je ne mets pas tout de suite le sujet en <Résolu> au cas où quelqu'un connaitrait une API qui gèrerait le format XAdES (et oui, je suis un peu fainéant sur les bords ^^).

    Merci pour vos réponses en tout cas

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    bouncycastle est un security provider jce. Donc une fois enregistré, ses algorithmes sont accessibles à travers l'api crypto de java, via Cipher.getInstance, etc Comme des vrais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     import java.security.Security;
     import org.bouncycastle.jce.provider.BouncyCastleProvider;
     
     Security.addProvider(new BouncyCastleProvider());

  7. #7
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Pourtant, le provider de bouncycastle a été spécifié au début de mon application puisque j'en avais eu besoin pour lire du p7s mais il doit y avoir quelque chose que je n'ai pas du faire correctement :S
    J'essaierai de faire comme ça quand j'aurai le temps et posterai pour dire si effectivement j'ai réussi

    Quoi qu'il en soit, je suis parti sur la solution de parcourir le document XML à la main. Avec l'utilisation de XPath et les standards de w3c, c'est beaucoup plus simple que ce que je pensais

    Merci pour vos réponses !

    Au fait tchize_, je te vois dans quasiment tous les sujets, il y a un domaine dans lequel tu es incollable ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment remplacer une fonction d une touche clavier
    Par dominic75 dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 10/04/2006, 17h09
  2. Comment exécuter une API windows via php ?
    Par mikemead dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 31/03/2006, 10h19
  3. [VB.NET] Comment remplacer une couleur par une autre?
    Par jazz matazz dans le forum VB.NET
    Réponses: 5
    Dernier message: 11/02/2006, 14h29
  4. Comment faire une API Win32 avec C++ Builder
    Par Zerocool003 dans le forum C++Builder
    Réponses: 2
    Dernier message: 31/01/2006, 16h13
  5. comment remplacer une partie de texte dans un champs
    Par patlapi dans le forum Paradox
    Réponses: 4
    Dernier message: 20/11/2003, 14h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo