ESYAE-imza Kütüphaneleri

User Tools

Site Tools


esya:cades:imza-ozellikleri

Zorunlu Olmayan Özelliklerin Eklenmesi

İmzaya adres bilgisi, imza zamanı bilgisi gibi opsiyonel bilgileri özellik olarak ekleyebilirsiniz. API'de tanımlı olan, kullanabileceğiniz özellikler;

SigningTimeAttr Beyan edilen imza zamanını içerir. Ancak beyan edilen bu tarih güvenilir bir tarih olmadığından, imzanın bu tarihte atıldığını garanti etmez, bilgi amaçlı kullanılabilir.
SignerLocationAttr İmzacının adresi hakkında bilgiler içerir. İmzacının ülkesi, şehri ve posta adresi belirtilebilir. Bilgi amaçlı olduğundan bu bilgilerden bazılarının değeri null olabilir.
CommitmentTypeIndicationAttr İmza amacını belirtmek için kullanılabilir. İ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.

İmza atma sırasında imzaya eklenmek istenen özellikler bir listeye konularak kütüphaneye verilir. Eklenecek alanın değeri, alanın yaratılması sırasında kurucu fonksiyona verilir. Aşağıdaki örnekteki gibi imzaya eklenirler ve imzadan okunurlar.

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

esya/cades/imza-ozellikleri.txt · Son değiştirilme: 2013/08/28 05:26 Değiştiren: Beytullah Yiğit