ESYAE-imza Kütüphaneleri

User Tools

Site Tools


esya:xades:kod-imza-ozellikleri

XAdES İmza Özellikleri

XAdES formatındaki imzalara standartlarda belirtilen imza özellikleri eklenebilir.

Kodları tr.gov.tubitak.uekae.esya.api.xades.example.attributes paketinin altında bulabilirsiniz.

İmza Zamanı

İmzacı tarafından belirtilen imza zamanını imzaya ekler.

SigningTimeAttribute sınıfına göz atabilirsiniz.

// create context with working directory
Context context = createContext();

// create signature according to context,
// with default type (XADES_BES)
XMLSignature signature = new XMLSignature(context);

// add document as reference, but do not embed it
// into the signature (embed=false)
signature.addDocument("./sample.txt", "text/plain", false);

signature.getSignedInfo().setSignatureMethod(SignatureMethod.RSA_SHA256);

// false-true gets non-qualified certificates while true-false gets qualified ones
X509Certificate cert = JSmartCardManager.getInstance().getSignatureCertificate(true, false);

// add certificate to show who signed the document
signature.addKeyInfo(new ECertificate(cert.getEncoded()));

// add signing time
signature.getQualifyingProperties().getSignedSignatureProperties().setSigningTime(getTime());

// now sign it by using smart card
signature.sign(JSmartCardManager.getInstance().getSigner(PIN, cert));

signature.write(new FileOutputStream(BASE_DIR + SIGNATURE_FILENAME));

İmza Üretim Yeri

İmzanın üretildiği yeri belirtmek için kullanılır.

SignatureProductionPlaceAttribute sınıfına göz atabilirsiniz.

// add signature production place
signature.getQualifyingProperties().getSignedSignatureProperties().setSignatureProductionPlace(
		new SignatureProductionPlace(context, "Istanbul", "Marmara", "34470", "Turkey"));

İmzacı Rolü

İmza sahibi hakkında bilgi vermek için kullanılır.

SignerRoleAttribute sınıfına göz atabilirsiniz.

// add signer role
signature.getQualifyingProperties().getSignedSignatureProperties().setSignerRole(
        new SignerRole(context, new ClaimedRole[]{new ClaimedRole(context, "Manager")}));

Döküman Tipi

İmzalanan dökümanın tipi hakkında bilgi vermek için kullanılır.

CommitmentTypeIndicationAttribute sınıfına göz atılabilir.

// create context with working directory
Context context = createContext();

// create signature according to context,
// with default type (XADES_BES)
XMLSignature signature = new XMLSignature(context);

// add document
String ref1 = "#"+signature.addDocument("./sample.txt", "text/plain", true);
String objId2 = signature.addPlainObject("Test data 1.", "text/plain", null);
String ref2 = "#"+signature.addDocument("#"+objId2, null, false);

signature.getSignedInfo().setSignatureMethod(SignatureMethod.RSA_SHA256);

// false-true gets non-qualified certificates while true-false gets qualified ones
X509Certificate cert = JSmartCardManager.getInstance().getSignatureCertificate(true, false);

// add certificate to show who signed the document
signature.addKeyInfo(new ECertificate(cert.getEncoded()));

// add commitment type indication
signature.getQualifyingProperties().getSignedProperties().createOrGetSignedDataObjectProperties().
		addCommitmentTypeIndication(createTestCTI(context,ref1,ref2));

// now sign it by using smart card
signature.sign(JSmartCardManager.getInstance().getSigner(PIN, cert));

signature.write(new FileOutputStream(BASE_DIR + SIGNATURE_FILENAME));

Bütün Dökümanlar İçin Zaman Damgası

Bütün dökümanlara için zaman damgası alınması için kullanılır.

AllDataObjectsTimeStampAttribute sınıfına göz atabilirsiniz.

// add all data objects timestamp
signature.getQualifyingProperties().getSignedProperties().createOrGetSignedDataObjectProperties().
        addAllDataObjectsTimeStamp(new AllDataObjectsTimeStamp(context,signature));

Dökümanlar İçin Ayrı Ayrı Zaman Damgası

Dökümanlara ayrı zaman damgaları almak için kullanılır.

IndividualDataObjectTimeStampAttribute sınıfına göz atabilirsiniz.

// create context with working directory
Context context = createContext();

// create signature according to context,
// with default type (XADES_BES)
XMLSignature signature = new XMLSignature(context);

// add document into the signature and get the reference
String ref1 = "#" + signature.addDocument("./sample.txt", "text/plain", true);

// add another object
String objId2 = signature.addPlainObject("Test Data 1", "text/plain", null);
String ref2 = "#" + signature.addDocument("#"+objId2, null, false);

signature.getSignedInfo().setSignatureMethod(SignatureMethod.RSA_SHA256);

// false-true gets non-qualified certificates while true-false gets qualified ones
X509Certificate cert = JSmartCardManager.getInstance().getSignatureCertificate(true, false);

// add certificate to show who signed the document
signature.addKeyInfo(new ECertificate(cert.getEncoded()));

// create new individual data objects timestamp structure
IndividualDataObjectsTimeStamp timestamp = new IndividualDataObjectsTimeStamp(context);

// add objects to timestamp structure
timestamp.addInclude(new Include(context, ref1, Boolean.TRUE));
timestamp.addInclude(new Include(context, ref2, Boolean.TRUE));

// get encapsulated timestamp to individual data objects timestamp
timestamp.addEncapsulatedTimeStamp(signature);

// add individual data objects timestamp to signature
signature.getQualifyingProperties().getSignedProperties().createOrGetSignedDataObjectProperties().
		addIndividualDataObjectsTimeStamp(timestamp);

// optional - add timestamp validation data
signature.addTimeStampValidationData(timestamp, Calendar.getInstance());

// now sign it by using smart card
signature.sign(JSmartCardManager.getInstance().getSigner(PIN, cert));

signature.write(new FileOutputStream(BASE_DIR + SIGNATURE_FILENAME));

esya/xades/kod-imza-ozellikleri.txt · Son değiştirilme: 2013/08/05 11:28 Değiştiren: Süleyman Uslu