Как я могу добавить 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
зарегистрирован на подписывающем профиле, который вы используете.