From 66dfedf187804a52feb76652103f0086a934e697 Mon Sep 17 00:00:00 2001 From: oepen Date: Sun, 1 Aug 2010 14:06:26 +0000 Subject: [PATCH] Removed old sources git-svn-id: https://vsmartcard.svn.sourceforge.net/svnroot/vsmartcard@233 96b47cad-a561-4643-ad3b-153ac7d7599c --- pace-gui/AUTHORS | 1 - pace-gui/COPYING | 1 - pace-gui/ChangeLog | 8 - pace-gui/INSTALL | 1 - pace-gui/Makefile.am | 1 - pace-gui/NEWS | 0 pace-gui/README | 0 pace-gui/configure.ac | 30 -- pace-gui/images/Makefile.am | 10 - pace-gui/images/OpenPACElogo.png | Bin 31948 -> 0 bytes pace-gui/images/apply.png | Bin 3643 -> 0 bytes pace-gui/images/error.png | Bin 4066 -> 0 bytes pace-gui/images/info.png | Bin 1774 -> 0 bytes pace-gui/images/wait.gif | Bin 21398 -> 0 bytes pace-gui/src/Makefile.am | 17 - pace-gui/src/pace-gui.desktop.in | 11 - pace-gui/src/pace-gui.py | 647 ---------------------------- pace-gui/src/pace_gui_globals.py.in | 91 ---- pace-gui/src/pinpad.glade | 272 ------------ 19 files changed, 1090 deletions(-) delete mode 100644 pace-gui/AUTHORS delete mode 120000 pace-gui/COPYING delete mode 100644 pace-gui/ChangeLog delete mode 120000 pace-gui/INSTALL delete mode 100644 pace-gui/Makefile.am delete mode 100644 pace-gui/NEWS delete mode 100644 pace-gui/README delete mode 100644 pace-gui/configure.ac delete mode 100644 pace-gui/images/Makefile.am delete mode 100644 pace-gui/images/OpenPACElogo.png delete mode 100644 pace-gui/images/apply.png delete mode 100644 pace-gui/images/error.png delete mode 100644 pace-gui/images/info.png delete mode 100644 pace-gui/images/wait.gif delete mode 100644 pace-gui/src/Makefile.am delete mode 100644 pace-gui/src/pace-gui.desktop.in delete mode 100644 pace-gui/src/pace-gui.py delete mode 100644 pace-gui/src/pace_gui_globals.py.in delete mode 100644 pace-gui/src/pinpad.glade diff --git a/pace-gui/AUTHORS b/pace-gui/AUTHORS deleted file mode 100644 index 4067889..0000000 --- a/pace-gui/AUTHORS +++ /dev/null @@ -1 +0,0 @@ -Dominik Oepen diff --git a/pace-gui/COPYING b/pace-gui/COPYING deleted file mode 120000 index 6168a39..0000000 --- a/pace-gui/COPYING +++ /dev/null @@ -1 +0,0 @@ -/usr/share/automake-1.11/COPYING \ No newline at end of file diff --git a/pace-gui/ChangeLog b/pace-gui/ChangeLog deleted file mode 100644 index e8a5707..0000000 --- a/pace-gui/ChangeLog +++ /dev/null @@ -1,8 +0,0 @@ -2010-07-01 11:26 frankmorgner - - * .: added ChangeLog for distribution package - -2010-06-08 07:26 oepen - - * .: Working on autotools scripts - diff --git a/pace-gui/INSTALL b/pace-gui/INSTALL deleted file mode 120000 index cbd1c80..0000000 --- a/pace-gui/INSTALL +++ /dev/null @@ -1 +0,0 @@ -/usr/share/automake-1.11/INSTALL \ No newline at end of file diff --git a/pace-gui/Makefile.am b/pace-gui/Makefile.am deleted file mode 100644 index bc3c0b2..0000000 --- a/pace-gui/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -SUBDIRS = src images diff --git a/pace-gui/NEWS b/pace-gui/NEWS deleted file mode 100644 index e69de29..0000000 diff --git a/pace-gui/README b/pace-gui/README deleted file mode 100644 index e69de29..0000000 diff --git a/pace-gui/configure.ac b/pace-gui/configure.ac deleted file mode 100644 index 76f1b28..0000000 --- a/pace-gui/configure.ac +++ /dev/null @@ -1,30 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - -AC_PREREQ([2.64]) -AC_INIT(pace-gui, 0.2, oepen@informatik.hu-berlin.de) -AM_INIT_AUTOMAKE -AC_CONFIG_MACRO_DIR([m4]) - -# Checks for programs. -AC_PROG_INSTALL -AC_PROG_LN_S -AM_PATH_PYTHON - -# Checks for libraries. -PKG_CHECK_MODULES(PYGTK, pygtk-2.0) -AC_SUBST(PYGTK_CFLAGS) -AC_SUBST(PYGTK_LIBS) - -# Checks for header files. - -# Checks for typedefs, structures, and compiler characteristics. - -# Checks for library functions. - -AC_CONFIG_FILES([Makefile - src/Makefile - src/pace_gui_globals.py - src/pace-gui.desktop - images/Makefile]) -AC_OUTPUT diff --git a/pace-gui/images/Makefile.am b/pace-gui/images/Makefile.am deleted file mode 100644 index 05571db..0000000 --- a/pace-gui/images/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -pixmapsdir = $(datadir)/pace-gui/ -pixmaps_DATA = \ - OpenPACElogo.png \ - apply.png \ - error.png \ - wait.gif \ - info.png - -EXTRA_DIST = \ - $(pixmaps_DATA) diff --git a/pace-gui/images/OpenPACElogo.png b/pace-gui/images/OpenPACElogo.png deleted file mode 100644 index f0a48d27f22b6cf0dfb4a19ced0a29416df7ce3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31948 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%0D!j9E;Ese+hWUq9E-&UV$uC+eIl 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 N002ovPDHLkV1lVj{tEyA diff --git a/pace-gui/images/error.png b/pace-gui/images/error.png deleted file mode 100644 index fa5f5d472b8f522b0cc45b784a0738c1cca70788..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4066 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 UV?+LBTL1t607*qoM6N<$f@bTVoB#j- diff --git a/pace-gui/images/info.png b/pace-gui/images/info.png deleted file mode 100644 index e8361145107c20c046d2fa3a00808308b6b9925d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1774 zcmVR8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H125U(~K~zYIotJHFTUQy!f9Kw7U%w=F9VcntnkKC6+EMY+EKFLb zjY*TxXkm0n1BpqDNp+-66-azRf=_(lMQEKEVp82Nj1Pz*UiM*36cF76A7Guetjk!t z^d(J}I7=Mcacp1v-h0mFgX7e8?4;vJkIuEP@BRPI^E~JAbA;!4+{qAAsZRo51|9^4 zOr7DNPwQT{_~Ci#8m2qyHB*)I1peiQ$?v}(RkS4_~9r+ zF_YBw0&mUc@me92qF8n~|N1iJNKf&R!PUg6;lll-esT8E!(k5gn|!cTqEvOUsuHU{S6n=)80!l*dF{YJ2&>|@n1fYuh=mOv zJ`|>!UWvbSYyZzIsUO=0Af{3}@Z$ZWrg3!8d@pk&uR%N(tcmpC0fN zG8A(w7F9_D!1foG%QnCM$3h!1)d9dm;1TyL)^Z!s-+wsr=+q}}ybH`2z+~9RNMD!E z#zuvFv2pcvfZey>4*~GR z@gYu5?xicJH{64l-&o+~i?_D9y%i=JHW2eU^3{>M=Stzev2dy10PgDx3Ty?_OEw0I zEk+KcFl+B;(9%>yOlCGl} z2Hl362Rsc}%$8ijeyxKGTYx(C4|Rw;0rC5Z`Ry!F)`01pE$A|}&MR-VcH+Bi!7cOo zAQ0eaq;LzcG~kuIG%!T1)9JYK)==ygf=&?8DBXs8^GKwy24pngU(#dk>Z;A2kbY-g z*vb8k!tEg9arTExmo}eV(7baK5;*%#RxlJZn}wy^4kBge5Hu!gJBU~eJsd2b8eY5z zl!3K+Kk&RG^o12$$KNRo4dyqR`WQ@~wq3jx0$^x}Bay%Q!=|QGOrIWd@i?&M(lJ>XIzk+{00 z*`_Pj1G;>nBK2p;WFVJo&iuyG+V=l{bLGJx?AwRGJD7WXc=6{C_pe+Bt|k(ROHF#6 z4kq2t{^#k6)X%z(jFQPfp#ZMi4_kK0OiwEA*9RY(NKB%zWCbP_r`KdKmnKm zZnhpqJ~lvoB$G)WFa!**R?WVg?e7^6mu#P=Y-)wY0#<+z6NyB}^I+rnA1sL-3^Nc{ Qt^fc407*qoM6N<$f|N9FA^-pY diff --git a/pace-gui/images/wait.gif b/pace-gui/images/wait.gif deleted file mode 100644 index 9a4c8d500d46f98bc417981db386b4cf84285006..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21398 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 diff --git a/pace-gui/src/Makefile.am b/pace-gui/src/Makefile.am deleted file mode 100644 index fd7af73..0000000 --- a/pace-gui/src/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ -bin_SCRIPTS = pace-gui.py - -paceguidir = $(prefix)/bin - -pacegui_PYTHON = \ - pace_gui_globals.py - -uidir = $(datadir)/pace-gui -ui_DATA = pinpad.glade - -appdir = $(datadir)/applications/ -app_DATA = pace-gui.desktop - -EXTRA_DIST = \ - $(bin_SCRIPTS) \ - $(pinpad_PYTHON) \ - $(ui_DATA) diff --git a/pace-gui/src/pace-gui.desktop.in b/pace-gui/src/pace-gui.desktop.in deleted file mode 100644 index 8d24edf..0000000 --- a/pace-gui/src/pace-gui.desktop.in +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Version=@VERSION@ -Encoding=UTF-8 -Name=PACE-GUI -Comment=GUI zur Eingabe einer PIN/CAN/PUK fuer pace-tool -Exec=pace-gui.py -Icon=@prefix@/share/pace-gui/OpenPACElogo.png -Terminal=false -Type=Application -Categories=Utility -StartupNotify=false diff --git a/pace-gui/src/pace-gui.py b/pace-gui/src/pace-gui.py deleted file mode 100644 index 1b36ac2..0000000 --- a/pace-gui/src/pace-gui.py +++ /dev/null @@ -1,647 +0,0 @@ -#!/usr/bin/env python -# coding: utf-8 - -import sys, os, subprocess -from threading import Thread, Event -try: - import pygtk - pygtk.require("2.0") - import gtk, gobject, glib, pango -except ImportError: - sys.exit(1) - -try: - import pace -except ImportError: - print >> sys.stderr, "Could not import pace module, please install pyPACE" - sys.exit(1) - -from pace_gui_globals import AT_CHAT_STRINGS, STR_CARD_FOUND, STR_NO_CARD, IMAGES #FIXME:Fuckup -import pace_gui_globals as gui_globals - -class MokoWindow(gtk.Window): - """ - Base class for all our dialogues. It's a simple gtk.Window, with a title at - the top and to buttons at the bottom. In the middle there is a vBox where - we can put custom stuff for each dialoge. - All the dialoges are stored as a double-linked list, so the navigation from - one window to another is easy - """ - - def __init__(self, title, predecessor): - super(MokoWindow, self).__init__() - - self.title_str = title - self.predecessor = predecessor - - assert(isinstance(self.title_str, basestring)) - - self.connect("destroy", gtk.main_quit) - #Display resolution of OpenMoko minus height of the SHR toolbar - self.set_size_request(480, 586) - #self.set_resizable(False) - - #Main VBox, which consists of the title, the body, and the buttons - self.__vb = gtk.VBox(False, 5) - self.add(self.__vb) - - #Title label at the top of the window - lbl_title = gtk.Label(self.title_str) - lbl_title.modify_font(pango.FontDescription("sans 14")) - lbl_title.set_alignment(0.5, 0.0) - self.__vb.pack_start(lbl_title, False, False) - - #Body VBox for custom widgets - self.body = gtk.VBox(False) - #Add a scrollbar in case we must display lots of information - #Only use a vertical spacebar, not a horizontal one - scrolled_window = gtk.ScrolledWindow() - scrolled_window.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) - scrolled_window.set_shadow_type(gtk.SHADOW_ETCHED_OUT) - self.__vb.pack_start(scrolled_window) - scrolled_window.add_with_viewport(self.body) - - #Add two buttons at the bottom of the window - hbox = gtk.HBox(True, 5) - if self.predecessor is None: - btnBack = gtk.Button("Abbrechen") - else: - btnBack = gtk.Button(u"Zurück") - btnBack.set_size_request(150, 75) - btnBack.connect("clicked", self.btnBack_clicked, None) - if isinstance(btnBack.child, gtk.Label): - lbl = btnBack.child - else: - raise ValueError("Button does not have a label") - lbl.modify_font(pango.FontDescription("sans 12")) - hbox.pack_start(btnBack, True, True) - - btnForward = gtk.Button("Weiter") - btnForward.set_size_request(150, 75) - btnForward.connect("clicked", self.btnForward_clicked, None) - if isinstance(btnForward.child, gtk.Label): - lbl = btnForward.child - else: - raise ValueError("Button does not have a label") - hbox.pack_start(btnForward, True, True) - lbl.modify_font(pango.FontDescription("sans 12")) - self.__vb.pack_start(hbox, False, False) - - #Place window in the center of the screen - self.set_position(gtk.WIN_POS_CENTER_ALWAYS) - - def btnBack_clicked(self, widget, data=None): - """Go back to the previous window. If there is no previous window, - do nothing""" - if self.predecessor is None: - gtk.main_quit() - else: - self.predecessor.show_all() - self.hide() - - def btnForward_clicked(self, widget, data=None): - """Go to the next window. If there is no next window, do nothing""" - if self.successor is None: - pass - else: - self.successor.show_all() - self.hide() - -class MsgBox(gtk.Dialog): - """The gtk.MessageDialog looks like crap on the Moko, so we write our own""" - - def __init__(self, parent, msg, img_type, flags): - #img is a string which is used as a key for the IMAGES dictionary - if img_type is not None: - assert IMAGES.has_key(img_type) - - super(MsgBox, self).__init__(title="", parent=parent, flags=flags) - - #Dialog will be resized to screen width no matter what. Therefore we - #use the whole width from the beginning to avoid being resized - self.set_size_request(480, 160) - - hbox_top = gtk.HBox() - lbl = gtk.Label(msg) - lbl.set_width_chars(20) - lbl.set_line_wrap(True) - btn = gtk.Button("Ok") - btn.connect("clicked", self.__destroy) - img = gtk.Image() - img.set_from_file(IMAGES[img_type]) - hbox_top.pack_start(img, False, False) - hbox_top.pack_start(lbl, True, True) - self.vbox.pack_start(hbox_top) - #self.vbox.pack_start(gtk.HSeparator()) - hbox_bottom = gtk.HBox() - spacer = gtk.Label("") - spacer.set_size_request(380, 25) - hbox_bottom.pack_start(spacer, False, False) - hbox_bottom.pack_start(btn, True, True) - self.vbox.pack_start(hbox_bottom) - #hbox.pack_start(vbox) - #self.add(hbox) - - #self.set_decorated(False) - self.set_modal(True) - - self.show_all() - - def __destroy(self, widget=None, data=None): - self.destroy() - - -class CertificateDescriptionWindow(MokoWindow): - """This window is used to display information about the service provider, - extracted from the terminal certificate and the appendant certificate - description""" - - def __init__(self, binDescription, binCert): - super(CertificateDescriptionWindow, self).__init__("Dienstanbieter", None) - - #binDesciption contains the Certificate Description as a octet string - desc = pace.d2i_CVC_CERTIFICATE_DESCRIPTION(binDescription) - - self.successor = CVCWindow(binCert, self) - - #Display the validity period: - cvc = pace.d2i_CV_CERT(binCert) - effective_date = self.formatDate(pace.get_effective_date(cvc)) - expiration_date = self.formatDate(pace.get_expiration_date(cvc)) - validity_period = effective_date + " - " + expiration_date - #self.addRow(u"Gültig ab:", effective_date) - #self.addRow(u"Gültig bis:", expiration_date) - self.addRow(u"Gültigkeitszeitraum:", validity_period) - - #Display issuer Name and possibly URL and subject name and possibly URL - issuer_name = pace.get_issuer_name(desc) - issuer_url = pace.get_issuer_url(desc) - self.addRow("Zertifikatsaussteller:", issuer_name) - if issuer_url is not None: - self.addRow("", issuer_url, True) - subject_name = pace.get_subject_name(desc) - subject_url = pace.get_subject_url(desc) - self.addRow("Zertifikatsinhaber:", subject_name) - if subject_url is not None: - self.addRow("", subject_url, True) - self.set_focus(None) - - #Extract, format and display the terms of usage - terms = pace.get_termsOfUsage(desc) - formated_terms = self.formatTOU(terms) - self.addRow("Beschreibung:", formated_terms) - - self.show_all() - - def formatDate(self, date): - """Take a date string in the form that is included in CV Certificates - (YYMMDD) and return it in a better readable format (DD.MM.YYYY)""" - - assert(isinstance(date, basestring)) - assert(len(date) == 6) - - year = date[:2] - month = date[2:4] - day = date[4:6] #Cut off trailing \0 - - #Implicit assumption: 2000 <= year < 3000 - return day + "." + month + "." + "20" + year - - def formatTOU(self, terms): - -# for s in self.terms_array: -# s = s.replace(", ", "\n").strip() -# lbl = gtk.Label(s) -# lbl.set_alignment(0.0, 0.0) -# lbl.set_width_chars(60) -# lbl.set_line_wrap(True) #XXX: Doesn't work on the Moko -# lbl.modify_font(pango.FontDescription("bold")) -# self.body.pack_start(gtk.HSeparator()) -# self.body.pack_start(lbl, False, False, 2) - - return terms.replace(", ", "\r\n") - - def addRow(self, title, text, url=False): - if not url: #URL has no title - lbl_title = gtk.Label(title) - lbl_title.set_width_chars(20) - lbl_title.set_alignment(0.0, 0.5) - lbl_title.modify_font(pango.FontDescription("bold")) - self.body.pack_start(lbl_title) - hbox = gtk.HBox() - lbl = gtk.Label("") #Empty label for spacing - lbl.set_width_chars(3) - hbox.pack_start(lbl) - if url: - lblText = gtk.LinkButton(text, text) - if isinstance(lblText.child, gtk.Label): - lbl = lblText.child - else: - raise ValueError("Button does not have a label") - lbl.set_width_chars(40) - - else: - lblText = gtk.Label(text) - lblText.set_width_chars(40) - - lblText.set_alignment(0.0, 0.0) - hbox.pack_start(lblText) - self.body.pack_start(hbox) - -class CVCWindow(MokoWindow): - """This window is used to display and modify the access encoded in the CHAT - of a CV Certificate""" - - def __init__(self, binCert, predecessor): - super(CVCWindow, self).__init__("Zugriffsrechte", predecessor) - - self.successor = PinpadGTK("pin", None) - - #Convert the binary certificate to the internal representation and - #extract the relative authorization from the chat - cvc = pace.d2i_CV_CERT(binCert) - chat = pace.cvc_get_chat(cvc) - self.chat_oid = pace.get_chat_oid(chat) - self.chat = pace.get_binary_chat(chat) - self.rel_auth = [] - for char in self.chat: - self.rel_auth.append(ord(char)) - self.rel_auth_len = len(self.rel_auth) - - #Extract the access rights from the CHAT and display them in the window - self.access_rights = [] - j = 0 - for i in range((self.rel_auth_len - 1) * 8 - 2): - if (i % 8 == 0): - j += 1 - if self.rel_auth[self.rel_auth_len - j] & (1 << (i % 8)): - chk = customCheckButton(i, self.body) - self.access_rights.append(chk) - - def btnForward_clicked(self, widget, data=None): - """ Check wether any access right have been deselected and modify the - CHAT accordingly """ - - for right in self.access_rights: - if not right.is_active(): - idx = right.idx - self.rel_auth[len(self.chat) - 1 - idx / 8] ^= (1 << (idx % 8)) - - #super(CVCWindow, self).btnForward_clicked(widget, data) - new_chat_list = [] - for byte in self.chat_oid: - new_chat_list.append(ord(byte)) - new_chat_list.append(len(self.rel_auth)) - new_chat_list.extend(self.rel_auth) - new_chat = self.__formatHexString(new_chat_list) - self.successor.set_chat(new_chat) - self.successor.show() - self.hide() - - def __formatHexString(self, int_list): - """Take a list of integers and convert it to a hex string, where the - individual bytes are seperated by a colon (e.g. "0f:00:00")""" - hex_str = "" - for i in int_list: - byte = hex(i)[2:] - if len(byte) == 1: byte = "0" + byte - hex_str += byte + ":" - - return hex_str[:-1] - -class customCheckButton(object): - """This class provides a custom version of gtk.CheckButton. - The main difference isthat the checkbox can be placed at the right - side of the label and that we can store an index with the button""" - - def __init__(self, index, vbox): - self.idx = index - #Fetch name and (possibly empty) helptext - strings = AT_CHAT_STRINGS[index] - self.label = strings[0] - self.helptext = strings[1] - self.parent = vbox.get_parent_window() - - #Setup a label with the name of the access right - self.lbl = gtk.Label(self.label) - self.lbl.set_alignment(0.0, 0.5) - self.lbl.set_padding(20, 0) - self.lbl.modify_font(pango.FontDescription("bold")) - - #If we have a helptext, put an image at the left side of the label - self.info_box = None - if self.helptext is not None: - self.info_box = gtk.EventBox() - img = gtk.Image() - img.set_from_file(IMAGES["info"]) - self.info_box.add(img) - self.info_box.connect("button_release_event", self._show_info) - - #...and a checkbox on the right side of the label - self.chk = gtk.CheckButton("") - self.chk.set_active(True) - self.chk.set_alignment(1.0, 0.5) - - #Insert the label and the checkbox in the vbox and add a seperator - hbox = gtk.HBox() - if self.info_box is not None: - hbox.pack_start(self.info_box, False, False) - else: #pack empty label for spacing - spacer = gtk.Label("") - spacer.set_size_request(32, 32) - hbox.pack_start(spacer, False, False) - hbox.pack_start(self.lbl, True, True) - hbox.pack_start(self.chk, False, False) - vbox.pack_start(gtk.HSeparator()) - vbox.pack_start(hbox) - - def is_active(self): - return self.chk.get_active() - - def _show_info(self, widget=None, data=None): - """Show a messagebox containing info about the access right in - question""" - help = MsgBox(self.parent, self.helptext, "info", - gtk.DIALOG_DESTROY_WITH_PARENT) - -class PinpadGTK: - """This a simple GTK based GUI to enter a PIN/PUK/CAN""" - - def __init__(self, secret="pin", chat=None, cert=None): - btn_names = ["btnOne", "btnTwo", "btnThree", "btnFour", "btnFive", - "btnSix", "btnSeven", "btnEight", "btnNine", "btnDel", - "btnZero", "btnOk"] - - self.pin = "" - self.secret = secret - if self.secret == "pin" or self.secret == "can": - self.secret_len = 6 - elif self.secret == "transport": - self.secret_len = 5 - elif self.secret == "puk": - self.secret_len = 10 - else: - raise ValueError("Unknwon secret type: %s" % self.secret) - #gtk.main_quit() - self.chat = chat - self.cert = cert - - #Set the Glade file - self.gladefile = gui_globals.GLADE_FILE - self.builder = gtk.Builder() - try: - self.builder.add_from_file(self.gladefile) - except glib.GError, err: - #If we encounter an exception at startup, we display a popup with - #the error message - popup = MsgBox(None, err.message, "error", None) - popup.run() - popup.destroy() - raise err - - #Get the Main Window, and connect the "destroy" event - #Create our dictionay and connect it - dic = { "on_btnOne_clicked" : self.digit_clicked, - "on_btnTwo_clicked" : self.digit_clicked, - "on_btnThree_clicked" : self.digit_clicked, - "on_btnFour_clicked" : self.digit_clicked, - "on_btnFive_clicked" : self.digit_clicked, - "on_btnSix_clicked" : self.digit_clicked, - "on_btnSeven_clicked" : self.digit_clicked, - "on_btnEight_clicked" : self.digit_clicked, - "on_btnNine_clicked" : self.digit_clicked, - "on_btnZero_clicked" : self.digit_clicked, - "on_btnOk_clicked" : self.btnOk_clicked, - "on_btnDel_clicked" : self.btnDel_clicked, - "on_MainWindow_destroy_event" : self.shutdown, - "on_MainWindow_destroy" : self.shutdown } - - self.builder.connect_signals(dic) - - #Change the font for the text field and set it up up properly for the - #type of secret we are using - self.output = self.builder.get_object("txtOutput") - self.output.modify_font(pango.FontDescription("Monospace 16")) - self.output.set_text(self.secret_len * "_") - - #Look for card and set the label accordingly - self.lbl_cardStatus = self.builder.get_object("lbl_cardStatus") - #Fetch the status image - self.img_cardStatus = self.builder.get_object("img_cardStatus") - self.img_cardStatus.set_from_file(IMAGES["error"]) - - #We only start the thread for polling the card when the window - #is shown - self.cardChecker = None - - #Change the font for the buttons - #For this you have to retrieve the label of each button and change - #its font - for btn_name in btn_names: - btn = self.builder.get_object(btn_name) - if btn.get_use_stock(): - lbl = btn.child.get_children()[1] - elif isinstance(btn.child, gtk.Label): - lbl = btn.child - else: - raise ValueError("Button does not have a label") - - if (btn_name == "btnOk" or btn_name == "btnDel"): - lbl.modify_font(pango.FontDescription("sans 14")) - else: - lbl.modify_font(pango.FontDescription("sans 18")) - - #Display Main Window - self.window = self.builder.get_object("MainWindow") - self.window.connect("destroy", self.shutdown) - self.window.hide() - - def show(self): - """Start the polling thread, then show the window""" - if self.cardChecker is None: - self.cardChecker = cardChecker(self.lbl_cardStatus, self.img_cardStatus, - gui_globals.ePA_ATR) - gobject.idle_add(self.cardChecker.start) - self.window.show_all() - - def set_chat(self, chat): - self.chat = chat - - def shutdown(self, widget): - """Stop the cardChecker thread before exiting the application""" - if self.cardChecker is not None: - self.cardChecker.stop() - self.cardChecker.join() - gtk.main_quit() - - def digit_clicked(self, widget): - """We indicate the ammount of digits with underscores - For every digit that is enterd we replace one underscore with a star - We only accept secret_len digits and ignore every additional digit""" - digit = widget.get_label() - assert digit.isdigit() - txt = self.output.get_text() - if len(self.pin) < self.secret_len: -# self.output.set_text(txt.replace("_", digit, 1)) - idx = txt.find('_') - output = txt[:idx] + digit + txt[idx+1:] - self.output.set_text(output) - gobject.timeout_add(750, self.hide_digits, idx) - self.pin += digit - - def hide_digits(self, idx): - """Change character number idx of self.output text to a '*' """ - output = "" - txt = self.output.get_text() - if txt[idx].isdigit(): - output = txt[:idx] + '*' + txt[idx+1:] - self.output.set_text(output) - return False - - def btnOk_clicked(self, widget): - """Pass the entered secret to pace-tool. If pace-tool is run - sucessfully exit, otherwise restart the PIN entry""" - - env_args = os.environ - - #cmd contains the command and all the parameters for our subproccess - cmd = ["pace-tool"] - - #We have to select the type of secret to use via a command line - #parameter and provide the actual secret via an environment variable - if self.secret == "pin" or self.secret == "transport": - cmd.append("--pin") - env_args["PIN"] = self.pin - elif self.secret == "can": - cmd.append("--can") - env_args["CAN"] = self.pin - elif self.secret == "puk": - cmd.append("--puk") - env_args["PUK"] = self.pin - else: - raise ValueError("Unknown secret type: %s" % self.secret) - - #If we have a CHAT, we pass it to pace-tool - if (self.chat): -# cmd.append("--chat=" + self.chat) - print "--chat=" + self.chat - - cmd.append("-v") - - #Try to call pace-tool. This is a blocking call. An animation is being - #shown while the subprocess is running - try: - #Stop polling the card while PACE is running - self.cardChecker.pause() - proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, env=env_args, - close_fds=True) - except OSError: - popup = MsgBox(self.window, "pace-tool wurde nicht gefunden", - "error", gtk.DIALOG_DESTROY_WITH_PARENT) - popup.run() - popup.destroy() - self.cardChecker.resume() #Restart cardChecker - return - - #Show the animation to indicate that the program is not dead - waiting = gtk.Window(gtk.WINDOW_POPUP) - animation = gtk.gdk.PixbufAnimation(IMAGES["wait"]) - img = gtk.Image() - img.set_from_animation(animation) - waiting.add(img) - waiting.set_position(gtk.WIN_POS_CENTER_ALWAYS) - waiting.set_modal(True) - waiting.set_transient_for(self.window) - waiting.set_decorated(False) - waiting.show_all() - - #Try to keep the GUI responsive by taking care of the event queue - line = proc.stdout.readline() - while line: - while gtk.events_pending(): - gtk.main_iteration() - line = proc.stdout.readline() - - #Get the return value of the pace-tool process - ret = proc.poll() - waiting.destroy() - self.cardChecker.resume() - - if (ret == 0): - popup = MsgBox(self.window, "Pin wurde korrekt eingegeben", "apply", - gtk.DIALOG_DESTROY_WITH_PARENT) - popup.run() - popup.destroy() - #XXX: Actually we should return to the application that started - #the PIN entry - self.shutdown(None) - else: - popup = MsgBox(self.window, "PIN wurde falsch eingegeben", "error", - gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT) - popup.run() - popup.destroy() - self.output.set_text(self.secret_len * "_") - self.pin = "" - - def btnDel_clicked(self, widget): - """Remove one digit from the pin and replace the last * in the output - field with an underscore""" - self.pin = self.pin[:-1] - num_digits = len(self.pin) - output = num_digits * '*' + (self.secret_len - num_digits) * "_" - self.output.set_text(output) - -class cardChecker(Thread): - """ This class searches for a card with a given ATR and displays - wether or not using a label and an image """ - - def __init__(self, lbl, img, atr, intervall=1): - Thread.__init__(self) - self._finished = Event() - self._paused = Event() - self.lbl = lbl - self.img = img - self.target_atr = atr - self.intervall = intervall - - def _check_card(self): - """ - Actually this method should make use of pyscard, but I couldn't make - it run on the OpenMoko yet. Therefor we call opensc-tool instead, which - leads to higher delays """ - - proc = subprocess.Popen(["opensc-tool", "--atr"], - stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True) - - line = proc.stdout.readline().rstrip() - if line == self.target_atr: - gobject.idle_add(self.lbl.set_label, STR_CARD_FOUND) - gobject.idle_add(self.img.set_from_file, IMAGES["apply"]) - else: - gobject.idle_add(self.lbl.set_label, STR_NO_CARD) - gobject.idle_add(self.img.set_from_file, IMAGES["error"]) - - def run(self): - """Main loop: Poll the card if the thread is not paused or finished""" - while (True): - if self._finished.isSet(): - return - if self._paused.isSet(): - continue - self._check_card() - self._finished.wait(self.intervall) - - def stop(self): - self._finished.set() - - def pause(self): - self._paused.set() - - def resume(self): - self._paused.clear() - -if __name__ == "__main__": - gobject.threads_init() - CertificateDescriptionWindow(gui_globals.TEST_DESCRIPTION, - gui_globals.TEST_CVC) - gtk.main() diff --git a/pace-gui/src/pace_gui_globals.py.in b/pace-gui/src/pace_gui_globals.py.in deleted file mode 100644 index 3d5a57f..0000000 --- a/pace-gui/src/pace_gui_globals.py.in +++ /dev/null @@ -1,91 +0,0 @@ -#coding: utf-8 - -name = "pace-gui" -version = "@VERSION@" -image_dir = "@prefix@/share/" + name -glade_dir = "@prefix@/share/" + name - -GLADE_FILE = glade_dir + "/pinpad.glade" - -STR_NO_CARD = "Ausweis" -STR_CARD_FOUND = "Ausweis" - -FILE_NO_CARD = image_dir + "/error.png" -FILE_CARD_FOUND = image_dir + "/apply.png" - -ePA_ATR = "3b:84:80:01:00:00:90:00:95" - -#The following strings are used as help texts for eID access rights -DOC_AGE_VERIFICATION = u"Die Altersverifikation erlaubt die Überprüfung, ob ein Nutzer alt genug ist um einen Dienst zu nutzen, ohne sein Geburtsdatum zu übertragen" -DOC_COMMUNITY_ID_VERIFICATION = u"Die Wohnort Verifikation erlaubt die Überprüfung, ob ein Nutzer in einem bestimmten Gebiet wohnt, ohne seine tatsächliche Adresse zu übertragen" -DOC_RESTRICTED_ID = u"Die Pseudonymfunktion macht einen Nutzer für den Dienstanbieter wiedererkennbar, ohne weitere Daten von ihm zu erfassen" -DOC_PRIVILEGED_TERMINAL = u"Ein privilegiertes Terminal darf auf den Kartenindividuellen Schlüssel des Ausweis zugreifen" -DOC_CAN_ALLOWED = u"Das Terminal darf die Funktionen des Ausweises mit der CAN nutzen" -DOC_PIN_MANAGMENT = u"Das Terminal darf die eID-Funktion (de-)aktivieren und eine neue eID-PIN setzen" -DOC_INSTALL_CERTIFICATE = u"Der Dienstanbieter darf ein Zertifikat im Ausweis installieren" -DOC_INSTALL_QC = u"Der Dienstanbieter darf ein qualifiziertes Zertifikat im Ausweis installieren" -DOC_DOCUMENT_TYPE = u"Der Dienstanbieter darf den Dokumenttyp (z.B. Personalausweis oder Aufenthaltstitel) auslesen" -DOC_STATE = u"Der Dienstanbieter darf die Staatzugehörigkeit des Ausweisinhabers lesen" -DOC_EXPIRY_DATE = u"Der Dienstanbieter darf das Ablaufdatum des Ausweises auslesen" - -IMAGES = { - "apply": image_dir + "/apply.png", - "error": image_dir + "/error.png", - "info" : image_dir + "/info.png", - "wait" : image_dir + "/wait.gif" -} - -#Authentication Terminal CHAT -AT_CHAT_STRINGS = { - #Age Verification - 0: ("Altersverifikation", DOC_AGE_VERIFICATION), - #Community ID Verification - 1: (u"Gemeindeschlüssel Verifikation", DOC_COMMUNITY_ID_VERIFICATION), - #Restrictied Identification - 2: ("Pseudonymfunktion", DOC_RESTRICTED_ID), - #Privileged Terminal - 3: ("Priviligiertes Terminal", DOC_PRIVILEGED_TERMINAL), - #CAN allowed - 4: ("Verwendung der CAN", DOC_CAN_ALLOWED), - 5: ("PIN Managment", DOC_PIN_MANAGMENT), - #Install Certificate - 6: ("Zertifikat einspielen", DOC_INSTALL_CERTIFICATE), - #Install Qualified Certificate - 7: ("Qualifiziertes Zertifikat einspielen", DOC_INSTALL_QC), - #Read DG 1 - 8: ("Dokumenttyp", DOC_DOCUMENT_TYPE), - #Read DG 2 - 9: ("Ausstellender Staat", DOC_STATE), - 10: ("Ablaufdatum", DOC_EXPIRY_DATE), #Read DG 3 - 11: ("Vorname", None), #Read DG 4 - 12: ("Nachname", None), #Read DG 5 - 13: (u"Künstlername", None), #Read DG 6 - 14: ("Doktorgrad", None), #Read DG 7 - 15: ("Geburtsdatum", None), #Read DG 8 - 16: ("Geburtsort", None), #Read DG 9 - 17: (u"Ungültig", None), #Read DG 10 - 18: (u"Ungültig", None), #Read DG 11 - 19: (u"Ungültig", None),#Read DG 12 - 20: (u"Ungültig", None),#Read DG 13 - 21: (u"Ungültig", None),#Read DG 14 - 22: (u"Ungültig", None),#Read DG 15 - 23: (u"Ungültig", None),#Read DG 16 - 24: ("Adresse", None), #Read DG 17 - 25: (u"Gemeindeschlüssel lesen", None),#Read DG 18 - 26: (u"Ungültig", None),#Read DG 19 - 27: (u"Ungültig", None),#Read DG 20 - 28: (u"Ungültig", None),#Read DG 21 - 29: (u"Ungültig", None),#RFU - 30: (u"Ungültig", None),#RFU - 31: (u"Ungültig", None),#RFU - 32: (u"Ungültig", None),#RFU - 33: (u"Ungültig", None),#Write DG 21 - 34: (u"Ungültig", None),#Write DG 20 - 35: (u"Ungültig", None),#Write DG 19 - 36: (u"Gemeindeschlüssel schreiben", None),#Write DG 18 - 37: (u"Adresse schreiben", None)#Write DG 17" -} - -TEST_CVC = "\x7F\x21\x82\x01\x41\x7F\x4E\x81\xFA\x5F\x29\x01\x00\x42\x0D\x5A\x5A\x44\x56\x43\x41\x41\x54\x41\x30\x30\x30\x33\x7F\x49\x4F\x06\x0A\x04\x00\x7F\x00\x07\x02\x02\x02\x02\x03\x86\x41\x04\x19\xD1\x75\x45\xD3\xFE\x0B\x34\x3E\x7E\xE2\xAE\x4E\x2B\xC9\x2D\x51\x35\x1C\xC1\x17\xA4\x7F\xA9\x51\x9A\xDB\x1E\x40\x5E\xE6\xB8\x12\x12\x80\xBC\xC2\xFF\xF0\x35\x7A\x19\x7D\xE7\x39\xA7\xFD\x2E\xF0\x22\x10\xEF\x34\x3C\xDB\xE7\x9E\xF9\x4B\x8E\x28\x59\x1B\xB9\x5F\x20\x0B\x5A\x5A\x44\x4B\x42\x32\x30\x30\x30\x30\x52\x7F\x4C\x12\x06\x09\x04\x00\x7F\x00\x07\x03\x01\x02\x02\x53\x05\x00\x03\x01\xDF\x04\x5F\x25\x06\x01\x00\x00\x02\x01\x07\x5F\x24\x06\x01\x00\x00\x03\x03\x01\x65\x5E\x73\x2D\x06\x09\x04\x00\x7F\x00\x07\x03\x01\x03\x01\x80\x20\x75\xE0\xC4\xAC\x36\xC2\x5A\x33\xAC\x0E\x9A\x75\xEB\x79\x2A\x72\xF3\x31\xA5\x1E\x28\x63\x4E\xCC\x2E\xD6\x2E\x54\xF3\xC6\x93\xDA\x73\x2D\x06\x09\x04\x00\x7F\x00\x07\x03\x01\x03\x02\x80\x20\x18\x12\x65\x74\x49\xFC\xF1\xD3\xDA\xD8\x3D\x13\x14\x29\x17\x5C\x61\x8B\x21\xBA\xF0\xAF\x44\xAC\xE3\x8C\xB2\xC1\x2C\xEB\x2A\x56\x5F\x37\x40\x54\x0F\x85\x09\x12\xAB\xD3\x51\xF8\xF5\x56\x9B\x53\x4A\x5C\x8F\x64\x54\x5B\x51\xA7\x34\x70\xBE\x5A\xD2\x89\xC1\x9A\x5E\x13\x52\x53\xD3\xBB\x15\x52\x26\x21\x7B\x41\xE7\xF0\x68\xB3\x52\x3F\x3A\x63\x92\x22\xAF\x2B\x62\x8C\x39\x7D\x4F\xD4\x02\x1E\xDE\x00\xDC" - -TEST_DESCRIPTION = "\x30\x82\x01\x90\x06\x0A\x04\x00\x7F\x00\x07\x03\x01\x03\x01\x01\xA1\x16\x0C\x14\x42\x75\x6E\x64\x65\x73\x64\x72\x75\x63\x6B\x65\x72\x65\x69\x20\x47\x6D\x62\x48\xA2\x24\x13\x22\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x62\x75\x6E\x64\x65\x73\x64\x72\x75\x63\x6B\x65\x72\x65\x69\x2E\x64\x65\x2F\x64\x76\x63\x61\xA3\x18\x0C\x16\x44\x65\x75\x74\x73\x63\x68\x65\x20\x4B\x72\x65\x64\x69\x74\x62\x61\x6E\x6B\x20\x41\x47\xA4\x13\x13\x11\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x64\x6B\x62\x2E\x64\x65\xA5\x82\x01\x13\x0C\x82\x01\x0F\x54\x61\x75\x62\x65\x6E\x73\x74\x72\x2E\x20\x37\x2D\x39\x0D\x0A\x31\x30\x31\x31\x37\x20\x42\x65\x72\x6C\x69\x6E\x0D\x0A\x69\x6E\x66\x6F\x40\x64\x6B\x62\x2E\x64\x65\x0D\x0A\x45\x72\xC3\xB6\x66\x66\x6E\x75\x6E\x67\x20\x65\x69\x6E\x65\x73\x20\x4B\x6F\x6E\x74\x6F\x73\x0D\x0A\x42\x65\x72\x6C\x69\x6E\x65\x72\x20\x42\x65\x61\x75\x66\x74\x72\x61\x67\x74\x65\x72\x20\x66\xC3\xBC\x72\x20\x44\x61\x74\x65\x6E\x73\x63\x68\x75\x74\x7A\x20\x75\x6E\x64\x20\x49\x6E\x66\x6F\x72\x6D\x61\x74\x69\x6F\x6E\x73\x66\x72\x65\x69\x68\x65\x69\x74\x2C\x20\x41\x6E\x20\x64\x65\x72\x20\x55\x72\x61\x6E\x69\x61\x20\x34\x2D\x31\x30\x2C\x20\x31\x30\x37\x38\x37\x20\x42\x65\x72\x6C\x69\x6E\x2C\x20\x30\x33\x30\x2F\x31\x33\x20\x38\x38\x39\x2D\x30\x2C\x20\x6D\x61\x69\x6C\x62\x6F\x78\x40\x64\x61\x74\x65\x6E\x73\x63\x68\x75\x74\x7A\x2D\x62\x65\x72\x6C\x69\x6E\x2E\x64\x65\x2C\x20\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x64\x61\x74\x65\x6E\x73\x63\x68\x75\x74\x7A\x2D\x62\x65\x72\x6C\x69\x6E\x2E\x64\x65\x0D\x0A\x45\x72\xC3\xB6\x66\x66\x6E\x75\x6E\x67\x20\x65\x69\x6E\x65\x73\x20\x4B\x6F\x6E\x74\x6F\x73\x0D\x0A" diff --git a/pace-gui/src/pinpad.glade b/pace-gui/src/pinpad.glade deleted file mode 100644 index aab5264..0000000 --- a/pace-gui/src/pinpad.glade +++ /dev/null @@ -1,272 +0,0 @@ - - - - - - True - Pinpad - center - 480 - 586 - OpenPACElogo.png - - - - - True - - - True - <span font_weight="bold" font="11">Bitte PIN eingeben</span> - True - - - False - 0 - - - - - True - - - False - 1 - - - - - True - False - False - 10 - - 0 - True - out - True - False - - - False - 5 - 2 - - - - - True - - - False - 3 - - - - - True - - - True - 0.89999997615814209 - <span fgcolor="red" font="12">Ausweis</span> - True - - - 0 - - - - - True - 0.10000000149011612 - error.png - - - 1 - - - - - 4 - - - - - True - 4 - 3 - True - - - 1 - True - True - True - - - - - - 4 - True - True - True - - - - 1 - 2 - - - - - 7 - True - True - True - - - - 2 - 3 - - - - - Entf - True - True - True - - - - 3 - 4 - - - - - 2 - True - True - True - - - - 1 - 2 - - - - - 5 - True - True - True - - - - 1 - 2 - 1 - 2 - - - - - 8 - True - True - True - - - - 1 - 2 - 2 - 3 - - - - - 0 - True - True - True - - - - 1 - 2 - 3 - 4 - - - - - 3 - True - True - True - - - - 2 - 3 - - - - - 6 - True - True - True - - - - 2 - 3 - 1 - 2 - - - - - 9 - True - True - True - - - - 2 - 3 - 2 - 3 - - - - - Ok - True - True - True - - - - 2 - 3 - 3 - 4 - - - - - 5 - - - - - -