Skip to end of metadata
Go to start of metadata

აპლეტის დანიშნულება

აპლეტი განკუთვნილია ვებ-გვერდზე ID ბარათით იდენტიფიკაციის მექანიზმის ინტეგრაციისათვის. ის დამზადებულია სახელმწიფო სერვისების განვითარების სააგენტოს სპეციალისტების მიერ და განიცდის მუდმივ განვითარებას - როგორც ხარვეზების აღმოჩენის და გასწორების, ისე Java-ს ახალ ვერსიებთან თავსებადობის თვალსაზრისით.

ყურადღება

აპლეტის მუშაობისას ხარვეზის აღმოჩენისას გთხოვთ დაგვიკავშირდეთ მისამართზე integration@id.ge ან დატოვოთ კომენტარი ამავე სტატიაზე. გთხოვთ აუცილებლად მიუთითოთ თქვენი ოპერაციული სისტემის ვერსია, ასევე Java Runtime Environment-ის ვერსია და ბარათის წამკითხველის მოდელი

ID ბარათით ავთენტიფიკაციის ინტეგრაცია

აპლეტის ინტეგრაციის სამუშაო ორი ნაწილისაგან შედგება: ინტეგრაცია ვებ-გვერდზე და სერვერის მხარეს პროგრამული ლოგიკის მომზადება. წინამდებარე სტატია განიხილავს ორივე სამუშაოს. სტატია პერიოდულად განახლდება სასარგებლო რჩევებით და სხვა ინფორმაციით

აპლეტის ინტეგრაცია ვებ-გვერდზე

როგორც უკვე აღინიშნა, აპლეტი მუდმივად ახლდება რადგანაც Java Runtime Environment ასევე მუდმივი განახლების პროცესშია და აპლეტი შესაძლოა არათავსებადი აღმოჩნდეს მასთან. აქედან გამომდინარე, დაბეჯითებით გირჩევთ, თქვენს სისტემაში ფაილის სახთ ჩაშენების ნაცვლად ჩართოთ იგი ავთენტიფიკაციის ვებ-გვერდებზე შემდეგი მუდმივმოქმედი მისამართის გამოყენებით: https://id.ge/tools/applets/eid-web-applet-latest.jar

აპლეტის ინტეგრაციისათვის პირველ რიგში საჭიროა, თავად აპლეტი წვდომადი იყოს ვებ-კონტექსტიდან. ეს შესაძლებელია როგორც პირდაპირ, მუდმივმოქმედი მისამართის მითითებით (იხ. ზემოთ) ისე გადმოწერის და საკუთარ სისტემაში ჩასმით. მე-2 შემთხვევაში, თუკი თქვენი html ფაილები განთავსებულია public_html დირექტორიაში, შეგიძლიათ აპლეტის არქივი ჩააგდოთ იქვე, ან შექმნათ ცალკე დირექტორია. მაგალითად applets - თქვენი შეხედულების მიხედვით. ამის შესაბამისად მოგიწევთ შეცვალოთ archive ატრიბუტი ინტეგრაციის კოდში (იხ. ქვემოთ).

აპლეტის განთავსებულია შემდეგ მუდმივ მისამართზე https://id.ge/tools/applets/eid-web-applet-latest.jar - ყოველი განახლებული ვერსია გამოქვეყნებული იქნება იგივე მისამართზე.

ციფრული ხელმოწერა

არქივი ციფრულად ხელმოწერილია სახელმწიფო სერვისების განვითარების სააგენტოს მიერ. აკრძალულია ამ ფაილზე სხვა ხელმოწერის დადება. ეს კეთდება იმისათვის რომ მოქალაქეს მეტი ნდობა ჰქონდეს სისტემის მიმართ და დარწმუნებული იყოს საკუთარი  PIN კოდის უსაფრთხოებაში

ავთენტიფიკაციის ვებ-გვერდზე აპლეტი ინტეგრირდება შემდეგი კოდის გამოყენებით:

