2017-10-30 6 views
0

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); 
}} 

Antwort

0

Ich glaube nicht, dass ich komplett verstehe, was Sie versuchen, da es scheint, dass Sie den lib-Quellcode durcheinander bringen. Wie auch immer, check out this page on the project docs.

Viele der unsignierten Qualifizierungseigenschaften werden automatisch von xades4j hinzugefügt, wenn Sie eines der Signaturprofile verwenden (z. B. wenn Sie XAdesCSigningProfile verwenden, CompleteCertificateRefs/CompleteRevocationRefs werden hinzugefügt).

Andere Eigenschaften sind Teil von erweiterten Formularen und können nur während der Validierung einer vorhandenen Signatur hinzugefügt werden. Weitere Informationen finden Sie unter this wiki page und [diese javadocs-Seite] (http://luisgoncalves.github.io/xades4j/javadocs/1.4.0/reference/xades4j/verification/XadesVerifier.html#verify(org.w3c.dom.Element, xades4j.verification.SignatureSpecificVerificationOptions, xades4j.production.XadesSignatureFormatExtender, xades4j.verification.XAdESForm)).

Schließlich sind einige Eigenschaften (z Gegenzeichnung) sind nicht an eine bestimmte Form gebunden, und kann zu jeder Signatur hinzugefügt werden mit einem benutzerdefinierten SignaturePropertiesProvider, auf dem Unterzeichnung Profil registriert, die Sie verwenden.

+0

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? . –

+0

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

Verwandte Themen