Я смог подписать и проверить свою подпись XML при использовании Apache Santuario, но теперь я хочу применить только подпись к полям, где атрибут Authenticate = "true"
Например:
< /code>
Может ли кто-нибудь помочь мне понять, как это достичь?xmlSignature.addDocument("#xpointer(//*[@authenticate='true'])", transforms, Constants.ALGO_ID_DIGEST_SHA1);
< /code>
и просто получите исключение: < /p>
Original Exception was org.apache.xml.security.utils.resolver.ResourceResolverException:
Could not find a resolver for URI #xpointer(//*[@authenticate='true'])
< /code>
Я попытался добавить следующее: < /p>
transforms.addTransform(Transforms.TRANSFORM_XPOINTER);
xmlSignature.getSignedInfo().addResourceResolver(new ResolverXPointer());
Это возвращает мне исключение при добавлении xpointer transform.
resolverxpointer , похоже, не имеет эффекта.
TransformationException: Unknown transformation.
No handler installed for URI http://www.w3.org/TR/2001/WD-xptr-20010108
< /code>
Полный метод ниже: < /p>
final var transforms = new Transforms(document);
transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
transforms.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);
transforms.addTransform(Transforms.TRANSFORM_XPOINTER);
xmlSignature.addDocument("#xpointer(//*[@authenticate='true'])", transforms, Constants.ALGO_ID_DIGEST_SHA1);
xmlSignature.addKeyInfo(signingCertificate);
xmlSignature.sign(signingKey);
Подробнее здесь: https://stackoverflow.com/questions/687 ... icate-true