Próbuję użyć digitally sign an XML document używając Java. Mam implementację działającą z niektórymi referencjami, które znalazłem, które używają różnych implementacji w pakiecie javax.xml.crypto.dsig
.Czy jest łatwiejszy sposób podpisywania dokumentu XML w Javie?
Jednak moja obecna implementacja jest jak many z examples Sprawdziliśmy - to raczej gadatliwy i polega na wykorzystaniu nie mniej niż 23 różnych klas API z java.xml.crypto.dsig
, javax.xml.transform
i java.security
pakietów, między innymi. Czuję się tak, jakbym wszedł na teren factory factory factory i zajęło mi to kilka godzin, aby dowiedzieć się, co się dzieje.
Moje pytanie brzmi, jest łatwiejszy sposób to zrobić? Jeśli mam/prywatnych plików klucz publiczny i chcę dodać <Signature/>
do dokumentu XML, jest tam biblioteki, które obecnie nie tylko pozwala mi nazwać coś takiego:
OutputStream signFile(InputStream xmlFile, File privateKey)
... bez wszystkich szaleństwo XMLSignatureFactory/CanonicalizationMethod/DOMSignContext?
Nie jestem zbyt dobrze zaznajomiony z kryptografią, a interfejs API dostarczony przez Java wydaje się dość zniechęcający dla programistów takich jak ja, próbujących zapoznać się z cyfrowym podpisywaniem. Jeśli wszystko to jest konieczne lub nie ma obecnie przyjaznego interfejsu API, jest to w porządku i jestem gotów zaakceptować to jako odpowiedź. Chciałbym tylko wiedzieć, czy niepotrzebnie biorę tutaj trudną drogę.
jako alternatywne rozwiązanie, udało mi się nawiązać połączenie jednym systemie-liner i używać http://www.aleksey.com/xmlsec/ do podpisania XML. Nie umieszczam tego jako odpowiedzi, ponieważ nie mieści się ona w granicach pytania (tj. "W Javie"). –