====== XAdES İmza Geliştirmeleri ======
Atılmış bir imzanın güncellenmesi suretiyle daha gelişmiş bir imza yapısına çevirilmesi işlemidir.
Kodları ''tr.gov.tubitak.uekae.esya.api.xades.example.upgrades'' klasörünün altında bulabilirsiniz.
===== Genel İmza Geliştirme =====
Mevcut imzanın okunmasının ardından geliştirme fonksiyonunun geliştirilmek istenen imza tipi parametresi ile çağırılması yeterlidir. Hangi tip imzayı geliştirecekseniz onun klasörüne, hangi tip imzaya geliştirecekseniz onun sınıfına bakabilirsiniz. Mesela BES tipi bir imzayı T tipine geliştirmek isterseniz örnek kodu ''bes.UpgradeToT'' sınıfında bulabilirsiniz.
// create context with working directory
Context context = createContext();
// read signature to be upgraded
XMLSignature signature = XMLSignature.parse(new FileDocument(new File(BASE_DIR + "bes.xml")),context);
// upgrade to T
signature.upgrade(SignatureType.ES_T);
signature.write(new FileOutputStream(BASE_DIR + SIGNATURE_FILENAME));
===== Zarflanmış İmzanın Geliştirmesi =====
Zarflanmış imzalarda ise dökümanın okunması, içinden imzanın alınması, imzanın geliştirilmesi ve tekrar bütün dökümanın yazılması gerekir. Örnek kodu ''enveloped.UpgradeToT'' içinde bulabilirsiniz.
Bu yapıdaki imzaların standart bir XML yapıları olmadığı için okunup içindeki imzanın alınması işleminin kullanıcı tarafından yapılması gereklidir. Örnek yapıdaki imzanın okunduğu fonksiyonu enveloped.UpgradeToT içinde bulabilirsiniz.
// create context with working directory
Context context = createContext();
// parse the previously created enveloped signature
org.w3c.dom.Document document = parseDoc(Enveloped.SIGNATURE_FILENAME, context);
// get the signature in DOM document
XMLSignature signature = readSignature(document, context);
// upgrade the signature to type T
signature.upgrade(SignatureType.ES_T);
// writing enveloped XML to the file
Source source = new DOMSource(document);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(source, new StreamResult(new FileOutputStream(BASE_DIR + SIGNATURE_FILENAME)));
===== Paralel İmza Geliştirmesi =====
Paralel imzaların geliştirmesinde ise geliştirilecek imzalar seçilip onlar üzerinden işlem yapılması gerekir. Paralel imzaların da standart bir XML yapısı olmadığı için ayıklama işlemi kullanıcı tarafından yapılmalıdır. Örnek kodu ''parallel.UpgradeToT'' içinde bulabilirsiniz.
// create context with working directory
Context context = createContext();
// parse the previously created enveloped signature
org.w3c.dom.Document document = parseDoc(ParallelDetached.SIGNATURE_FILENAME, context);
// get and upgrade the signature 1 in DOM document
XMLSignature signature1 = readSignature(document, context, 0);
signature1.upgrade(SignatureType.ES_T);
// get and upgrade the signature 2 in DOM document
XMLSignature signature2 = readSignature(document, context, 1);
signature2.upgrade(SignatureType.ES_T);
// writing enveloped XML to the file
Source source = new DOMSource(document);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(source, new StreamResult(new FileOutputStream(BASE_DIR + SIGNATURE_FILENAME)));