2016-12-05 1 views
1

Я использую тестовый код, включенный в пакет XAdES4j. Я делаю основную окутанную подпись, которая включает элемент < ds: KeyInfo>, но в коде используется объект KeyingDataProvider, который не позволяет мне установить идентификатор , поэтому, когда я создаю DataObjectReference, я не знаю, какой URI установить.Как подписать свойства KeyInfo XAdES4j?

Java исходный код:

Document doc = getTestDocument(); 
Element elemToSign = doc.getDocumentElement(); 
SignerEPES signer = (SignerEPES)new XadesEpesSigningProfile(keyingProviderMy, policyInfoProvider).newSigner(); 
new Enveloped(signer).sign(elemToSign); 

Как мой код выглядит следующим образом:

Document doc = getTestDocument(); 
Element elemToSign = doc.getDocumentElement(); 
SignerEPES signer = (SignerEPES) new XadesEpesSigningProfile(
      keyingProviderMy, policyInfoProvider).newSigner(); 
DataObjectDesc obj1 = new DataObjectReference(
      "http://uri.etsi.org/01903#SignedProperties"); 
DataObjectDesc obj2 = new DataObjectReference(
      "#KeyInfo"); 
SignedDataObjects dataObjs = new SignedDataObjects() 
      .withSignedDataObject(obj1).withSignedDataObject(obj2); 
signer.sign(dataObjs, elemToSign); 
outputDocument(doc, "document.signed.epes.xml"); 

Что я должен сделать, чтобы подписать KeyInfo?

ответ

2

В настоящее время невозможно подписать целого элемента KeyInfo. Однако вы можете установить xades4j для подписи элемента X509Certificate в пределах KeyInfo, который содержит сертификат подписи. Это настроено с использованием BasicSignatureOptionsProvider.

+0

Также обратите внимание, что вам не нужно вручную добавлять ссылку на элемент с положенными свойствами. Вся цель библиотеки - отвлечь вас от этого материала. Дополнительную информацию см. В вики проекта на GitHub. – lgoncalves

Смежные вопросы