Как я могу добавить UnsignedProperties?

Я пытаюсь подписать документ XML, используя XADES-BES и смарт-карту. Я сделал некоторые изменения в классе SignerBES.java в соответствии с моими потребностями, и создание подписи работает хорошо!

Мой вопрос: как я могу добавить UnsignedProperties, чтобы получить что-то вроде этого:

                <SignerRole>
          <ClaimedRoles>
            <ClaimedRole>EST</ClaimedRole>
          </ClaimedRoles>
        </SignerRole>
      </SignedSignatureProperties>
      <SignedDataObjectProperties>
        <DataObjectFormat ObjectReference="#sigId">
          <Description>des</Description>
          <MimeType>text/xml</MimeType>
          <Encoding>base64</Encoding>
        </DataObjectFormat>
        <CommitmentTypeIndication>
          <CommitmentTypeId>
            <Identifier/>
          </CommitmentTypeId>
          <AllSignedDataObjects/>
          <CommitmentTypeQualifiers>
            <CommitmentTypeQualifier>commitment</CommitmentTypeQualifier>
          </CommitmentTypeQualifiers>
        </CommitmentTypeIndication>
      </SignedDataObjectProperties>
    </SignedProperties>
    <UnsignedProperties>
      <UnsignedSignatureProperties>
        <SignatureTimeStamp>
          <EncapsulatedTimeStamp>noTimStampToken</EncapsulatedTimeStamp>
        </SignatureTimeStamp>
        <CounterSignature/>
        <CompleteCertificateRefs/>
        <CompleteRevocationRefs/>
        <SigAndRefsTimeStamp/>
        <RefsOnlyTimeStamp/>
        <CertificatesValues/>
        <RevocationValues/>
        <ArchiveTimeStamp/>
      </UnsignedSignatureProperties>
    </UnsignedProperties>
  </QualifyingProperties>
</ds:Object>

это фрагмент кода SignerBES.java:

    Collection<SignedSignatureProperty> fsssp = new ArrayList<SignedSignatureProperty>(2);
Collection<UnsignedSignatureProperty> fsusp = new ArrayList<UnsignedSignatureProperty>(2);


getFormatSpecificSignatureProperties(fsssp, fsusp, signingCertificateChain);
// Gather all the signature and data objects properties.
QualifyingProperties qualifProps = qualifPropsProcessor.getQualifyingProperties(
        signedDataObjects, fsssp, fsusp);

// LOG
System.out.println("fsusp"+fsusp.size());

Я пытался добавить его в SignerBES.java и DefaultSignaturePropertiesProvider.java, но я не знаю, как его добавить:

    public class DefaultSignaturePropertiesProvider implements SignaturePropertiesProvider  
{   
@Override
public void provideProperties(SignaturePropertiesCollector signaturePropsCol)
{
signaturePropsCol.setSigningTime(new SigningTimeProperty());
signaturePropsCol.setSignerRole(new SignerRoleProperty("EST"));

// UnsignedProperty
// OtherUnsignedSignatureProperty otherUnsignedProp=null;    
// signaturePropsCol.addOtherSignatureProperty(otherUnsignedProp);
}}

1 ответ

Решение

Я не думаю, что полностью понимаю, что вы пытаетесь, так как кажется, что вы возитесь с исходным кодом lib. В любом случае, проверьте эту страницу в документации проекта.

Многие из неподписанных квалификационных свойств автоматически добавляются xades4j при использовании одного из профилей подписи (например, если вы используете XAdesCSigningProfile, CompleteCertificateRefs/CompleteRevocationRefs добавлены).

Другие свойства являются частью расширенных форм и могут быть добавлены только во время проверки существующей подписи. Обратитесь к этой вики-странице и [этой странице javadocs] ( http://luisgoncalves.github.io/xades4j/javadocs/1.4.0/reference/xades4j/verification/XadesVerifier.html, xades4j.verification.SignatureSpecificVerificationOptions, xades4j.production.XadesSignatureFormatExtender, xades4j.verification.XAdESForm)) для получения дополнительной информации.

Наконец, некоторые свойства (например, CounterSignature) не привязаны к какой-либо конкретной форме и могут быть добавлены к любой подписи с помощью пользовательского SignaturePropertiesProvider зарегистрирован на подписывающем профиле, который вы используете.

Другие вопросы по тегам