xades4j как добавить скрепку

Это мой код для подписи XML-документа:

KeyingDataProvider kp = new FileSystemKeyStoreKeyingDataProvider(keyStoreType, 
    keyStorePath, certificateSelector, keyStorePasswordProvider, 
    entryPasswordProvider, returnFullChain);
XadesSigningProfile p = new XadesBesSigningProfile(kp);

XadesSigner signer = p.newSigner();

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);

DocumentBuilder builder = factory.newDocumentBuilder();     

docSource = builder.parse(new FileInputStream(pathToXmlFile));
docDest = builder.newDocument();

Node objContent = docDest.importNode(docSource.getDocumentElement(), true);

DataObjectDesc obj = new EnvelopedXmlObject(objContent, "text/xml", null);

new Enveloped(signer).sign(docSource.getDocumentElement());

Теперь к тому же файлу XML мне нужно добавить встречную подпись. Не могли бы вы дать мне несколько советов о том, как это сделать? На данный момент у меня нет никаких идей :(

Мой XML-файл выглядит так:

<rootElement>
  <A>
    <A1>
    </A1>
  </A>
</rootElement>

После первой подписи у меня есть:

<rootElement>
  <A>
    <A1>
    </A1>
  </A>
  <ds:Signature>
  </ds:Signature>
</rootElement>

С наилучшими пожеланиями Джон С.


person user3805907    schedule 04.07.2014    source источник


Ответы (1)


Ознакомьтесь с этим тестом в исходном коде библиотеки. Он генерирует подпись, содержащую встречную подпись. По сути, вам нужно определить SignaturePropertiesProvider, который добавляет свойство CounterSignature, и добавить его в свой профиль подписи. Обратите внимание, что CounterSignatureProperty получает другую подписывающую сторону, используемую для создания встречной подписи.

person lgoncalves    schedule 05.07.2014
comment
Спасибо. К сожалению, предоставленный образец показывает, как подписать документ вместе с обычной подписью. У меня уже есть подписанный XML, и я хочу расширить его с помощью контрподписи. Я нашел эту тему: stackoverflow.com/questions/14696429/xades-countersign-document но на самом деле это не объясняет мне, как этого добиться. Теперь это может быть глупый вопрос, но я новичок в JAVA и понятия не имею, как заставить его работать. - person user3805907; 06.07.2014
comment
Вы можете попробовать использовать XadesSignatureFormatExtender напрямую — code.google.com/p/xades4j/wiki/ Обогащение подписи - person lgoncalves; 09.07.2014