JavaScript კოდი ვებ-გვერდისათვის

ამ კოდში მთავრული ასოებით მონიშნულ ტექსტებს აქვთ შემდეგი მნიშვნელობა:

  1. YOUR_APPLICATION_CONTEXT - ვებ-მისამართი, სადაც განთავსებულია თქვენი აპლეტი - ფარდობითი ან სრული. მაგალითად, /myAppContext ან http://example.com:9080
  2. SOME_CHALLENGE_GENERATED_BY_YOUR_SITE - თქვენი საიტის მიერ გენერირებული შემთხვევითი მნიშვნელობა, რომელზეც შემდეგ ID ბარათის აუთენტიფიკაციის გასაღებით დაგენერირდება ციფრული ხელმოწერა. სტრიქონი კოდირებული უნდა იყოს Base64-ის მიხედვით. შესაბამისად, ხელმოწერა შესრულდება Base64 დეკოდირებით შესრულებულ მნიშვნელობაზე
  3. JAVASCRIPT_CALLBACK_FUNCTION - გამოსახულება (როგორც წესი, ფუნქციის გამოძახება) დაწერილი JavaScript ენაზე. აპლეტი მას გამოიძახებს როგორც წარმატებული იდენტიფიკაციის, ისე იდენტიფიკაციის უარყოფის შემთხვევაში. იმის გარჩევა, თუ კონკრეტულად რა მოხდა, შესაძლებელია აპლეტის ველების საშუალებით (იხილეთ ქვემოთ)
  4. LANGUAGE_KEY - აპლეტის ინტერფეისის ენა. აპლეტი მხარს უჭერს ქართულს (ka) და ინგლისურს (en)
გაითვალისწინეთ რომ აპლეტის ობიექტის იდენტიფიკატორი დოკუმენტის DOM სტრუქტურაში ამჟამად არის eidLoginApplet. თქვენ შეგიძლიათ შეცვალოთ ის სასურველი მნიშვნელობით (იხ. ცვლადი attributes). დანარჩენი ატრიბუტების ცვლილება კატეგორიულად არარეკომენდებულია.

 

აღნიშნული კოდი ამოწმებს Java Runtime Environment-ის ინსტალაციას კომპიუტერზე. თუკი ის ინსტალირებული არაა, მომხმარებელი ავტომატურად რედირექტდება JRE-ს ჩამოტვირთვის გვერდზე. ცოტა ხანში ჩვენ შემოგთავაზებთ JavaScript კოდის გაუმჯობესებულ ვერსიას, რომელიც უფრო მეტად ინტერაქტიული იქნება.

HTTPS აუცილებელია

აპლეტის მიმდინარე ვერსია არ ამოწმებს HTTPS პროტოკოლის არსებობას. ეს უახლოეს მომავალში შეიძლება შეიცვალოს უსაფრთხოების მოსაზრებებიდან გამომდინარე (გარდა, რასაკვირველია, localhost და 127.0.0.1 სერვერებისა). ასე რომ, დაბეჯითებით გირჩევთ ახლავე გაითვალისწინოთ და გამოიყენოთ მხოლოდ HTTPS პროტოკოლი. თუკი ამ პროტოკოლის გამოყენება თქვენთვის გარკვეულ მიზეზთა გამო შეუძლებელია, გირჩევთ აპლეტის ჩაშენების ნაცვლად ისარგებლოთ ID ბარათით იდენტიფიკაციის ღილაკით თქვენი ვებსაიტისათვის რომელიც HTTPS პროტოკოლის საშუალებით მუშაობს.

 

უკუკავშირის (Callback) ფუნქცია და აპლეტის მეთოდები

უკუკავშირის ფუნქცია, რომელიც იწერება JavaScript ენაზე, იძახება მაშინ, როდესაც აპლეტს სურს რაიმე აცნობს ვებ-გვერდს. კერძოდ: წარმატებული იდენტიფიკაცია ან უარი იდენტიფიკაციაზე. ამ შემთხვევაში აპლეტის მეთოდების გამოძახებით შესაძლებელია მიღებულ იქნას დამატებითი მონაცემები

