Ich versuche ein XML-Dokument mit XADES-BES und der Smartcard zu signieren. Ich habe einige Änderungen in der Klasse SignerBES.java nach meinen Bedürfnissen vorgenommen und die Signaturerstellung funktioniert gut!Wie kann ich UnsignedProperties hinzufügen?
Meine Frage: Wie kann ich UnsignedProperties hinzufügen, so etwas zu bekommen:
<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>
dies ein Code-Schnipsel SignerBES.java ist:
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());
ich hinzufügen wollte es bei SignerBES.java und DefaultSignaturePropertiesProvider.java, aber ich weiß nicht, wie ich es hinzufügen kann:
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);
}}
Danke Luis. Ich bin ein Anfänger für die Unterzeichnung mit SmartCard. Es ist möglich, etwas wie folgt hinzuzufügen: signaturePropsCol.addOtherSignatureProperty (otherUnsignedProp) Da mehrere UnsignedProperties hinzugefügt werden müssen und sie sind fortgeschritten (nicht klar für mich)? Wird die Signaturprüfung ungültig, wenn ich den Block manuell hinzufüge? . –
Wie ich auf die Antwort sagte, fügen Sie xades4j nicht wie eine Liste hinzu. Nicht signierte Signatureigenschaften für bestimmte Formulare werden automatisch hinzugefügt, wenn das entsprechende Signaturprofil verwendet wird. Andere unsignierte Eigenschaften können über einen benutzerdefinierten SignaturePropertiesProvider hinzugefügt werden – lgoncalves