====== Signature Types ====== The sample codes for creating different types of signatures stated in the standarts are listed below. See the section [[en:esya:eimza:tipler|Signature Types]] for the information about signature types The sample codes are in the package ''tr.gov.tubitak.uekae.esya.api.xades.example.formats''. ===== BES Signature ===== ''BES'' signature creation is as follows: // 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())); // now sign it by using smart card signature.sign(JSmartCardManager.getInstance().getSigner(PIN, cert)); signature.write(new FileOutputStream(BASE_DIR + SIGNATURE_FILENAME)); ===== T Signature ===== ''T'' signature creation is as follows: // 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())); // 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)); ===== C Signature ===== ''C'' signature creation is as follows: The difference is the upgrade line, which is ''ES_C'' in this case. // upgrade to C signature.upgrade(SignatureType.ES_C); ===== X-Type1 Signature ===== ''X1'' signature creation is as follows: The difference is the upgrade line, which is ''ES_X_Type1'' in this case. // upgrade to X1 signature.upgrade(SignatureType.ES_X_Type1); ===== X-Type2 Signature ===== ''X2'' signature creation is as follows. The difference is the upgrade line, which is ''ES_X_Type2'' in this case. // upgrade to X2 signature.upgrade(SignatureType.ES_X_Type2); ===== X-Long Signature ===== ''XL'' signature creation is as follows: The difference is the upgrade line, which is ''ES_XL'' in this case. // upgrade to XL signature.upgrade(SignatureType.ES_XL); ===== Archival Signature ===== ''A'' signature creation is as follows: The difference is the upgrade line, which is ''ES_A'' in this case. // upgrade to A signature.upgrade(SignatureType.ES_A);