აპლეტის მეთოდიდანიშნულება
getSignedData()აპლეტიდან ხელმოწერილი JSON სტრუქტურის ამოღება. იმ შემთხვევაში, როდესაც მომხმარებელი უარს განაცხადებს იდენტიფიკაციაზე, ეს ველი იქნება ცარიელი
isCancelledByUser()აბრუნებს true თუკი მომხმარებელმა უარჰყო იდენტიფიკაცია (დააჭირა უარყოფის ღილაკს ეკრანზე ან ბარათის წამკითხველის კლავიატურაზე)
უკუკავშირის ფუნქციის მაგალითი
ფორმის მაგალითი
უკუკავშირის ფუნქციის გამოძახების ფორმატი

გაითვალისწინეთ რომ აპლეტის HTML კოდში მითითებისას იწერება არა ფუნქციის სახელი არამედ მთლიანი გამოძახება, ფრჩხილებითურთ. მაგალითად: callbackFunction : 'myCallbackFunction()'

 

ციფრულად ხელმოწერილი მონაცემების ფორმატი

მას შემდეგ რაც მომხმარებელი წარმატებით გაივლის იდენტიფიკაციას ID ბარათით და აპლეტი გამოიძახებს უკუკავშირის ფუნქციას, მეთოდი getSignedData() დააბრუნებს შემდეგი ტიპის სტრიქონს:

ციფრულად ხელმოწერილი მონაცემები

ეს მნიშვნელობა უკუკავშირის ფუნქციამ უნდა გადასცეს სერვერს, რომელმაც მისი დამუშავების შემდეგ უნდა მიიღოს გადაწყვეტილება, დაუშვას თუ არა მომხმარებელი.

სერტიფიკატები

 გაიგეთ მეტი სერტიფიკატების შესახებ ჩვენი ვებ-გვერდიდან

 

აპლეტის მუშაობის ძირითადი პრინციპები

აპლეტი მუშაობს პირდაპირ ID ბარათის წამკითხველ მოწყობილობასთან PC/SC ინტერფეისის გამოყენებით. მას სამუშაოდ ესაჭიროება მხოლოდ ბარათის წამკითხველი და Java Runtime Environment. ამ უკანასკნელის ინსტალაციას ის თვითონ სთავაზობს მომხმარებელს, თუკი შესაბამისი ვერსია არ მოიძებნება.

ID ბარათის წამკითხველი

ცხადია, აპლეტის მუშაობისათვის აუცილებელია ID ბარათის წამკითხველის კომპიუტერთან შეერთება და ინსტალაცია. ჩვენ ვეცადეთ, არ შემოვფარგლულიყავით მხოლოდ ოფიციალურად თავსებადი წამკითხველების მხარდაჭერით. ამიტომ შესაძლებელია, აპლეტმა ასევე წარმატებით იმუშაოს არასერტიფიცირებულ წამკითხველებზე. მაგალითად - პორტატულ კომპიუტერებში ინტეგრირებულ წამკითხველებზე.

განსაკუთრებული შემთხვევაა ისეთი წამკითხველები რომლებსაც გააჩნია საკუთარი კლავიატურა. ამ შემთხვევაში აპლეტი ეცდება, გამოიყენოს ეს კლავიატურა და იდენტიფიკაციის მოთხოვნისას ეკრანზე გამოვა შეტყობინება იმის შესახებ, რომ მომხმარებელმა PIN კოდი უნდა აკრიფოს წამკითხველის კლავიატურაზე, ნაცვლად კომპიუტერის კლავიატურაზე.

