ESYAE-imza Kütüphaneleri

User Tools

Site Tools


en:esya:android:android

Farklar

Bu sayfanın seçili sürümü ile mevcut sürümü arasındaki farkları gösterir.

Karşılaştırma görünümüne bağlantı

en:esya:android:android [2013/07/24 06:48]
Dindar Öz created
en:esya:android:android [2013/09/12 11:19] (mevcut)
Dindar Öz
Satır 1: Satır 1:
-=====  ANDROID'DE IMZA ATMA =====+=====  ​SIGNATURE ON ANDROID =====
  
-Android sisteminde temel imza formatında ​(BES) imza oluşturulabilmektedir. Mevcut sürümde AKİS marka kart ve ACS marka kart okuyucular ile imza oluşturulabilmektedir. İmzalama sırasında kart okuyucunun android kütüphanesi kullanılmaktadır. Mevcut sürümde sadece ACS kart okuyucunun android kütüphanesi kullanılmaktadır. ACS android kütüphanesinin desteklediği kart okuyucular ​ http://​android.acs.com.hk adresinden görülebilirDiğer kart okuyucu markalarının android kütüphaneleri yayınlanınca onlar için de destek sağlanacaktır.+Basic Electroinc Signature ​(BES) can be created on Android platformCurrent version only supports AKIS smartcards
  
