XADES-BES와 스마트 카드를 사용하여 XML 문서에 서명하려고합니다. 필자의 필요에 따라 SignerBES.java 클래스를 약간 변경했는데 서명 작성이 잘되었습니다! UnsignedProperties를 어떻게 추가합니까?
내 질문
: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());
내가 추가하려고 :
<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이다 : 나는 이런 식으로 뭔가를 얻을 수 UnsignedProperties을 추가 할 수있는 방법 그것 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);
}}
Luis. 저는 스마트 카드로 서명하는 초보자입니다. 다음과 같이 추가 할 수 있습니다. signaturePropsCol.addOtherSignatureProperty (otherUnsignedProp) 추가 할 UnsignedProperties가 여러 개 있으며 고급 상태입니다 (명확하지 않음)? 수동으로 블록을 추가하면 서명 검사가 유효하지 않게됩니까? . –
내가 응답에 대해 말했듯이 xades4j를 사용하면 목록과 같이 추가하지 않아도됩니다. 특정 양식에 대한 서명되지 않은 서명 속성은 해당 서명 프로파일을 사용할 때 자동으로 추가됩니다. 다른 서명되지 않은 속성은 사용자 지정 SignaturePropertiesProvider를 통해 추가 할 수 있습니다. – lgoncalves