თუკი თქვენ გაქვთ წამკითხველი საკუთარი კლავიატურით (PIN Pad)-ით და აპლეტი მაინც კლავიატურიდან გთხოვთ PIN კოდის შეყვანას, ეს ჩვენი შეცდომაა და უმორჩილესად გთხოვთ დაგვიკავშირდეთ მისამართზე integration@id.ge -ჩვენ აუცილებლად ვეცდებით ამ ხარვეზის აღმოფხვრას.

 

ინტეგრაცია სერვერის მხარეს

სერვერი, რომელიც მიიღებს ციფრულად ხელმოწერილ მონაცემებს, ვალდებულია შეასრულოს შემდეგი მოქმედებები:
 
  1. შეამოწმოს, response ველის მნიშვნელობა ნამდვილად სწორადაა თუ არა გენერირებული. ამისათვის მან უნდა აიღოს certChain[0] სერტიფიკატი (მომხმარებლის სერტიფიკატი), challenge ველი და შეადაროს, SHA256withRSA ალგორითმით response მნიშვნელობის კორექტულობა
  2. შეამოწმოს, certChain ველში გადაცემული სერტიფიკატების ჯაჭვი სწორია თუ არა და მიდის თუ არა ბოლოს GEO Root CA სერტიფიკატამდე (GEO Root CA სერტიფიკატის ნამდვილი მნიშვნელობა შეგიძლიათ გადმოწეროთ აქედან)
  3. შეამოწმოს სერტიფიკატების მოქმედების ვადები
  4. შეამოწმოს სერტიფიკატების სტატუსი. მომხმარებლის სერტიფიკატის შემოწმებისას დაბეჯითებით რეკომენდებულია OCSP-ს გამოყენება

 

