ESYAE-imza Kütüphaneleri

User Tools

Site Tools


esya:cades:imza-tipleri

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


Farklı İmza Tiplerinin Oluşturulması

API tarafından desteklenen imza tiplerinden çok kullanılanları hakkında kısa açıklamaları burada bulabilirsiniz. Hangi imzanın size uygun olduğuna karar vermek için “E- imza Profilleri” dökümanını inceleyebilirsiniz. İmza tipleri hakkında daha geniş bilgi için ise “ETSI TS 101 733” dökümanına bakınız.

BES

BES imza, en basit imza türüdür. BES, imza sadece o kişinin imzayı attığını garanti eder. İmza zamanıda belli olmadığından ancak sertifika geçerli iken imza doğrulanabilir. Sertifika iptal edildiğinde veya sertifika süresi dolduğunda imza doğrulanamaz. BES imza içersine zaman bilgisi eklenebilir, eklenen zamanın herhangi bir hukuki yükümlülüğü, kesinliği yoktur. Beyan edilen zaman şeklinde kullanılabilir.

BaseSignedData bs = new BaseSignedData();		
bs.addContent(new SignableByteArray("test".getBytes())); 
			
//Since SigningTime attribute is optional,add it to optional attributes list
List<IAttribute> optionalAttributes = new ArrayList<IAttribute>();
optionalAttributes.add(new SigningTimeAttr(Calendar.getInstance()));
			
HashMap<String, Object> params = new HashMap<String, Object>();
params.put(EParameters.P_CERT_VALIDATION_POLICY, VALIDATION_POLICY);
				
bs.addSigner(ESignatureType.TYPE_BES, cert, signer, optionalAttributes, params);

BaseSignedData bs = new BaseSignedData();
bs.addContent(new SignableByteArray(Encoding.ASCII.GetBytes("test")));

//Since SigningTime attribute is optional,add it to optional attributes list
List<IAttribute> optionalAttributes = new List<IAttribute>();
optionalAttributes.Add(new SigningTimeAttr(DateTime.UtcNow));

Dictionary<String, Object> params_ = new Dictionary<String, Object>();
params_[EParameters.P_CERT_VALIDATION_POLICY] = VALIDATION_POLICY;

bs.addSigner(ESignatureType.TYPE_BES, cert, signer, optionalAttributes, params_);

İmzanın beyan edilen zamanını almak için aşağıdaki örnek kod kullanılabilir.

Java byte[] input = AsnIO.dosyadanOKU(BESwithSIGNING_TIME); BaseSignedData bs = new BaseSignedData(input); List<EAttribute> attrs =

                bs.getSignerList().get(0).getSignedAttribute(SigningTimeAttr.OID);

Calendar time = SigningTimeAttr.toTime(attrs.get(0)); System.out.println(time.getTime().toString());

C# byte[] input = AsnIO.dosyadanOKU(BESwithSIGNING_TIME); BaseSignedData bs = new BaseSignedData(input); List<EAttribute> attrs = bs.getSignerList()[0].

                          getSignedAttribute(AttributeOIDs.id_signingTime);

DateTime? time = SigningTimeAttr.toTime(attrs[0]); Console.WriteLine(time.Value.ToString());

Beyan edilen zamanın kullanımında oluşabilecek kötü senaryo Şekil 17’daki gibidir. İmza atıldığı sırada imzacı sertifikası iptal edilmiştir; yalnız kullanıcı imza zamanı olarak daha önceki bir zamanı beyan etmiştir. Beyan edilen zamana güvenildiği durumda geçersiz olan bu imza doğrulanacaktır.

Şekil 17 Yanlış Beyan İle Kötü Kullanım Senaryosu

esya/cades/imza-tipleri.1374488144.txt.gz · Son değiştirilme: 2013/07/22 10:15 Değiştiren: Beytullah Yiğit