ESYAE-imza Kütüphaneleri

User Tools

Site Tools


en:esya:cades:imza-ozellikleri

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


Optional Attributes

You can add optional information such as signing time, adress as attributes into the signature. The list of attributes deifned in the API is as follows;

SigningTimeAttr Contains stated signing time. It does not guarantee the exact signing time and is only used for informational purposes.
SignerLocationAttr Includes information about signer's address. Country, city and postal code might be included. Since it is only for informational purposes, some of its fields can be null.
CommitmentTypeIndicationAttr Specifies the intention of the signature. İmzalanan verinin tarafınızdan oluşturulmuş olduğunu, sadece imzanın içeriğini onayladığınızı vs. belirtebilirsiniz. CommitmentType sınıfında tanımlanmış aşağıdaki değerler verilebilir.
RECEIPT İmza sahibinin imzalı belgeyi aldığını (bir yerden geliyor ise) belirtmek için kullanılır.
SENDER İmzalı veriyi gönderenin (imzalı veri bir yere gönderiliyor ise) veriyi gönderen kişi olduğunu belirtmek için kullanılır. Yani imza sahibinin gönderilen verinin içeriğini onayladığı anlamına gelmez sadece bunu ben gönderdim demektir.
APPROVAL İmza sahibinin belgenin içeriğini onayladığını belirtmek için kullanılır.
APPROVAL, DELIVERY Bir mesaj gönderildiğinde, bu mesajın karşı tarafa iletildiğini belirtmek için kullanılır. Bu tür imzalar genelde güvenilir servis sağlayıcılar (TSP - Trusted Service Provider) tarafından kullanılır.
CREATION İmza sahibinin belgeyi oluşturan kişi olduğunu belirtmek için kullanılır. Belge içeriğini onayladığı veya gönderdiği anlamına gelmez.
ORIGIN İmza sahibinin belgeyi oluşturduğunu, içeriğini onayladığını ve gönderenin de kendisi olduğunu belirtmek için kullanılır.
ContentIdentifierAttr İmzalanan içeriği tanımlamak için kullanılır. Özellikle ayrık imzada, imzalanan dökümanı imza ile eşleştrimek için kullanılabilir. byte array olacak şekilde herhangi bir değer olabilir.
ContentHintsAttr İmzalanan içerik hakkında alıcıya fikir vermek amacıyla kullanılır.
SignerAttributesAttr İmzalayan kişi hakkında bilgiler içerir. İmzalayanın iddia ettiği özellikleri veya imzalayanın yetki sertifikasını barındırabilir.

When creating signatures, the attributes to be added into the signature is given to the API function as a list. They are added into the signature as follows;

List<IAttribute> optionalAttributes = new ArrayList<IAttribute>();
optionalAttributes.add(new SigningTimeAttr(Calendar.getInstance()));
optionalAttributes.add(new SignerLocationAttr("TURKEY", "KOCAELİ", new String[]{"TUBITAK UEKAE","GEBZE"}));
optionalAttributes.add(new CommitmentTypeIndicationAttr(CommitmentType.CREATION));
optionalAttributes.add(new ContentIdentifierAttr("PL123456789".getBytes("ASCII")));
				
bs.addSigner(ESignatureType.TYPE_BES, cert , signer, optionalAttributes, params);
						
SmartCardManager.getInstance().logout();
		 
//reading Attributes
BaseSignedData bs2 = new BaseSignedData(bs.getEncoded());
List<EAttribute> attrs ;
Signer aSigner = bs2.getSignerList().get(0);

attrs = aSigner.getAttribute(SigningTimeAttr.OID);
Calendar st = SigningTimeAttr.toTime(attrs.get(0));
System.out.println("Signing time: " + st.getTime());

attrs = aSigner.getAttribute(SignerLocationAttr.OID);
ESignerLocation sl = SignerLocationAttr.toSignerLocation(attrs.get(0));
StringBuilder sb = new StringBuilder();
for (String address : sl.getPostalAddress()) 
sb.append(" " + address);
System.out.println("\nCountry: " + sl.getCountry() +
		"\nCity: " + sl.getLocalityName() +"\nAdress: "	+ sb);
attrs = aSigner.getAttribute(ContentIdentifierAttr.OID);
byte [] ci = ContentIdentifierAttr.toIdentifier(attrs.get(0));
System.out.println("\n" + Arrays.toString(ci));

attrs = aSigner.getAttribute(CommitmentTypeIndicationAttr.OID);
CommitmentType ct = CommitmentTypeIndicationAttr.toCommitmentType(attrs.get(0));
System.out.println("\n" + ct);
List<IAttribute> optionalAttributes = new List<IAttribute>();
optionalAttributes.Add(new SigningTimeAttr(DateTime.UtcNow));
optionalAttributes.Add(new SignerLocationAttr("TURKEY", "KOCAELI", 
new String[] { "TUBITAK UEKAE", "GEBZE" }));
optionalAttributes.Add(new CommitmentTypeIndicationAttr(CommitmentType.CREATION));
optionalAttributes.Add(new ContentIdentifierAttr(
ASCIIEncoding.ASCII.GetBytes("PL123456789")));

bs.addSigner(ESignatureType.TYPE_BES, cert, signer, optionalAttributes, params_);
		
SmartCardManager.getInstance().logout();
		 
//reading Attributes
BaseSignedData bs2 = new BaseSignedData(bs.getEncoded());
List<EAttribute> attrs;
Signer aSigner = bs2.getSignerList()[0];

attrs = aSigner.getAttribute(SigningTimeAttr.OID);
DateTime? st = SigningTimeAttr.toTime(attrs[0]);
Console.WriteLine("Signing time: " + st.Value.ToLocalTime().ToString());

attrs = aSigner.getAttribute(SignerLocationAttr.OID);
ESignerLocation sl = SignerLocationAttr.toSignerLocation(attrs[0]);
StringBuilder sb = new StringBuilder();
foreach (String address in sl.getPostalAddress())
     sb.Append(" " + address);

Console.WriteLine("\nCountry: " + sl.getCountry() +
"\nCity: " + sl.getLocalityName() + "\nAdress: " + sb);

attrs = aSigner.getAttribute(ContentIdentifierAttr.OID);
byte[] ci = ContentIdentifierAttr.toIdentifier(attrs[0]);
Console.WriteLine("\n" + BitConverter.ToString(ci));

attrs = aSigner.getAttribute(CommitmentTypeIndicationAttr.OID);
CommitmentType ct = CommitmentTypeIndicationAttr.toCommitmentType(attrs[0]);
Console.WriteLine("\n" + ct);

en/esya/cades/imza-ozellikleri.1377783778.txt.gz · Son değiştirilme: 2013/08/29 13:42 Değiştiren: Dindar Öz