Group :: Security/Networking
RPM: token-manager
Main Changelog Spec Patches Sources Download Gear Bugs and FR Repocop
Patch: token-manager-port-to-python3-and-PyQt5.patch
Download
Download
diff --git a/token-manager.py b/token-manager.py
index e51466d..21930ce 100755
--- a/token-manager.py
+++ b/token-manager.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
@@ -41,8 +41,10 @@ THE SOFTWARE.
"""
import os
import sys
-from PyQt4 import QtCore
-from PyQt4 import QtGui
+from PyQt5 import QtCore
+from PyQt5 import QtGui
+from PyQt5 import QtWidgets
+from PyQt5.QtGui import QIcon, QPixmap, QColor
import subprocess
import platform
import re
@@ -55,7 +57,7 @@ except AttributeError:
return s
try:
- _encoding = QtGui.QApplication.UnicodeUTF8
+ _encoding = QtWidgets.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
@@ -66,12 +68,12 @@ try:
:param disambig:
:return:
"""
- return QtGui.QApplication.translate(context, text, disambig, _encoding)
+ return QtWidgets.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
- return QtGui.QApplication.translate(context, text, disambig)
+ return QtWidgets.QApplication.translate(context, text, disambig)
-qt_resource_data = "\
+qt_resource_data = b"\
\x00\x00\x01\x64\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
@@ -173,7 +175,7 @@ qt_resource_data = "\
\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
"
-qt_resource_name = "\
+qt_resource_name = b"\
\x00\x06\
\x07\x03\x7d\xc3\
\x00\x69\
@@ -192,7 +194,7 @@ qt_resource_name = "\
\x00\x6f\x00\x6f\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\
"
-qt_resource_struct = "\
+qt_resource_struct = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\
\x00\x00\x00\x50\x00\x00\x00\x00\x00\x01\x00\x00\x03\x60\
@@ -215,8 +217,6 @@ if platform.machine() == 'x86_64':
arch = 'amd64'
elif platform.machine() == 'i686':
arch = 'ia32'
-elif platform.machine() == 'e2k':
- arch = 'e2k64'
else:
exit(-1)
@@ -224,7 +224,7 @@ else:
def get_cspversion():
csptest = subprocess.Popen(['/opt/cprocsp/bin/%s/csptest' % arch, '-keyset', '-verifycontext'],
stdout=subprocess.PIPE)
- output = csptest.communicate()[0].split('\n')[0]
+ output = csptest.communicate()[0].decode().split('\n')[0]
r = re.search(r'v([0-9.]*[0-9]+)\ (.+)\ Release Ver\:([0-9.]*[0-9]+)\ OS\:([a-zA-z]+)', output)
return r.group(1), r.group(2), r.group(3), r.group(4)
@@ -235,20 +235,20 @@ def versiontuple(v):
def get_tokens():
list_pcsc = subprocess.Popen(['/opt/cprocsp/bin/%s/list_pcsc' % arch], stdout=subprocess.PIPE)
- output = list_pcsc.communicate()[0]
+ output = list_pcsc.communicate()[0].decode()
if 'ERROR' in output:
- return u'<ключевых носителей не обнаружено>', 1
+ return '<ключевых носителей не обнаружено>', 1
m = re.findall(r'(?:available reader: |^)(.+)', output, re.MULTILINE)
return m, 0
def get_token_serial(token):
opensc_tool = subprocess.Popen(['/usr/bin/opensc-tool', '--serial', '-r', token], stdout=subprocess.PIPE)
- output = opensc_tool.communicate()[0]
+ output = opensc_tool.communicate()[0].decode()
try:
serial = '%010d' % int(output[:11].replace(' ', ''), 16)
except:
- return u'б/н'
+ return 'б/н'
if not opensc_tool.returncode:
return serial
@@ -256,10 +256,10 @@ def get_token_serial(token):
def get_token_certs(token):
csptest = subprocess.Popen(['/opt/cprocsp/bin/%s/csptest' % arch, '-keyset', '-enum_cont', '-unique', '-fqcn',
'-verifyc'], stdout=subprocess.PIPE)
- output = csptest.communicate()[0]
+ output = csptest.communicate()[0].decode('cp1251', 'ignore')
certs = []
if csptest.returncode:
- return u'Ошибка', 1
+ return 'Ошибка', 1
for line in output.split("\n"):
if token in line:
certs.append(line)
@@ -269,14 +269,14 @@ def get_token_certs(token):
def get_store_certs(store):
if store == 'root':
certmgr = subprocess.Popen(['/opt/cprocsp/bin/%s/certmgr' % arch, '-list', '-store', 'root'], stdout=subprocess.PIPE)
- output = certmgr.communicate()[0]
+ output = certmgr.communicate()[0].decode()
m = re.findall(r'(\d+)-{7}\nIssuer.*?: (.+?)\n.*?Subject.*?: (.+?)\n.*?Serial.*?: (0x\w+?)\nSHA1 Hash.*?(\w+?)\n.*?Not valid before.*?(\d.+?)UTC\nNot valid after.*?(\d.+?)UTC', output, re.MULTILINE + re.DOTALL)
else:
if versiontuple(get_cspversion()[2]) >= versiontuple("4.0.9708"):
certmgr = subprocess.Popen(['/opt/cprocsp/bin/%s/certmgr' % arch, '-list', '-store', store], stdout=subprocess.PIPE)
else:
certmgr = subprocess.Popen(['/opt/cprocsp/bin/%s/certmgr' % arch, '-list', '-verbose', '-store', store], stdout = subprocess.PIPE)
- output = certmgr.communicate()[0]
+ output = certmgr.communicate()[0].decode()
m = re.findall(r'(\d+)-{7}\nIssuer.*?: (.+?)\n.*?Subject.*?: (.+?)\n.*?Serial.*?: (0x\w+?)\nSHA1 Hash.*?(\w+?)\n.*?Not valid before.*?(\d.+?)UTC\nNot valid after.*?(\d.+?)UTC.+?Extended Key Usage.*?([\d\.\s]+)\n', output, re.MULTILINE + re.DOTALL)
return m
@@ -286,7 +286,7 @@ def list_cert(cert):
certmgr = subprocess.Popen(['/opt/cprocsp/bin/%s/certmgr' % arch, '-list', '-cont', cert], stdout=subprocess.PIPE)
else:
certmgr = subprocess.Popen(['/opt/cprocsp/bin/%s/certmgr' % arch, '-list', '-verbose', '-cont', cert], stdout=subprocess.PIPE)
- output = certmgr.communicate()[0]
+ output = certmgr.communicate()[0].decode()
m = re.findall(r'(\d+)-{7}\nIssuer.*?: (.+?)\n.*?Subject.*?: (.+?)\n.*?Serial.*?: (0x.+?)\nSHA1 Hash.*?(.+?)\n.*?Not valid before.*?(\d.+?)UTC\nNot valid after.*?(\d.+?)UTC.+?Extended Key Usage.*?([\d\.\s]+)\n',
output, re.MULTILINE + re.DOTALL)
return m
@@ -295,44 +295,44 @@ def list_cert(cert):
def inst_cert(cert):
certmgr = subprocess.Popen(['/opt/cprocsp/bin/%s/certmgr' % arch, '-inst', '-store', 'uMy', '-cont',
cert], stdout=subprocess.PIPE)
- output = certmgr.communicate()[0]
+ output = certmgr.communicate()[0].decode()
if certmgr.returncode:
return output.split("\n")[-1]
- return u"Сертификат успешно установлен"
+ return "Сертификат успешно установлен"
def inst_cert_from_file(filepath):
certmgr = subprocess.Popen(['/opt/cprocsp/bin/%s/certmgr' % arch, '-inst', '-store', 'uMy', '-file',
filepath], stdout=subprocess.PIPE)
- output = certmgr.communicate()[0]
+ output = certmgr.communicate()[0].decode()
if certmgr.returncode:
return output.split("\n")[-1]
- return u"Сертификат успешно установлен"
+ return "Сертификат успешно установлен"
def del_cont(cert):
certmgr = subprocess.Popen(['/opt/cprocsp/bin/%s/certmgr' % arch, '-delete', '-cont', cert], stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
- output = certmgr.communicate()[0]
+ output = certmgr.communicate()[0].decode()
if certmgr.returncode:
return output
- return u"Сертификат успешно удален"
+ return "Сертификат успешно удален"
def del_store_cert(cert_index, store):
certmgr = subprocess.Popen(['/opt/cprocsp/bin/%s/certmgr' % arch, '-delete', '-store', store],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE, stdin=subprocess.PIPE)
- output = certmgr.communicate(cert_index)[0]
+ output = certmgr.communicate(cert_index.encode())[0].decode()
if certmgr.returncode:
return output
- return u"Сертификат успешно удален"
+ return "Сертификат успешно удален"
def set_license(cpro_license):
cpconfig = subprocess.Popen(['/usr/bin/cpconfig-%s' % arch, '-license', '-set', cpro_license],
stdout=subprocess.PIPE)
- output = cpconfig.communicate()[0]
+ output = cpconfig.communicate()[0].decode()
if cpconfig.returncode:
return output.split("\n")[-1], 1
return None, 0
@@ -340,14 +340,14 @@ def set_license(cpro_license):
def get_license():
cpconfig = subprocess.Popen(['/opt/cprocsp/sbin/%s/cpconfig' % arch, '-license', '-view'], stdout=subprocess.PIPE)
- output = cpconfig.communicate()[0]
+ output = cpconfig.communicate()[0].decode()
return output
def install_root_cert(file):
certmgr = subprocess.Popen(['/opt/cprocsp/bin/%s/certmgr' % arch, '-inst', '-store', 'root', '-file', file],
stdout=subprocess.PIPE)
- output = certmgr.communicate()[0]
+ output = certmgr.communicate()[0].decode()
m = re.findall(
r'(\d+)-{7}\nIssuer.*?CN=(.+?)[\n,].*?Subject.*?CN=(.+?)[\n,].*?Serial.*?(0x.+?)\nSHA1 Hash.*?(.+?)\n.*?Not valid before.*?(\d.+?)UTC\nNot valid after.*?(\d.+?)UTC',
output, re.MULTILINE + re.DOTALL)
@@ -357,7 +357,7 @@ def install_root_cert(file):
def list_root_certs():
certmgr = subprocess.Popen(['/opt/cprocsp/bin/%s/certmgr' % arch, '-list', '-store', 'root'],
stdout=subprocess.PIPE)
- output = certmgr.communicate()[0]
+ output = certmgr.communicate()[0].decode()
m = re.findall(
r'(\d+)-{7}\nIssuer.*?CN=(.+?)[\n,].*?Subject.*?CN=(.+?)[\n,].*?Serial.*?(0x.+?)\nSHA1 Hash.*?(.+?)\n.*?Not valid before.*?(\d.+?)UTC\nNot valid after.*?(\d.+?)UTC',
output,
@@ -368,7 +368,7 @@ def list_root_certs():
def install_crl(file):
certmgr = subprocess.Popen(['/opt/cprocsp/bin/%s/certmgr' % arch, '-inst', '-crl', '-store', 'root', '-file', file],
stdout=subprocess.PIPE)
- output = certmgr.communicate()[0]
+ output = certmgr.communicate()[0].decode()
m = re.findall(r'(\d+)-{7}.+?CN=(.+?)[\n,].*?ThisUpdate: (\d.+?)UTC\nNextUpdate: (\d.+?)UTC', output,
re.MULTILINE + re.DOTALL)
return m
@@ -377,7 +377,7 @@ def install_crl(file):
def list_crls():
certmgr = subprocess.Popen(['/opt/cprocsp/bin/%s/certmgr' % arch, '-list', '-crl', '-store', 'root'],
stdout=subprocess.PIPE)
- output = certmgr.communicate()[0]
+ output = certmgr.communicate()[0].decode()
m = re.findall(r'(\d+)-{7}.+?CN=(.+?)[\n,].*?ThisUpdate: (\d.+?)UTC\nNextUpdate: (\d.+?)UTC', output,
re.MULTILINE + re.DOTALL)
return m
@@ -387,7 +387,7 @@ def change_user_pin(old_pin, new_pin):
pkcs15tool = subprocess.Popen(
['pkcs15-tool', '--auth-id', '02', '--change-pin', '--pin', old_pin, '--new-pin', new_pin],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
- output = pkcs15tool.communicate()[0]
+ output = pkcs15tool.communicate()[0].decode()
tries = output.split('\n')[1].split(': ')[-1]
if tries:
return False, tries
@@ -410,7 +410,7 @@ def init_token():
def check_user_pin():
pkcs15tool = subprocess.Popen(['/usr/bin/pkcs15-tool', '-D'], stdout=subprocess.PIPE)
- output = pkcs15tool.communicate()[0]
+ output = pkcs15tool.communicate()[0].decode()
search = 'User PIN'
s = re.search(search, output)
if s:
@@ -430,7 +430,7 @@ def add_ini(pin, cont_id):
def set_as_reader(token):
cpconfig = subprocess.Popen(['/usr/bin/cpconfig-%s' % arch, '-hardware', 'reader', '-add', token],
stdout=subprocess.PIPE)
- output = cpconfig.communicate()[0]
+ output = cpconfig.communicate()[0].decode()
if "Succeeded, code:0x0" in output:
return True
else:
@@ -438,49 +438,49 @@ def set_as_reader(token):
def translate_cert_fields(fieldname):
- fields = {'1.2.840.113549.1.9.2': u'неструктурированное имя',
- '1.2.643.5.1.5.2.1.2': u'код должности',
- '1.2.643.5.1.5.2.1.1': u'код структурного подразделения ФССП России (ВКСП)',
- '1.2.643.5.1.5.2.2.1': u'Полномочия публикации обновлений ПО',
- '1.2.643.5.1.5.2.2.2': u'Подсистема АИС ФССП России',
- '1.2.643.5.1.24.2.9': u'Главный судебный пристав Российской Федерации',
- '1.2.643.5.1.24.2.10': u'Заместитель главного судебного пристава Российской Федерации',
- '1.2.643.5.1.24.2.11': u'Главный судебный пристав субъекта Российской Федерации',
- '1.2.643.5.1.24.2.12': u'Заместитель главного судебного пристава субъекта Российской Федерации',
- '1.2.643.5.1.24.2.13': u'Старший судебный пристав',
- '1.2.643.5.1.24.2.14': u'Судебный пристав-исполнитель',
- '1.2.643.100.2.1': u'Доступ к СМЭВ (ФЛ)',
- '1.2.643.100.2.2': u'Доступ к СМЭВ (ЮЛ)',
- '1.2.643.2.2.34.2': u'Временный доступ к Центру Регистрации',
- '1.2.643.2.2.34.4': u'Администратор Центра Регистрации КриптоПро УЦ',
- '1.2.643.2.2.34.5': u'Оператор Центра Регистрации КриптоПро УЦ',
- '1.2.643.2.2.34.6': u'Пользователь центра регистрации КриптоПро УЦ',
- '1.2.643.2.2.34.7': u'Центр Регистрации КриптоПро УЦ',
- '1.3.6.1.5.5.7.3.1': u'Проверка подлинности сервера',
- '1.3.6.1.5.5.7.3.2': u'Проверка подлинности клиента',
- '1.3.6.1.5.5.7.3.4': u'Защищенная электронная почта',
- '1.3.6.1.5.5.7.3.8': u'Установка штампа времени',
- '1.2.643.3.61.502710.1.6.3.4.1.1': u'Администратор организации',
- '1.2.643.3.61.502710.1.6.3.4.1.2': u'Уполномоченный специалист',
- '1.2.643.3.61.502710.1.6.3.4.1.3': u'Должностное лицо с правом подписи контракта',
- '1.2.643.3.61.502710.1.6.3.4.1.4': u'Специалист с правом направления проекта контракта участнику размещения заказа',
- 'CN': u'общее имя',
- 'SN': u'фамилия',
- 'G': u'имя и отчество',
- 'I': u'инициалы',
- 'T': u'должность',
- 'OU': u'структурное подразделение',
- 'O': u'организация',
- 'L': u'населенный пункт',
- 'S': u'субъект РФ',
- 'C': u'страна',
- 'E': u'адрес электронной почты',
- 'INN': u'ИНН',
- 'OGRN': u'ОГРН',
- 'SNILS': u'СНИЛС',
- 'STREET': u'название улицы, номер дома',
- 'StreetAddress': u'адрес места нахождения',
- 'Unstructured Name': u'неструктурированное имя'}
+ fields = {'1.2.840.113549.1.9.2': 'неструктурированное имя',
+ '1.2.643.5.1.5.2.1.2': 'код должности',
+ '1.2.643.5.1.5.2.1.1': 'код структурного подразделения ФССП России (ВКСП)',
+ '1.2.643.5.1.5.2.2.1': 'Полномочия публикации обновлений ПО',
+ '1.2.643.5.1.5.2.2.2': 'Подсистема АИС ФССП России',
+ '1.2.643.5.1.24.2.9': 'Главный судебный пристав Российской Федерации',
+ '1.2.643.5.1.24.2.10': 'Заместитель главного судебного пристава Российской Федерации',
+ '1.2.643.5.1.24.2.11': 'Главный судебный пристав субъекта Российской Федерации',
+ '1.2.643.5.1.24.2.12': 'Заместитель главного судебного пристава субъекта Российской Федерации',
+ '1.2.643.5.1.24.2.13': 'Старший судебный пристав',
+ '1.2.643.5.1.24.2.14': 'Судебный пристав-исполнитель',
+ '1.2.643.100.2.1': 'Доступ к СМЭВ (ФЛ)',
+ '1.2.643.100.2.2': 'Доступ к СМЭВ (ЮЛ)',
+ '1.2.643.2.2.34.2': 'Временный доступ к Центру Регистрации',
+ '1.2.643.2.2.34.4': 'Администратор Центра Регистрации КриптоПро УЦ',
+ '1.2.643.2.2.34.5': 'Оператор Центра Регистрации КриптоПро УЦ',
+ '1.2.643.2.2.34.6': 'Пользователь центра регистрации КриптоПро УЦ',
+ '1.2.643.2.2.34.7': 'Центр Регистрации КриптоПро УЦ',
+ '1.3.6.1.5.5.7.3.1': 'Проверка подлинности сервера',
+ '1.3.6.1.5.5.7.3.2': 'Проверка подлинности клиента',
+ '1.3.6.1.5.5.7.3.4': 'Защищенная электронная почта',
+ '1.3.6.1.5.5.7.3.8': 'Установка штампа времени',
+ '1.2.643.3.61.502710.1.6.3.4.1.1': 'Администратор организации',
+ '1.2.643.3.61.502710.1.6.3.4.1.2': 'Уполномоченный специалист',
+ '1.2.643.3.61.502710.1.6.3.4.1.3': 'Должностное лицо с правом подписи контракта',
+ '1.2.643.3.61.502710.1.6.3.4.1.4': 'Специалист с правом направления проекта контракта участнику размещения заказа',
+ 'CN': 'общее имя',
+ 'SN': 'фамилия',
+ 'G': 'имя и отчество',
+ 'I': 'инициалы',
+ 'T': 'должность',
+ 'OU': 'структурное подразделение',
+ 'O': 'организация',
+ 'L': 'населенный пункт',
+ 'S': 'субъект РФ',
+ 'C': 'страна',
+ 'E': 'адрес электронной почты',
+ 'INN': 'ИНН',
+ 'OGRN': 'ОГРН',
+ 'SNILS': 'СНИЛС',
+ 'STREET': 'название улицы, номер дома',
+ 'StreetAddress': 'адрес места нахождения',
+ 'Unstructured Name': 'неструктурированное имя'}
try:
return fields[fieldname]
except KeyError:
@@ -491,108 +491,107 @@ class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(413, 388)
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Preferred)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
MainWindow.setSizePolicy(sizePolicy)
MainWindow.setMinimumSize(QtCore.QSize(344, 0))
MainWindow.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
- icon = QtGui.QIcon()
- icon.addPixmap(QtGui.QPixmap(_fromUtf8("/usr/share/pixmaps/token-manager.png")), QtGui.QIcon.Normal,
- QtGui.QIcon.Off)
+ icon = QIcon()
+ icon.addPixmap(QPixmap(_fromUtf8("/usr/share/pixmaps/token-manager.png")), QIcon.Normal, QIcon.Off)
MainWindow.setWindowIcon(icon)
MainWindow.setLayoutDirection(QtCore.Qt.LeftToRight)
MainWindow.setAutoFillBackground(False)
MainWindow.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly)
MainWindow.setDocumentMode(False)
- self.centralwidget = QtGui.QWidget(MainWindow)
+ self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
- self.verticalLayout = QtGui.QVBoxLayout(self.centralwidget)
+ self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
- self.horizontalLayout_3 = QtGui.QHBoxLayout()
+ self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3"))
- self.label = QtGui.QLabel(self.centralwidget)
+ self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setLineWidth(2)
self.label.setObjectName(_fromUtf8("label"))
self.horizontalLayout_3.addWidget(self.label)
- spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_3.addItem(spacerItem)
- self.token_refresh = QtGui.QPushButton(self.centralwidget)
+ self.token_refresh = QtWidgets.QPushButton(self.centralwidget)
self.token_refresh.setObjectName(_fromUtf8("token_refresh"))
self.horizontalLayout_3.addWidget(self.token_refresh)
self.verticalLayout.addLayout(self.horizontalLayout_3)
- self.token_list = QtGui.QListWidget(self.centralwidget)
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Expanding)
+ self.token_list = QtWidgets.QListWidget(self.centralwidget)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.token_list.sizePolicy().hasHeightForWidth())
self.token_list.setSizePolicy(sizePolicy)
- self.token_list.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
+ self.token_list.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
self.token_list.setObjectName(_fromUtf8("token_list"))
self.verticalLayout.addWidget(self.token_list)
- self.horizontalLayout_2 = QtGui.QHBoxLayout()
+ self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
- spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_2.addItem(spacerItem1)
- self.asReader = QtGui.QPushButton(self.centralwidget)
+ self.asReader = QtWidgets.QPushButton(self.centralwidget)
self.asReader.setEnabled(False)
self.asReader.setObjectName(_fromUtf8("asReader"))
self.horizontalLayout_2.addWidget(self.asReader)
- self.cachePIN = QtGui.QPushButton(self.centralwidget)
+ self.cachePIN = QtWidgets.QPushButton(self.centralwidget)
self.cachePIN.setEnabled(False)
self.cachePIN.setObjectName(_fromUtf8("cachePIN"))
self.horizontalLayout_2.addWidget(self.cachePIN)
- self.changePIN = QtGui.QPushButton(self.centralwidget)
+ self.changePIN = QtWidgets.QPushButton(self.centralwidget)
self.changePIN.setEnabled(False)
self.changePIN.setObjectName(_fromUtf8("changePIN"))
self.horizontalLayout_2.addWidget(self.changePIN)
self.verticalLayout.addLayout(self.horizontalLayout_2)
- self.label_2 = QtGui.QLabel(self.centralwidget)
+ self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setObjectName(_fromUtf8("label_2"))
self.verticalLayout.addWidget(self.label_2)
- self.cert_list = QtGui.QListWidget(self.centralwidget)
- self.cert_list.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
+ self.cert_list = QtWidgets.QListWidget(self.centralwidget)
+ self.cert_list.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
self.cert_list.setObjectName(_fromUtf8("cert_list"))
self.verticalLayout.addWidget(self.cert_list)
- self.horizontalLayout = QtGui.QHBoxLayout()
+ self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
- spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem2)
- self.cert_delete = QtGui.QPushButton(self.centralwidget)
+ self.cert_delete = QtWidgets.QPushButton(self.centralwidget)
self.cert_delete.setEnabled(False)
self.cert_delete.setObjectName(_fromUtf8("cert_delete"))
self.horizontalLayout.addWidget(self.cert_delete)
- self.cert_view = QtGui.QPushButton(self.centralwidget)
+ self.cert_view = QtWidgets.QPushButton(self.centralwidget)
self.cert_view.setEnabled(False)
self.cert_view.setObjectName(_fromUtf8("cert_view"))
self.horizontalLayout.addWidget(self.cert_view)
- self.cert_install = QtGui.QPushButton(self.centralwidget)
+ self.cert_install = QtWidgets.QPushButton(self.centralwidget)
self.cert_install.setEnabled(False)
self.cert_install.setObjectName(_fromUtf8("cert_install"))
self.horizontalLayout.addWidget(self.cert_install)
self.verticalLayout.addLayout(self.horizontalLayout)
MainWindow.setCentralWidget(self.centralwidget)
- self.menuBar = QtGui.QMenuBar(MainWindow)
+ self.menuBar = QtWidgets.QMenuBar(MainWindow)
self.menuBar.setGeometry(QtCore.QRect(0, 0, 413, 27))
self.menuBar.setDefaultUp(False)
self.menuBar.setObjectName(_fromUtf8("menuBar"))
- self.operations = QtGui.QMenu(self.menuBar)
+ self.operations = QtWidgets.QMenu(self.menuBar)
self.operations.setObjectName(_fromUtf8("operations"))
MainWindow.setMenuBar(self.menuBar)
- self.add_license = QtGui.QAction(MainWindow)
+ self.add_license = QtWidgets.QAction(MainWindow)
self.add_license.setObjectName(_fromUtf8("add_license"))
- self.install_root_certs = QtGui.QAction(MainWindow)
+ self.install_root_certs = QtWidgets.QAction(MainWindow)
self.install_root_certs.setObjectName(_fromUtf8("install_root_certs"))
- self.install_crl = QtGui.QAction(MainWindow)
+ self.install_crl = QtWidgets.QAction(MainWindow)
self.install_crl.setObjectName(_fromUtf8("install_crl"))
- self.actionAbout = QtGui.QAction(MainWindow)
+ self.actionAbout = QtWidgets.QAction(MainWindow)
self.actionAbout.setObjectName(_fromUtf8("actionAbout"))
- self.view_license = QtGui.QAction(MainWindow)
+ self.view_license = QtWidgets.QAction(MainWindow)
self.view_license.setObjectName(_fromUtf8("view_license"))
- self.view_root = QtGui.QAction(MainWindow)
+ self.view_root = QtWidgets.QAction(MainWindow)
self.view_root.setObjectName(_fromUtf8("view_root"))
- self.view_crl = QtGui.QAction(MainWindow)
+ self.view_crl = QtWidgets.QAction(MainWindow)
self.view_crl.setObjectName(_fromUtf8("view_crl"))
self.operations.addAction(self.add_license)
self.operations.addAction(self.view_license)
@@ -632,19 +631,19 @@ class Ui_cert_view(object):
def setupUi(self, cert_view):
cert_view.setObjectName(_fromUtf8("cert_view"))
cert_view.resize(430, 343)
- self.gridLayout = QtGui.QGridLayout(cert_view)
+ self.gridLayout = QtWidgets.QGridLayout(cert_view)
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
- spacerItem = QtGui.QSpacerItem(323, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ spacerItem = QtWidgets.QSpacerItem(323, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem, 1, 0, 1, 1)
- self.close_cert_view = QtGui.QPushButton(cert_view)
+ self.close_cert_view = QtWidgets.QPushButton(cert_view)
self.close_cert_view.setObjectName(_fromUtf8("close_cert_view"))
self.gridLayout.addWidget(self.close_cert_view, 1, 1, 1, 1)
- self.cert_listview = QtGui.QListWidget(cert_view)
+ self.cert_listview = QtWidgets.QListWidget(cert_view)
self.cert_listview.setObjectName(_fromUtf8("cert_listview"))
self.gridLayout.addWidget(self.cert_listview, 0, 0, 1, 2)
self.retranslateUi(cert_view)
- QtCore.QObject.connect(self.close_cert_view, QtCore.SIGNAL(_fromUtf8("clicked()")), cert_view.close)
+ self.close_cert_view.clicked.connect(cert_view.close)
QtCore.QMetaObject.connectSlotsByName(cert_view)
def retranslateUi(self, cert_view):
@@ -656,22 +655,22 @@ class Ui_cert_list(object):
def setupUi(self, cert_list):
cert_list.setObjectName(_fromUtf8("cert_list"))
cert_list.resize(404, 343)
- self.gridLayout = QtGui.QGridLayout(cert_list)
+ self.gridLayout = QtWidgets.QGridLayout(cert_list)
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
- spacerItem = QtGui.QSpacerItem(323, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ spacerItem = QtWidgets.QSpacerItem(323, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem, 2, 0, 1, 1)
- self.close_cert_list = QtGui.QPushButton(cert_list)
+ self.close_cert_list = QtWidgets.QPushButton(cert_list)
self.close_cert_list.setObjectName(_fromUtf8("close_cert_list"))
self.gridLayout.addWidget(self.close_cert_list, 2, 1, 1, 1)
- self.cert_listview = QtGui.QListWidget(cert_list)
+ self.cert_listview = QtWidgets.QListWidget(cert_list)
self.cert_listview.setObjectName(_fromUtf8("cert_listview"))
self.gridLayout.addWidget(self.cert_listview, 1, 0, 1, 2)
- self.cert_list_filter = QtGui.QLineEdit(cert_list)
+ self.cert_list_filter = QtWidgets.QLineEdit(cert_list)
self.cert_list_filter.setObjectName(_fromUtf8("cert_list_filter"))
self.gridLayout.addWidget(self.cert_list_filter, 0, 0, 1, 2)
self.retranslateUi(cert_list)
- QtCore.QObject.connect(self.close_cert_list, QtCore.SIGNAL(_fromUtf8("clicked()")), cert_list.close)
+ self.close_cert_list.clicked.connect(cert_list.close)
QtCore.QMetaObject.connectSlotsByName(cert_list)
def retranslateUi(self, cert_list):
@@ -679,14 +678,14 @@ class Ui_cert_list(object):
self.close_cert_list.setText(_translate("cert_list", "Закрыть", None))
-class ViewCert(QtGui.QDialog):
+class ViewCert(QtWidgets.QDialog):
def __init__(self):
super(ViewCert, self).__init__()
self.ui = Ui_cert_view()
self.ui.setupUi(self)
-class ListCert(QtGui.QDialog):
+class ListCert(QtWidgets.QDialog):
list_data = []
is_root = False
@@ -702,31 +701,31 @@ class ListCert(QtGui.QDialog):
def filterout(self):
self.ui.cert_listview.clear()
- filter_text = unicode(self.ui.cert_list_filter.text())
+ filter_text = str(self.ui.cert_list_filter.text())
for line in self.list_data:
- if filter_text.upper() in line[1].decode('utf-8').upper():
- item = QtGui.QListWidgetItem()
+ if filter_text.upper() in line[1].upper():
+ item = QtWidgets.QListWidgetItem()
if self.is_root:
not_valid_before = datetime.strptime(line[5], '%d/%m/%Y %H:%M:%S ')
not_valid_after = datetime.strptime(line[6], '%d/%m/%Y %H:%M:%S ')
if not_valid_after < datetime.utcnow():
- item.setBackgroundColor(QtGui.QColor(252, 133, 133))
+ item.setBackground(QColor(252, 133, 133))
item.setText(('Эмитент: %s\nСубъект: %s\nСерийный номер: %s\nХэш SHA1: %s\nНе действителен до: %s\n'
'Не действителен после: %s' % (line[1], line[2], line[3], line[4],
datetime.strftime(not_valid_before, '%d.%m.%Y %H:%M:%S'),
datetime.strftime(not_valid_after,
- '%d.%m.%Y %H:%M:%S'))).decode('utf-8'))
+ '%d.%m.%Y %H:%M:%S'))))
else:
this_update = datetime.strptime(line[2], '%d/%m/%Y %H:%M:%S ')
next_update = datetime.strptime(line[3], '%d/%m/%Y %H:%M:%S ')
if next_update < datetime.utcnow():
- item.setBackgroundColor(QtGui.QColor(252, 133, 133))
+ item.setBackground(QColor(252, 133, 133))
item.setText(('%s\nДата выпуска: %s UTC\nДата обновления: %s UTC' %
(line[1], datetime.strftime(this_update, '%d.%m.%Y %H:%M:%S'),
- datetime.strftime(next_update, '%d.%m.%Y %H:%M:%S'))).decode('utf-8'))
+ datetime.strftime(next_update, '%d.%m.%Y %H:%M:%S'))))
self.ui.cert_listview.addItem(item)
-class TokenListItem(QtGui.QListWidgetItem):
+class TokenListItem(QtWidgets.QListWidgetItem):
isToken = True
storage = ''
token_name = ''
@@ -735,14 +734,14 @@ class TokenListItem(QtGui.QListWidgetItem):
super(TokenListItem, self).__init__(parent)
-class CertListItem(QtGui.QListWidgetItem):
+class CertListItem(QtWidgets.QListWidgetItem):
cert_index = 0
def __init__(self, parent=None):
super(CertListItem, self).__init__(parent)
-class MainWindow(QtGui.QMainWindow):
+class MainWindow(QtWidgets.QMainWindow):
token = ""
cert = ""
cont_id = ""
@@ -751,7 +750,7 @@ class MainWindow(QtGui.QMainWindow):
super(MainWindow, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
- aboutAction = QtGui.QAction(u'&О программе', self)
+ aboutAction = QtWidgets.QAction('&О программе', self)
aboutAction.setShortcut('Ctrl+Q')
aboutAction.triggered.connect(self.aboutProgram)
self.ui.menuBar.addAction(aboutAction)
@@ -760,7 +759,7 @@ class MainWindow(QtGui.QMainWindow):
or not os.path.exists('/opt/cprocsp/bin/%s/list_pcsc' % arch) \
or not os.path.exists('/opt/cprocsp/bin/%s/csptest' % arch) \
or not os.path.exists('/opt/cprocsp/sbin/%s/cpconfig' % arch):
- raise Exception(u'СКЗИ Крипто Про CSP или некоторые его компоненты не установлены.')
+ raise Exception('СКЗИ Крипто Про CSP или некоторые его компоненты не установлены.')
self.refresh_token()
self.ui.token_refresh.clicked.connect(self.refresh_token)
self.ui.token_list.itemClicked.connect(self.select_token)
@@ -778,52 +777,53 @@ class MainWindow(QtGui.QMainWindow):
self.ui.cachePIN.clicked.connect(self.cache_pin)
self.ui.asReader.clicked.connect(self.set_reader)
if versiontuple(get_cspversion()[2]) < versiontuple("3.6.7491"):
- QtGui.QMessageBox.information(self, u"Сообщение", u"Необходимо обновить КриптоПро CSP."
- u"<br>Ваша текущая версия: %s"
- u"<br>Минимальная рекомендуемая: 3.6.7491" %
+ QtWidgets.QMessageBox.information(self, "Сообщение", "Необходимо обновить КриптоПро CSP."
+ "<br>Ваша текущая версия: %s"
+ "<br>Минимальная рекомендуемая: 3.6.7491" %
get_cspversion()[2])
def set_reader(self):
if set_as_reader(self.token):
- QtGui.QMessageBox.information(self, u"Cообщение", u"Ключевой носитель %s успешно добавлен в качестве "
- u"считывателя" % self.token)
+ QtWidgets.QMessageBox.information(self, "Cообщение", "Ключевой носитель %s успешно добавлен в качестве "
+ "считывателя" % self.token)
else:
- QtGui.QMessageBox.information(self, u"Cообщение", u"Произошла ошибка")
+ QtWidgets.QMessageBox.information(self, "Cообщение", "Произошла ошибка")
def cache_pin(self):
- pin, ok = QtGui.QInputDialog.getText(None, u"Ввод PIN-кода", u"Введите PIN-код:",
- QtGui.QLineEdit.Password)
+ pin, ok = QtWidgets.QInputDialog.getText(None, "Ввод PIN-кода", "Введите PIN-код:",
+ QtWidgets.QLineEdit.Password)
if ok:
if not add_ini(pin, self.cont_id):
- QtGui.QMessageBox.information(self, u"Cообщение", u"PIN-код успешно сохранен")
+ QtWidgets.QMessageBox.information(self, "Cообщение", "PIN-код успешно сохранен")
def change_pin(self):
auth_id = check_user_pin()
if auth_id:
- old_pin, ok = QtGui.QInputDialog.getText(None, u"Ввод PIN-кода", u"Введите текущий PIN-код:",
- QtGui.QLineEdit.Password)
+ old_pin, ok = QtWidgets.QInputDialog.getText(None, "Ввод PIN-кода", "Введите текущий PIN-код:",
+ QtWidgets.QLineEdit.Password)
if ok:
- new_pin, ok = QtGui.QInputDialog.getText(None, u"Ввод PIN-кода", u"Введите новый PIN-код:",
- QtGui.QLineEdit.Password)
+ new_pin, ok = QtWidgets.QInputDialog.getText(None, "Ввод PIN-кода", "Введите новый PIN-код:",
+ QtWidgets.QLineEdit.Password)
if ok:
- conf_pin, ok = QtGui.QInputDialog.getText(None, u"Ввод PIN-кода", u"Повторите новый PIN-код:",
- QtGui.QLineEdit.Password)
+ conf_pin, ok = QtWidgets.QInputDialog.getText(None, "Ввод PIN-кода", "Повторите новый PIN-код:",
+ QtWidgets.QLineEdit.Password)
if ok and new_pin == conf_pin:
if len(new_pin) < 8:
- QtGui.QMessageBox.warning(self, u'Ошибка', u"Недостаточная длина PIN-кода.\nМинимальная "
- u"длина PIN составляет 8 символов")
+ QtWidgets.QMessageBox.warning(self, 'Ошибка', "Недостаточная длина PIN-кода.\nМинимальная "
+ "длина PIN составляет 8 символов")
return
ok, tries = change_user_pin(old_pin, new_pin)
if ok:
- QtGui.QMessageBox.information(self, u"Cообщение", u"PIN-код успешно изменен")
+ QtWidgets.QMessageBox.information(self, "Cообщение", "PIN-код успешно изменен")
+ add_ini(new_pin, self.cont_id)
else:
- QtGui.QMessageBox.warning(self, u'Ошибка', u"PIN-код введен неверно\nОсталось попыток: %s" %
+ QtWidgets.QMessageBox.warning(self, 'Ошибка', "PIN-код введен неверно\nОсталось попыток: %s" %
tries)
else:
- QtGui.QMessageBox.warning(self, u'Ошибка', u"Введенные PIN-коды не совпадают")
+ QtWidgets.QMessageBox.warning(self, 'Ошибка', "Введенные PIN-коды не совпадают")
else:
if not init_token():
- QtGui.QMessageBox.warning(self, u"Ошибка", u'Произошла ошибка при инициализации ключевого носителя')
+ QtWidgets.QMessageBox.warning(self, "Ошибка", 'Произошла ошибка при инициализации ключевого носителя')
else:
self.change_pin()
@@ -838,103 +838,103 @@ class MainWindow(QtGui.QMainWindow):
crl_view.exec_()
def open_crl(self):
- file_names = QtGui.QFileDialog.getOpenFileNames(self, u"Выберите файл(ы)", "", "*.crl")
+ file_names = QtWidgets.QFileDialog.getOpenFileNames(self, "Выберите файл(ы)", "", "*.crl")
if not file_names:
return
crl_view = ViewCert()
for filename in file_names:
- crl_info = install_crl(unicode(filename))
+ crl_info = install_crl(str(filename))
for line in crl_info:
- item = QtGui.QListWidgetItem()
+ item = QtWidgets.QListWidgetItem()
this_update = datetime.strptime(line[2], '%d/%m/%Y %H:%M:%S ')
next_update = datetime.strptime(line[3], '%d/%m/%Y %H:%M:%S ')
if next_update < datetime.utcnow():
- item.setBackgroundColor(QtGui.QColor(252, 133, 133))
+ item.setBackground(QColor(252, 133, 133))
item.setText(('%s\nДата выпуска: %s UTC\nДата обновления: %s UTC' %
(line[1], datetime.strftime(this_update, '%d.%m.%Y %H:%M:%S'),
- datetime.strftime(next_update, '%d.%m.%Y %H:%M:%S'))).decode('utf-8'))
+ datetime.strftime(next_update, '%d.%m.%Y %H:%M:%S'))))
crl_view.ui.cert_listview.addItem(item)
- crl_view.setWindowTitle(QtCore.QString(u'Установлен список отозванных сертификатов'))
+ crl_view.setWindowTitle(QtCore.QString('Установлен список отозванных сертификатов'))
crl_view.exec_()
def open_root_certs(self):
- file_names = QtGui.QFileDialog.getOpenFileNames(self, u"Выберите файл(ы)", "", "*.cer *.crt")
+ file_names = QtWidgets.QFileDialog.getOpenFileNames(self, "Выберите файл(ы)", "", "*.cer *.crt")
if not file_names:
return
root_view = ViewCert()
for filename in file_names:
- root_info = install_root_cert(unicode(filename))
+ root_info = install_root_cert(str(filename))
for line in root_info:
- item = QtGui.QListWidgetItem()
+ item = QtWidgets.QListWidgetItem()
not_valid_before = datetime.strptime(line[5], '%d/%m/%Y %H:%M:%S ')
not_valid_after = datetime.strptime(line[6], '%d/%m/%Y %H:%M:%S ')
if not_valid_after < datetime.utcnow():
- item.setBackgroundColor(QtGui.QColor(252, 133, 133))
+ item.setBackground(QColor(252, 133, 133))
item.setText(('Эмитент: %s\nСубъект: %s\nСерийный номер: %s\nХэш SHA1: %s\nНе действителен до: %s\n'
'Не действителен после: %s' % (line[1], line[2], line[3], line[4],
datetime.strftime(not_valid_before, '%d.%m.%Y %H:%M:%S'),
datetime.strftime(not_valid_after,
- '%d.%m.%Y %H:%M:%S'))).decode('utf-8'))
+ '%d.%m.%Y %H:%M:%S'))))
root_view.ui.cert_listview.addItem(item)
- root_view.setWindowTitle(QtCore.QString(u'Установлен корневой сертификат'))
+ root_view.setWindowTitle(QtCore.QString('Установлен корневой сертификат'))
root_view.exec_()
def view_license(self):
license_info = get_license()
license_view = ViewCert()
- item = QtGui.QListWidgetItem()
+ item = QtWidgets.QListWidgetItem()
item.setText(license_info)
license_view.ui.cert_listview.addItem(item)
license_view.exec_()
def enter_license(self):
- cpro_license, ok = QtGui.QInputDialog.getText(self, u'Лицензия КриптоПро',
- u'Введите лицензионный ключ:')
+ cpro_license, ok = QtWidgets.QInputDialog.getText(self, 'Лицензия КриптоПро',
+ 'Введите лицензионный ключ:')
if ok:
m = re.match('([A-Z0-9]{5}-){4}[A-Z0-9]{5}', cpro_license)
if m:
l = set_license(cpro_license)
if l[1]:
- QtGui.QMessageBox.warning(self, u"Ошибка", u"Произошла ошибка: %s" % l[0])
+ QtWidgets.QMessageBox.warning(self, "Ошибка", "Произошла ошибка: %s" % l[0])
else:
- QtGui.QMessageBox.information(self, u"Cообщение", u"Лицензионный ключ успешно установлен")
+ QtWidgets.QMessageBox.information(self, "Cообщение", "Лицензионный ключ успешно установлен")
else:
- QtGui.QMessageBox.warning(self, u"Ошибка", u"Лицензионный ключ введен неверно!")
+ QtWidgets.QMessageBox.warning(self, "Ошибка", "Лицензионный ключ введен неверно!")
def install_cert(self):
ret = inst_cert(self.cert)
- QtGui.QMessageBox.information(self, u"Сообщение", ret)
+ QtWidgets.QMessageBox.information(self, "Сообщение", ret)
def install_local_cert(self):
- file_name = QtGui.QFileDialog().getOpenFileName(self, u"Выберите файл(ы)", "", "*.cer")
+ file_name = QtWidgets.QFileDialog().getOpenFileName(self, "Выберите файл(ы)", "", "*.cer")
if not file_name:
return
- ret = inst_cert_from_file(unicode(file_name))
- QtGui.QMessageBox.information(self, u"Сообщение", ret)
+ ret = inst_cert_from_file(str(file_name))
+ QtWidgets.QMessageBox.information(self, "Сообщение", ret)
def delete_cert(self):
is_token = self.ui.token_list.currentItem().isToken
if is_token:
- reply = QtGui.QMessageBox.question(self, u'Подтверждение',
- u'Вы уверенны что хотите удалить данный сертификат '
- u'с ключевого носителя?\n'
- u'Эту операцию нельзя отменить.',
- QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)
- if reply == QtGui.QMessageBox.Yes:
+ reply = QtWidgets.QMessageBox.question(self, 'Подтверждение',
+ 'Вы уверенны что хотите удалить данный сертификат '
+ 'с ключевого носителя?\n'
+ 'Эту операцию нельзя отменить.',
+ QtWidgets.QMessageBox.Yes, Gui.QMessageBox.No)
+ if reply == QtWidgets.QMessageBox.Yes:
ret = del_cont(self.cert)
- QtGui.QMessageBox.information(self, u"Сообщение", ret)
+ QtWidgets.QMessageBox.information(self, "Сообщение", ret)
self.ui.cert_delete.setEnabled(False)
self.ui.cert_view.setEnabled(False)
self.ui.cert_install.setEnabled(False)
else:
- reply = QtGui.QMessageBox.question(self, u'Подтверждение',
- u'Вы уверенны что хотите удалить данный сертификат?\n'
- u'Эту операцию нельзя отменить.',
- QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)
- if reply == QtGui.QMessageBox.Yes:
+ reply = QtWidgets.QMessageBox.question(self, 'Подтверждение',
+ 'Вы уверенны что хотите удалить данный сертификат?\n'
+ 'Эту операцию нельзя отменить.',
+ QtWidgets.QMessageBox.Yes, QtWidgets.QMessageBox.No)
+ if reply == QtWidgets.QMessageBox.Yes:
ret = del_store_cert(self.ui.cert_list.currentItem().cert_index,
self.ui.token_list.currentItem().storage)
- QtGui.QMessageBox.information(self, u"Сообщение", ret)
+ QtWidgets.QMessageBox.information(self, "Сообщение", ret)
self.ui.cert_delete.setEnabled(False)
self.ui.cert_view.setEnabled(False)
self.ui.cert_install.setEnabled(False)
@@ -953,9 +953,9 @@ class MainWindow(QtGui.QMainWindow):
if is_token:
self.ui.cert_view.clicked.connect(self.view_cert)
containers = get_token_certs(self.token)
- cert_name = str(item.text().toUtf8())
+ cert_name = str(item.text())
for line in containers[0]:
- container = line.decode('cp1251').encode('utf-8')
+ container = line
if cert_name in container:
self.cert = line.split('|')[1]
self.cont_id = line.split('|')[1].split('\\')[4:] # содержит список, который нужно объединить бэкслэшами
@@ -969,13 +969,13 @@ class MainWindow(QtGui.QMainWindow):
self.ui.cert_install.setHidden(False)
self.ui.cert_install.clicked.disconnect()
self.ui.cert_install.clicked.connect(self.install_cert)
- self.ui.label_2.setText(u'Выберите контейнер сертификата')
+ self.ui.label_2.setText('Выберите контейнер сертификата')
self.ui.asReader.setEnabled(True)
self.token = str(item.token_name)
certs = get_token_certs(str(item.token_name))[0]
for cert in certs:
- cert_item = QtGui.QListWidgetItem()
- cert_item.setText(cert.split('|')[0].split('\\')[-1].decode('cp1251'))
+ cert_item = QtWidgets.QListWidgetItem()
+ cert_item.setText(cert.split('|')[0].split('\\')[-1])
self.ui.cert_list.addItem(cert_item)
if not item.isToken:
self.ui.cert_install.setEnabled(True)
@@ -985,7 +985,7 @@ class MainWindow(QtGui.QMainWindow):
elif item.storage == 'uMy':
self.ui.cert_install.clicked.disconnect()
self.ui.cert_install.clicked.connect(self.install_local_cert)
- self.ui.label_2.setText(u'Выберите сертификат')
+ self.ui.label_2.setText('Выберите сертификат')
self.ui.asReader.setEnabled(False)
self.ui.changePIN.setEnabled(False)
self.ui.cachePIN.setEnabled(False)
@@ -994,10 +994,10 @@ class MainWindow(QtGui.QMainWindow):
cert_item = CertListItem()
cert_item.cert_index = cert[0]
if datetime.strptime(cert[6], '%d/%m/%Y %H:%M:%S ') < datetime.utcnow():
- cert_item.setBackgroundColor(QtGui.QColor(252, 133, 133))
- cert_subject_cn = dict(re.findall(ur'([A-Za-z0-9\.]+?)=([\xab\xbb\(\)\w \.\,0-9@\-\#\/\"\/\']+|\"(?:\\.|[^\"])*\")(?:, |$)', cert[2].decode('utf-8'), re.UNICODE))['CN']
- cert_issuer_cn = dict(re.findall(ur'([A-Za-z0-9\.]+?)=([\xab\xbb\(\)\w \.\,0-9@\-\#\/\"\/\']+|\"(?:\\.|[^\"])*\")(?:, |$)', cert[1].decode('utf-8'), re.UNICODE))['CN']
- cert_item.setText(u"%s\nвыдан %s" % (cert_subject_cn, cert_issuer_cn))
+ cert_item.setBackground(QColor(252, 133, 133))
+ cert_subject_cn = dict(re.findall(r'([A-Za-z0-9\.]+?)=([\xab\xbb\(\)\w \.\,0-9@\-\#\/\"\/\']+|\"(?:\\.|[^\"])*\")(?:, |$)', cert[2], re.UNICODE))['CN']
+ cert_issuer_cn = dict(re.findall(r'([A-Za-z0-9\.]+?)=([\xab\xbb\(\)\w \.\,0-9@\-\#\/\"\/\']+|\"(?:\\.|[^\"])*\")(?:, |$)', cert[1], re.UNICODE))['CN']
+ cert_item.setText("%s\nвыдан %s" % (cert_subject_cn, cert_issuer_cn))
self.ui.cert_list.addItem(cert_item)
def view_cert(self):
@@ -1009,60 +1009,60 @@ class MainWindow(QtGui.QMainWindow):
cert_info = get_store_certs(store)
line = cert_info[int(self.ui.cert_list.currentItem().cert_index) - 1]
cert_view = ViewCert()
- item = QtGui.QListWidgetItem(cert_view.ui.cert_listview)
- label = QtGui.QLabel()
- label.setText(u'<b>Эмитент</b>:')
+ item = QtWidgets.QListWidgetItem(cert_view.ui.cert_listview)
+ label = QtWidgets.QLabel()
+ label.setText('<b>Эмитент</b>:')
cert_view.ui.cert_listview.setItemWidget(item, label)
- issuer_info = dict(re.findall(ur'([A-Za-z0-9\.]+?)=([\xab\xbb\(\)\w \.\,0-9@\-\#\/\"\/\']+|\"(?:\\.|[^\"])*\")(?:, |$)', line[1].decode('utf-8'), re.UNICODE))
+ issuer_info = dict(re.findall(r'([A-Za-z0-9\.]+?)=([\xab\xbb\(\)\w \.\,0-9@\-\#\/\"\/\']+|\"(?:\\.|[^\"])*\")(?:, |$)', line[1], re.UNICODE))
for field in issuer_info:
- item = QtGui.QListWidgetItem(cert_view.ui.cert_listview)
- label = QtGui.QLabel()
- label.setText(u'<b>%s</b>:\t\t%s' % (translate_cert_fields(field), issuer_info[field]))
+ item = QtWidgets.QListWidgetItem(cert_view.ui.cert_listview)
+ label = QtWidgets.QLabel()
+ label.setText('<b>%s</b>:\t\t%s' % (translate_cert_fields(field), issuer_info[field]))
cert_view.ui.cert_listview.setItemWidget(item, label)
- item = QtGui.QListWidgetItem(cert_view.ui.cert_listview)
- item = QtGui.QListWidgetItem(cert_view.ui.cert_listview)
- label = QtGui.QLabel()
- label.setText(u'<b>Субъект</b>:')
+ item = QtWidgets.QListWidgetItem(cert_view.ui.cert_listview)
+ item = QtWidgets.QListWidgetItem(cert_view.ui.cert_listview)
+ label = QtWidgets.QLabel()
+ label.setText('<b>Субъект</b>:')
cert_view.ui.cert_listview.setItemWidget(item, label)
- subject_info = dict(re.findall(ur'([A-Za-z0-9\.]+?)=([\xab\xbb\(\)\w \.\,0-9@\-\#\/\"\/\']+|\"(?:\\.|[^\"])*\")(?:, |$)', line[2].decode('utf-8'), re.UNICODE))
+ subject_info = dict(re.findall(r'([A-Za-z0-9\.]+?)=([\xab\xbb\(\)\w \.\,0-9@\-\#\/\"\/\']+|\"(?:\\.|[^\"])*\")(?:, |$)', line[2], re.UNICODE))
for field in subject_info:
- item = QtGui.QListWidgetItem(cert_view.ui.cert_listview)
- label = QtGui.QLabel()
+ item = QtWidgets.QListWidgetItem(cert_view.ui.cert_listview)
+ label = QtWidgets.QLabel()
if subject_info[field][:2] == '"#': # Если поле в HEX-виде
- label.setText(u'<b>%s</b>:\t%s' % (translate_cert_fields(field), subject_info[field][6:-1].decode('hex').decode('utf-8')))
+ label.setText('<b>%s</b>:\t%s' % (translate_cert_fields(field), subject_info[field][6:-1]))
else:
- label.setText(u'<b>%s</b>:\t%s' % (translate_cert_fields(field), subject_info[field]))
+ label.setText('<b>%s</b>:\t%s' % (translate_cert_fields(field), subject_info[field]))
cert_view.ui.cert_listview.setItemWidget(item, label)
- item = QtGui.QListWidgetItem(cert_view.ui.cert_listview)
- item = QtGui.QListWidgetItem(cert_view.ui.cert_listview)
+ item = QtWidgets.QListWidgetItem(cert_view.ui.cert_listview)
+ item = QtWidgets.QListWidgetItem(cert_view.ui.cert_listview)
cert_serial = line[3][2:]
- label = QtGui.QLabel()
- label.setText(u'<b>Серийный номер</b>: %s' % cert_serial)
+ label = QtWidgets.QLabel()
+ label.setText('<b>Серийный номер</b>: %s' % cert_serial)
cert_view.ui.cert_listview.setItemWidget(item, label)
- item = QtGui.QListWidgetItem(cert_view.ui.cert_listview)
+ item = QtWidgets.QListWidgetItem(cert_view.ui.cert_listview)
not_valid_before = datetime.strptime(line[5], '%d/%m/%Y %H:%M:%S ')
- label = QtGui.QLabel()
- label.setText(u'<b>Не действителен до</b>: %s' % datetime.strftime(not_valid_before, '%d.%m.%Y %H:%M:%S'))
+ label = QtWidgets.QLabel()
+ label.setText('<b>Не действителен до</b>: %s' % datetime.strftime(not_valid_before, '%d.%m.%Y %H:%M:%S'))
cert_view.ui.cert_listview.setItemWidget(item, label)
- item = QtGui.QListWidgetItem(cert_view.ui.cert_listview)
+ item = QtWidgets.QListWidgetItem(cert_view.ui.cert_listview)
not_valid_after = datetime.strptime(line[6], '%d/%m/%Y %H:%M:%S ')
if not_valid_after < datetime.utcnow():
- item.setBackgroundColor(QtGui.QColor(252, 133, 133))
- label = QtGui.QLabel()
- label.setText(u'<b>Не действителен после</b>: %s' % datetime.strftime(not_valid_after, '%d.%m.%Y %H:%M:%S'))
+ item.setBackground(QColor(252, 133, 133))
+ label = QtWidgets.QLabel()
+ label.setText('<b>Не действителен после</b>: %s' % datetime.strftime(not_valid_after, '%d.%m.%Y %H:%M:%S'))
cert_view.ui.cert_listview.setItemWidget(item, label)
- item = QtGui.QListWidgetItem(cert_view.ui.cert_listview)
- item = QtGui.QListWidgetItem(cert_view.ui.cert_listview)
- label = QtGui.QLabel()
- label.setText(u'<b>Расширенное использование ключа</b>: ')
+ item = QtWidgets.QListWidgetItem(cert_view.ui.cert_listview)
+ item = QtWidgets.QListWidgetItem(cert_view.ui.cert_listview)
+ label = QtWidgets.QLabel()
+ label.setText('<b>Расширенное использование ключа</b>: ')
cert_view.ui.cert_listview.setItemWidget(item, label)
try:
ext_key = line[7].split()
except IndexError:
- ext_key = [u'<i>Не имеет</i>']
+ ext_key = ['<i>Не имеет</i>']
for oid in ext_key:
- item = QtGui.QListWidgetItem(cert_view.ui.cert_listview)
- label = QtGui.QLabel()
+ item = QtWidgets.QListWidgetItem(cert_view.ui.cert_listview)
+ label = QtWidgets.QLabel()
label.setText(translate_cert_fields(oid))
cert_view.ui.cert_listview.setItemWidget(item, label)
cert_view.exec_()
@@ -1071,59 +1071,61 @@ class MainWindow(QtGui.QMainWindow):
self.ui.token_list.clear()
tokens = get_tokens()
root_store_item = TokenListItem()
- root_store_item.setText(u"Хранилище корневых сертификатов")
+ root_store_item.setText("Хранилище корневых сертификатов")
root_store_item.isToken = False
root_store_item.storage = 'root'
- root_store_item.setIcon(QtGui.QIcon(':/images/root.png'))
+ root_store_item.setIcon(QIcon(':/images/root.png'))
self.ui.token_list.addItem(root_store_item)
personal_store_item = TokenListItem()
- personal_store_item.setText(u"Личное хранилище сертификатов")
+ personal_store_item.setText("Личное хранилище сертификатов")
personal_store_item.isToken = False
personal_store_item.storage = 'uMy'
- personal_store_item.setIcon(QtGui.QIcon(':/images/personal.png'))
+ personal_store_item.setIcon(QIcon(':/images/personal.png'))
self.ui.token_list.addItem(personal_store_item)
if tokens[1]:
token_item = TokenListItem()
self.ui.cert_list.clearSelection()
- token_item.setText(u'<Ключевых носителей не обнаружено>')
+ token_item.setText('<Ключевых носителей не обнаружено>')
token_item.setSelected(False)
token_item.setFlags(QtCore.Qt.NoItemFlags)
else:
for token in tokens[0]:
token_item = TokenListItem()
token_item.token_name = token
- token_item.setText(u'%s - сер. № %s' % (token, get_token_serial(token)))
- token_item.setIcon(QtGui.QIcon(':/images/usb-token.png'))
+ token_item.setText('%s - сер. № %s' % (token, get_token_serial(token)))
+ token_item.setIcon(QIcon(':/images/usb-token.png'))
self.ui.token_list.addItem(token_item)
def aboutProgram(self):
- QtGui.QMessageBox.about(self, u"О программе",
- u"<b>token-manager 0.12</b><br>"
- u"Версия CSP: %s<br>"
- u"Класс криптосредств: %s<br>"
- u"Релиз: %s<br>"
- u"ОС: %s<br>"
- u"<br>Борис Макаренко<br>УИТ ФССП России"
- u"<br>E-mail: <a href='mailto:makarenko@fssprus.ru'>makarenko@fssprus.ru</a>"
- u"<br> <a href='mailto:bmakarenko90@gmail.com'>bmakarenko90@gmail.com<br><br>"
- u"<a href='http://opensource.org/licenses/MIT'>Лицензия MIT</a>" % get_cspversion())
+ QtWidgets.QMessageBox.about(self, "О программе",
+ "<b>token-manager 0.12</b><br>"
+ "Версия CSP: %s<br>"
+ "Класс криптосредств: %s<br>"
+ "Релиз: %s<br>"
+ "ОС: %s<br>"
+ "<br>Борис Макаренко<br>УИТ ФССП России"
+ "<br>E-mail: <a href='mailto:makarenko@fssprus.ru'>makarenko@fssprus.ru</a>"
+ "<br> <a href='mailto:bmakarenko90@gmail.com'>bmakarenko90@gmail.com<br><br>"
+ "<a href='http://opensource.org/licenses/MIT'>Лицензия MIT</a>" % get_cspversion())
def main():
- app = QtGui.QApplication(sys.argv)
- try:
- ex = MainWindow()
- except Exception as error:
- QtGui.QMessageBox().warning(QtGui.QMessageBox(), u"Cообщение", u"Произошла ошибка:\n%s" % error)
- exit(-1)
+ app = QtWidgets.QApplication(sys.argv)
+ # TODO
+ ex = MainWindow()
+ #try:
+ # ex = MainWindow()
+ #except Exception as error:
+ # QtWidgets.QMessageBox().warning(QtWidgets.QMessageBox(), "Cообщение", "Произошла ошибка:\n%s" % error)
+ # exit(-1)
if len(sys.argv) == 1:
ex.show()
sys.exit(app.exec_())
else:
- if os.path.isfile(sys.argv[1].decode('utf-8')):
- ret = inst_cert_from_file(sys.argv[1].decode('utf-8'))
- QtGui.QMessageBox().information(QtGui.QMessageBox(), u"Сообщение", ret)
+ if os.path.isfile(sys.argv[1]):
+ ret = inst_cert_from_file(sys.argv[1])
+ QtWidgets.QMessageBox().information(QtWidgets.QMessageBox(), "Сообщение", ret)
if __name__ == '__main__':
main()