Labels
  • None
  1. Oct 15, 2012

    Anonymous

    პირველადი გატესტვის შედეგად გვაქვს შემდეგი პრობლემები:

    დეპენდენსიები: slf4j-api-1.6.4.jar, slf4j-jdk14-1.6.4.jar, eid-middleware-1.0-SNAPSHOT.jar, eid-core-1.0-SNAPSHOT.jar.

    უკუკავშირის ფუნქცია: აპლეტი იტვირთება და გამოდის PIN_ის შეტანის ფანჯარა. პინის შეყვანის(სწორად) შემდეგ არ იძახება უკუკავშირის ფუნქცია. კონსოლზე არ გამოდის არც შეცდომა და არც შეტყობინება.

    ტესტი ჩატარდა შემდეგ გარემოში:

    OS - Microsoft Windows 7 Ultimate N x64

    Card Reader - PC/SC terminal Generic Smart Card Reader, PC/SC terminal SCM Microsystems Inc. SCR33x USB Smart Card Reader

    Browser - IE 9, Firefox 10.0

    Java - 1.6.0_33 64-bit, 1.6.0_32 32-bit

     

    კარგი იქნება თუ  ინტეგრატორს ექნება შესაძლებლობა აპლეტის პარამეტრებში მიუთითოს აპლეტის ფანჯრის ზომა და ფერი.

     

    პატივისცემით,

    შპს "აი-თი-ეს"

    1. Oct 15, 2012

      მოგესალმებით,

      დიდი მადლობა გამოხმაურებისათვის. რაც შეეხება ფანჯრის ზომას და ფერს, ზომის რეგულირება შეგიძლათ (ჯავასკრიპტის კოდში არის:width : 700,height : 200) ფერის ამბავს გავითვალისწინებთ. უბრალოდ არ გაგვახსენდა, ჩავინიშნავთ.
      დეფენდენსიები არ სჭირდება, ყველა ეგ კლასი თავად jar-ში წერია. უბრალოდ მანიფესტია გასასწორებელი, ამასაც ჩავინიშნავთ.

      უკუკავშირის ფუნქციის გაწერისას მრგვალი ფრჩხილებიც უნდა. გთხოვთ ესეც გადაამოწმოთ. ანუ მაგალითად ასე:

      callbackFunction : 'myCallbackFunction()'

      საერთოდ, HTML ფრაგმენტს თუ გამოგზავანით აქ ან integration@id.ge -ზე, უფრო უკეთ მოვახერხებთ გარკვევას რაშია საქმე.


      1. Oct 15, 2012

        Anonymous

        მადლობა დროული გამოხმაურებისათვის,

        მრგვალი ფრჩხილების მითითების შემდგე უკუკავშირის ფუნქციის გამოძახება განხორციელდა. ფუნქციის შესრულების დროს თუ ადგილი აქვს შეცდომას კონსოლზე გამოდის შემდეგი შეცდომა:

        Exception in thread "pool-1-thread-1" java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle, key Dialog.Messages.Chooser.js_callback_error
            at java.util.ResourceBundle.getObject(Unknown Source)
            at java.util.ResourceBundle.getObject(Unknown Source)
            at java.util.ResourceBundle.getString(Unknown Source)
            at ge.eid.card.applet.smartbrowser.EIDLoginApplet.registerException(EIDLoginApplet.java:149)
            at ge.eid.card.applet.smartbrowser.EIDLoginApplet.processCards(EIDLoginApplet.java:231)
            at ge.eid.card.applet.smartbrowser.CardChooser$1.run(CardChooser.java:185)
            at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
            at java.lang.Thread.run(Unknown Source)

        ვაგრძელებთ აპლეტის ტესტირებას და ხარვეზების ან დამატებების შემთხვევაში  დაგიკავშირდებით.

        მადლობა,

        შპს "აი-თი-ეს"

         

        1. Oct 15, 2012

          შესანიშნავია, დიდი მადლობა

          ეს ხარვეზიც ჩავინიშნეთ. უახლოეს ვერსიაში გასწორდება.

  2. Oct 15, 2012

    Anonymous

    შეცდომა:

    ge.eid.card.commons.EIDCardException: WRONG_READ_PARAMS_P1_P2[SW=0x6b00]
        at ge.eid.card.commons.EIDCard.readFileChunk(EIDCard.java:247)
        at ge.eid.card.commons.EIDCard.selectAndReadFileBySFI(EIDCard.java:194)
        at ge.eid.card.commons.EIDCard.readCertificate(EIDCard.java:345)
        at ge.eid.card.applet.smartbrowser.CardChooser.waitForEIDInsertion(CardChooser.java:134)
        at ge.eid.card.applet.smartbrowser.CardChooser.run(CardChooser.java:47)

    შეცდომა ფიქსირდება შემდეგ შემთხვევაში: წამკითხველი მიერთებულია, მაგრამ ბარათი არ დევს. ვიძახებთ აპლეტს, რომელიც გვთხოვს ბარათის წამკითხველში მოთავსებას. მოთავსების შემდეგ გამოდის აღნიშნული შეცდომის ფანჯარა. შეცდომის ფანჯრის დახურვის შემდეგ კი გამოდის პინის მოთხოვნის ფანჯარა.

    შპს "აი-თი-ეს"

     

    1. Oct 15, 2012

      ეს Known Issue არის ჯერჯერობით - როდესაც ბარათი წამკითხველში იდება, როგორც ჩანს სისტემას რაღაც დრო სჭირდება იმისათვის რომ ბარათი სრულყოფილად აღიქვას. ჯერ სერტიფიკატები იკითხება და მერე გამოდის PIN-ის მოთხოვნა. თუკი ბარათი დევს და ისე იშვება აპლეტი, მსგავსი რამ არ ხდება.

      უცნაური ისაა რომ მანამდე ბარათზე რამდენიმე სხვა ოპერაციაც ტარდება.

      მოკლედ, ყველაზე არასასურველ ვარიანტში ამას უბრალოდ sleep() სჭირდება. თუკი შემდეგ ვერსიამდე უკეთესი ვერაფერი მოვიფიქრეთ, ასეც გავაკეთებთ.

      მეორე ჯერზე კი უკვე წაკითხვა კარგად მუშაობს და მიდის PIN-ის შემოწმებაზე.

  3. Oct 16, 2012

    Anonymous

    შემდგომი ტესტირების შედეგად:

    • აპლეტის მიერ დაბრუნებულ მონაცემთა სტრიქონში კერძოდ "challenge:"_ში გვიბრუნებს მნიშვნელობას "generateSampleString//ng";
    • მომხმარებლის ქმედების შესაბამისად სატესტო გვერდზე ხდება აპლეტის დინამიურად დამატება ან ამოგდება. ამოგდების შემთხვევაშიც გამოდის პინის შეყვანის ფანჯარა;

    შპს "აი-თი-ეს"

     

    1. Oct 16, 2012

      მართალი ბრძანდებით, დოკუმენტაციაში გამოგვრჩა მითითება რომ challenge -დან ბაიტების ამოღებას ახდენს Base64-ის შესაბამისად (და უკანაც Base64-ში გადაყვანილს აბრუნებს). შესაბამისად, გთხოვთ დარწმუნდეთ რომ გადაცემული challenge ამის მიხედვითაა გაკეთებული.

      მეორე პუნქტს ვერ მივხვდი. რას გულისხმობს "მომხმარებლის ქმედების შესაბამისად სატესტო გვერდზე ხდება აპლეტის დინამიურად დამატება ან ამოგდება" ?

      1. Oct 17, 2012

        Anonymous

        სატესტო აუთენთიფიკაციის გვერდზე(LoginPage) გარდა სტანდარტული აუთენთიფიკაციის ფორმისა(User Name/Password) გვაქვს ღილაკი "Eid ბარათით აუთენთიფიკაცია"(აქტიური) და "სტანდარტული აუთენთიფიკაცია"(არააქტიური). თუ მომხმარებელი გადაწყვეტს აუთენთიფიკაცია გაიაროს ბარათით იგი აჭერს ღილაკს "Eid ბარათით აუთენთიფიკაცია" და შესაბამისად ხდება აპლეტის ჩატვირთვა(დინამიურად ვსვათ DOM_ში). აპლეტის ინიციალიზაციის დროს ხდება შესაბამისი ქმედებები და ეკრანზე გამოდის პინის შეტანის ფანჯარა. ამავდროულად ხდება "სტანდარტული აუთენთიფიკაცია" ღილაკის გააქტიურება. თუ მომხარებელი გადაიფიქრებს ბართით აუთენთიფიკაციას და მას სურს აუთეთიფიკაცია გაიაროს სტანდარტულად იგი აჭერს ღილაკს "სტანდარტული აუთენთიფიკაცია", შესაბამისად ხდება აპლეტის ამოღება DOM_დან და აი ამ დროს კვლავ გამოდის პინის შეყვანის ფანჯარა.

        1. Oct 17, 2012

          ვფიქრობ, ყველაზე ოპტიმალური იქნება თუკი DOM-ში მანიპულაციის ნაცვლად თქვენი ღილაკი უბრალოდ გამოიძახებს deployJava.runApplet(attributes, parameters, version);

          ზოგადად ეს deployJava.js არის სტანდარტული, ე.წ. Deployment Toolkit Script, რომლის დოკუმენტაციაც შეგიძლიათ ნახოთ შემდეგ საიტზე: http://docs.oracle.com/javase/6/docs/technotes/guides/jweb/deployment_advice.html


          პრინციპში, ალტერნატივის სახით თქვენ შეგიძლიათ გამოიყენოთ სტანდარტული <object> და <applet> ტეგები თუმცა ჩვენ დაბეჯითებით ვუწევთ რეკომენდაციას ამ კონკრეტულ სკრიპტს, რადგანაც ის უზრუნველყოფს არამარტო აპლეტის გამოჩენას, არამედ (საჭიროების შემთხვევაში) JRE-ს ინსტალაციასაც.

          მაგალითად, თქვენ შეგიძლიათ გადაამოწმოთ, საერთოდ არის თუ არა java ინსტალირებული ( versionCheck(version) ) გამოძახებით და თუ არაა, გადმოამისამართოთ ჩვენს ვებ გვერდზე, რომლის მუდმივი ლინკი იქნება https://id.ge/installer - ცოტა ხანში ამ გვერდზე მნიშვნელოვანი ცვლილებები მოხდება, თუმცა გარკვეულწილად ახლაც გამოდგება დოკუმენტაციად.

          ასევე შეგიძლიათ გამოიყენოთ სხვა Toolkit, რომელიც JavaFX-ისთვისაა თუმცა სავარაუდოდ თქვენც გამოგადგებათ:
          http://docs.oracle.com/javafx/2/deployment/deployment_toolkit.htm
          ვფიქრობ, ეს მაგალითი დაგეხმარებათ:
          http://docs.oracle.com/javafx/2/deployment/deployment_toolkit.htm#FBJHIEAG

          1. Oct 17, 2012

            Anonymous

            დიდი მადლობა დროული პასუხისათვის,

            რა თქმა უნდა, ინტეგრაციისათვის  ჩვენ ვიყენებთ Deployment Toolkit Script. ამ ეტაპისათვის ვაკეთებთ ინტეგრაციას GWT-GXT ვებ-აპლიკაციისათვის და გამოვიყენებთ მასში არსებულ საშუალებებს.მადლობა რჩევისათვის.

            ვფიქრობთ ცოტა ხანში გვექნება ვებ-აპლიკაციის საჩვენებელი ვერსია, რომელშიც ინტეგრირებული იქნება თქვენი აუთენთიფიკაციის აპლეტი სრული ფუნქციონალით(ამ ეტაპზე:  სერტიფიკატების ჯაჭვის და მათი ვალიდურობის OCSP - CRL გადამოწმებით). ლინკს დავდებთ აქ.

            მომავალში დაგვჭირდება LDS და ციფრული ხელმოწერის ფუნქციონალი. ამაშიც თუ გაგვიწევთ დახმარებას კარგი იქნება.

             

            მადლობა,

            შპს "აი-თი-ეს"

            1. Oct 17, 2012

              LDS-ისათვის ჩვენ სავარაუდოდ გამოვიყენებთ JMRTD ბიბლიოთეკას (www.jmrtd.org) - ამჟამად მიმდინარეობს მუშაობა მის მორგებაზე ID ბარათთან. ცოტა ხანში შემოგთავაზებთ LDS-ის წაკითხვის სამაგალითო კოდებს ჩვენს საიტზე.

              რასაკვირველია, ასევე გაგიწევთ დახმარებას ციფრულ ხელმოწერაზეც.

               

              გისურვებთ წარმატებებს!

  4. Nov 01, 2012

    Anonymous

    ციფრული ხელმოწერის ვალიდაცია.

     

    სატესტო შემთხვევითი მნიშვნელობა:

    byte[] randomChallenge = new String("some-random-challenge").getBytes();

    აპლეტს გადავცემთ:

    BASE64Encoder encoder = new BASE64Encoder();

     

     

  5. Nov 01, 2012

    Anonymous

    პრობლემა ციფრული ხელმოწერის ვალიდაციის დროს:

     

    სატესტო შემთხვევითი მნიშვნელობა:

    byte[] randomChallenge = new String("some-random-challenge").getBytes();

     

    აპლეტს ვაწვდით კოდირებულს:

    BASE64Encoder encoder = new BASE64Encoder();

    return encoder.encode(randomChallenge);


    ვალიდაციის მეთოდი: 

    private boolean verifySignature(String sigAlgName, byte[] data, PublicKey publicKey, byte[] sig);

    პარამეტრი sigAlgName = 'SHA256withRSA;

    პარამეტრი data = randomChallenge;

    პარამეტრი publicKey = აპლეტის მიერ დაბრუნებული JSON_ის certChain მასივის პირველი ელემენტიდან. X509Certificate ის getPublicKey() მეთოდით;