ESYAE-imza Kütüphaneleri

User Tools

Site Tools


en:esya:xades:kod-imza-profilleri

Bu, dökümanın eski bir sürümüdür!


Signature Profiles

For the detailed information about signature profiles see http://www.tk.gov.tr/bilgi_teknolojileri/elektronik_imza/dosyalar/Elektronik_Imza_Kullanim_Profilleri_Rehberi.pdf which is also located in config/profiller.

The sample codes are in the package tr.gov.tubitak.uekae.esya.api.xades.example.profiles.

P1- Instantenous - Signature Profile

It used in the applications where the security requirement is low and onl an instantenous validation is needed. The signature time is accepted as the time when the signed document is received by the verifier. This profile shoul be preferred when no future verification of the signature is required. The sample code is in P1.

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

// add resolver to resolve policies
context.addExternalResolver(POLICY_RESOLVER);

// 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()));

// set time now
signature.setSigningTime(Calendar.getInstance());

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

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

This profile does not refer to any defined signature policy.

P2 -Short-term- Signature Profile

Kısa süreli kullanım ömrü olan imzalarda, ÇiSDuP erişimi bulunmayan ortamlarda tercih edilmelidir. ÇisDuP erişimi olan ortamlarda P4 profili kullanılmalıdır. Kodu P2 sınıfında inceleyebilirsiniz.

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

// add resolver to resolve policies
context.addExternalResolver(POLICY_RESOLVER);

// 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()));

// set time now
signature.setSigningTime(Calendar.getInstance());

// set policy info defined and required by profile
signature.setPolicyIdentifier(OID_POLICY_P2,
		"Kısa Dönemli ve SİL Kontrollü Güvenli Elektronik İmza Politikası",
		"http://www.tk.gov.tr/bilgi_teknolojileri/elektronik_imza/dosyalar/Elektronik_Imza_Kullanim_Profilleri_Rehberi.pdf"
);

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

// upgrade to T
signature.upgrade(SignatureType.ES_T);

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

P3 -Uzun Süreli - İmza Profili

ÇiSDuP erişimi olmayan ortamlarda kullanılabilir. Aksi durumda P3 profilinin, P4 profiline tercih edilebilecek herhangi bir avantajı yoktur, SİL boyutları ve imzadan sonra SİL yayınlanmasını bekleme gerekliliği gibi sebeplerle mecbur kalmadıkça tercih edilmemelidir. Örnek kod P3 sınıfındadır.

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

// add resolver to resolve policies
context.addExternalResolver(POLICY_RESOLVER);

// 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()));

// set time now
signature.setSigningTime(Calendar.getInstance());

// set policy info defined and required by profile
signature.setPolicyIdentifier(OID_POLICY_P3,
		"Uzun Dönemli ve SİL Kontrollü Güvenli Elektronik İmza Politikası",
		"http://www.tk.gov.tr/bilgi_teknolojileri/elektronik_imza/dosyalar/Elektronik_Imza_Kullanim_Profilleri_Rehberi.pdf"
);

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

// upgrade to T
signature.upgrade(SignatureType.ES_T);

signature.write(new FileOutputStream(BASE_DIR + "p3_temp.xml"));

İkinci kod yeni bir SİL yayınlandıktan sonra çalıştırılmalıdır.

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

// set policy such that it only works with CRL
CertValidationPolicies policies = new CertValidationPolicies();
policies.register(null, PolicyReader.readValidationPolicy(POLICY_FILE_CRL));

context.getConfig().getValidationConfig().setCertValidationPolicies(policies);

// add resolver to resolve policies
context.addExternalResolver(POLICY_RESOLVER);

// read temporary signature
XMLSignature signature = XMLSignature.parse(new FileDocument(new File(BASE_DIR + "p3_temp.xml")),context);

// upgrade to XL
signature.upgrade(SignatureType.ES_XL);

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

P4 - Uzun Süreli- İmza Profili

En güvenilir, uzun ömürlü ve sorunsuz imza profilidir. Doğrulama verisi imza içinde yer alır. Örnek kod P4 sınıfındadır.

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

// add resolver to resolve policies
context.addExternalResolver(POLICY_RESOLVER);

// 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()));

// set time now
signature.setSigningTime(Calendar.getInstance());

// set policy info defined and required by profile
signature.setPolicyIdentifier(OID_POLICY_P4,
		"Uzun Dönemli ve ÇİSDuP Kontrollü Güvenli Elektronik İmza Politikası",
		"http://www.tk.gov.tr/bilgi_teknolojileri/elektronik_imza/dosyalar/Elektronik_Imza_Kullanim_Profilleri_Rehberi.pdf"
);

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

// upgrade to XL
signature.upgrade(SignatureType.ES_XL);

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

Arşiv İmza

Uzun süreli imza içindeki son zaman damgasını imzalayan sertifikanın ömrü dolmadan önce, yada imza içinde kullanılan algoritmalar güvenilirlik derecelerini yitirdikçe imza üzerine arşiv zaman damgası eklenmelidir. Arşiv formatına erişmek için X-Long(Profil 4) imza üzerinde

signature.upgradeToXAdES_A();

metodu; halihazırda arşiv tipindeki imzaya her arşiv zaman damgası eklenmek istendiğinde ise

signature.addArchiveTimeStamp();

metodu kullanılır.

en/esya/xades/kod-imza-profilleri.1378881816.txt.gz · Son değiştirilme: 2013/09/11 06:43 Değiştiren: Dindar Öz