-Android ​sisteminde imza oluşturulurken kart ile iletişim apdu komutları üzerinden sağlanmaktadır.İmzalama işlemleri için APDUSmartCard ​sınıfı uygun parametrelerle oluşturulmakta ve getSigner() ​metodunda alınan BaseSigner nesnesi imzalamada kullanılmaktadırİmzalama işlemlerinde kullanılacak olan APDUSmartCard ​sınıfı oluşturulurkenuygun TerminalHandler ​sınıfı oluşturulmalı ve kullanılmalıdırMevcut sürümde ​ACSTerminalHandler ​sınfı oluşturulabilmektedirKartla yapılan işlemlerdeandroid sistemi ilk kullanımda,​ karta erişmek için kullanıcıdan ​usb erişim onayı istemektedirBu onay ekranının görülebilmesi ve düzgün çalışması amacıyla ACSTerminalHandler sınıfına usb erişim hakları için oluşturulmuş bir android ​sınıfı olan PendingIntent ​nesnesi verilmelidirAndroid sistemindeki benzer akışlardan dolayı kart işlemleri doğrudan ana gui sınıfında yapılmamalı, ​AsyncTask ​sınıfından türetilen bir sınıf içerisinde işlemler yapılmalıdır+While creating signature on Android, APDU commands are used in order to communicate with the smartcard. 
-       +The class ''​APDUSmartCard''​ is constructed with proper parameters and the ''​BaseSigner''​ object taken with the method ''​getSigner()''​ is used in signature creationWhen  ''​APDUSmartCard''​ is being constructeda proper ''​TerminalHandler''​ must be created and usedCurrent version has the class ''​ACSTerminalHandler''​. 
-Takılı olan kart okuyuculardaki sertifikaları listeleyen ve seçilen dosyayı imzalayan örnek bir android uygulaması(eclipse ​projesi olarakpaket içerisinde bulunmaktadırİmzalama için gerekli ​jar dosyaları bu örnek ​eclipse ​projesine bakılarak görülebilir.+For the operations requiring smartcardthe system wants confirmation from the user that he or she allows the application for usb accessFor proper display of this confirmation dialog in the android ​system, an object of ''​PendingIntent''​ must be given to ''​ACSTerminalHandler''​Due to similer work flows in android systems card operations must not be performed in the main GUI class. They must be performed in a class derived from  ''​AsyncTask''​
 +  
 +An example application ​(as an eclipse ​projectlisting the certificates in a smart card and signing a selected file, is included in the packageThe required ​jar files can be seen by examining this eclipse ​project. 
 +When using API with the test licence, only the test certificates can be used and a slight delay of 5 seconds will be suffered during each operation
  
-Android imzada test lisansı ile çalışırken sadece test sertifikaları ile işlem yapılabilecek ve işlemlerde 5 sn’lik bir gecikme yaşanacaktır.+The work flow mentioned above is demonstrated in the function below which is explained by comments ​
  
-Yukarıda bahsedilen akışla ilgili örnek bir fonksiyon aşağıdadır. Kod içerisinde gerekli kısımlarda yorumlar bulunmaktadır. 
 <sxh java> <sxh java>
 public void signWithFirstCertificate() public void signWithFirstCertificate()
     {      {
         try {         try {
-        //Burada gömülü lisans dosyası yüklenmektedir. ​   +        //Embedded licence file is loaded here   
             Resources res = getResources();​             Resources res = getResources();​
             InputStream lisansStream = res.openRawResource(R.raw.lisans);​             InputStream lisansStream = res.openRawResource(R.raw.lisans);​
Satır 20: Satır 22:
             lisansStream.close(); ​           ​             lisansStream.close(); ​           ​
             Activity callerActivity = this;    ​             Activity callerActivity = this;    ​
-            //ACSTerminalHandler oluşturulurken bunu çağıran ​Activity ​parametre olarak verilmelidir.+            //The calling ​Activity ​must be given as a parameter when constructing ACSTerminalHandler
         ACSTerminalHandler acsTerminalHandler =  new ACSTerminalHandler((Activity)this); ​                ACSTerminalHandler acsTerminalHandler =  new ACSTerminalHandler((Activity)this); ​      
-        //​APDUSmartCard ​sınıfı uygun TerminalHandler ​sınıfı ile çağrılmalıdır.+        //​APDUSmartCard ​must be called with a proper ​TerminalHandler ​object
         APDUSmartCard apduSmartCard = new APDUSmartCard(acsTerminalHandler); ​                APDUSmartCard apduSmartCard = new APDUSmartCard(acsTerminalHandler); ​      
-        //Kullanıcıdan usb erişim onayı alınabilmesi için oluşturulmuş olan PendingIntent ​nesnesi terminal handler sınıfına verilmelidir.+        // PendingIntent ​object created for usb access confirmation must be given to TerminalHandler.
             PendingIntent permissionIntent = PendingIntent.getBroadcast(callerActivity,​ 0, new Intent("​tr.gov.tubitak.bilgem.esya.android.signexample.USB_PERMISSION"​),​ 0);             PendingIntent permissionIntent = PendingIntent.getBroadcast(callerActivity,​ 0, new Intent("​tr.gov.tubitak.bilgem.esya.android.signexample.USB_PERMISSION"​),​ 0);
             acsTerminalHandler.setPermissionIntent(permissionIntent); ​           ​             acsTerminalHandler.setPermissionIntent(permissionIntent); ​           ​
-            //Akis kart iletişimi için SecureMessaging ​devre dışı bırakılmalıdır.+            //​SecureMessaging ​must be disabled.
             apduSmartCard.setDisableSecureMessaging(true); ​           ​             apduSmartCard.setDisableSecureMessaging(true); ​           ​
-            //Bağlı kart okuyucular okunuyor.+            //Getting connected card readers.
             CardTerminal[] terminalList = apduSmartCard.getTerminalList();​             CardTerminal[] terminalList = apduSmartCard.getTerminalList();​
             if(terminalList == null || terminalList.length == 0)             if(terminalList == null || terminalList.length == 0)
Satır 37: Satır 39:
             CardTerminal cardTerminal = terminalList[0];​             CardTerminal cardTerminal = terminalList[0];​
             apduSmartCard.openSession(cardTerminal); ​           ​             apduSmartCard.openSession(cardTerminal); ​           ​
-            //İlk kart okuyucudan sertifika listesi alınıyor.+            //The certificate list is collected from the first card reader
             List<​byte[]>​ signCertValueList = mApduSmartCard.getSignatureCertificates();​             List<​byte[]>​ signCertValueList = mApduSmartCard.getSignatureCertificates();​
             if(signCertValueList == null || signCertValueList.size() == 0)             if(signCertValueList == null || signCertValueList.size() == 0)
Satır 43: Satır 45:
             throw new Exception("​Kart içerisinde sertifika sayısı 0"​); ​           ​             throw new Exception("​Kart içerisinde sertifika sayısı 0"​); ​           ​
             }             }
-            //İlk sertifika ile işlem yapılacak.+            //The first certficate will be used
            ​ECertificate signingCert = new ECertificate(signCertValueList.get(0));​            ​ECertificate signingCert = new ECertificate(signCertValueList.get(0));​
            ​String cardPin = "​511661";​            ​String cardPin = "​511661";​
            ​apduSmartCard.login(cardPin); ​                ​apduSmartCard.login(cardPin); ​    
-           //İmzalamada kullanılacak ​BaseSigner APDUSmartCard ​sınıfından alınıyor. ​          +           // BaseSigner ​object is retrieved from APDUSmartCard ​           
            ​BaseSigner signer = apduSmartCard.getSigner(signingCert.asX509Certificate(),​ Algorithms.SIGNATURE_RSA_SHA1);​            ​BaseSigner signer = apduSmartCard.getSigner(signingCert.asX509Certificate(),​ Algorithms.SIGNATURE_RSA_SHA1);​
            ​BaseSignedData bsd = new BaseSignedData();​            ​BaseSignedData bsd = new BaseSignedData();​
-           //İmzalanacak olan dosya yolu+           //The path of the file to be signed
            ​String sourceFilePath = "/​tmp/​TextForSign.txt";​            ​String sourceFilePath = "/​tmp/​TextForSign.txt";​
            ​ISignable content = new SignableFile(new File(sourceFilePath));​            ​ISignable content = new SignableFile(new File(sourceFilePath));​
Satır 58: Satır 60:
            ​optionalAttributes.add(new SigningTimeAttr(Calendar.getInstance()));​            ​optionalAttributes.add(new SigningTimeAttr(Calendar.getInstance()));​
            ​HashMap<​String,​ Object> params = new HashMap<​String,​ Object>​();​            ​HashMap<​String,​ Object> params = new HashMap<​String,​ Object>​();​
-           //​Android ​ile imza atılırken sertifika kontrolü devre dışı bırakılmalıdır. +           //On Android, certificate validation must be disabled when signing 
-           //Mevcut sürümde sertifika doğrulama desteği bulunmamaktadır.+           //The current version does not support certificate validation
            ​params.put(EParameters.P_VALIDATE_CERTIFICATE_BEFORE_SIGNING,​false);​            ​params.put(EParameters.P_VALIDATE_CERTIFICATE_BEFORE_SIGNING,​false);​
            ​bsd.addSigner(ESignatureType.TYPE_BES,​ signingCert,​ signer, optionalAttributes,​ params);            ​bsd.addSigner(ESignatureType.TYPE_BES,​ signingCert,​ signer, optionalAttributes,​ params);
            byte [] signedDocument = bsd.getEncoded();​            byte [] signedDocument = bsd.getEncoded();​
            ​String destFilePath = sourceFilePath+ "​.imz";​            ​String destFilePath = sourceFilePath+ "​.imz";​
-           //İmzalı hali dosyaya yazılıyor.+           //Signed document is being written to the target file.
            ​AsnIO.dosyayaz(signedDocument,​ destFilePath); ​                      ​AsnIO.dosyayaz(signedDocument,​ destFilePath); ​          
            ​apduSmartCard.logout();​            ​apduSmartCard.logout();​
en/esya/android/android.1374648526.txt.gz · Son değiştirilme: 2013/07/24 06:48 Değiştiren: Dindar Öz