рд╣рдо Python / Tkinter рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпреЛрдЧреНрдп рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ

рдпреЛрдЧреНрдп рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдЬрд▓реНрджреА рд╕реЗ рд░реЛрдЬрдорд░реНрд░рд╛ рдХреА рдЬрд┐рдВрджрдЧреА рдХрд╛ рдПрдХ рдЕрднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕рд╛ рдмрди рдЧрдПред рдФрд░ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдЧ рдЗрд╕ "рдЬрд╛рдирд╡рд░" рдХреЛ рдЕрдВрджрд░ рд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдУрд░ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЗрди рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдпреЗ рдХреЗрд╡рд▓ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рдорд╛рд▓рд┐рдХ рдпрд╛ рдкреНрд░рдХрд╛рд╢рдХ рдХреЗ рдЯрд┐рди рдпрд╛ рдмрд┐рди рдХреЗ рдЧреБрдг рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдХрд┐рд╕ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдзрд╛рд░рдХ (рд╕рдмреНрдЬреЗрдХреНрдЯрд╕реВрд▓рдЯреВрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛) рджреНрд╡рд╛рд░рд╛ рдПрдХ рдирд┐рдЬреА рдХреБрдВрдЬреА рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рдорд╛рдгрд┐рдд рд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдорд╛рдгрди рдХреЗрдВрджреНрд░ (CA) рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдЬрд╛рд░реА рдХрд░рддрд╛ рдерд╛ред рдФрд░ рдпрджрд┐ рдЖрдк рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдЧрд╛, рддреЛ рдЖрдк рджрд┐рд▓рдЪрд╕реНрдк рдЖрдБрдХрдбрд╝реЗ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рди рдкрд░ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рд╕реВрдЪрдирд╛ рд╕рдВрд░рдХреНрд╖рдг рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдзрд╛рд░рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрдо рджрд┐рд▓рдЪрд╕реНрдк) рдкреНрд░рдорд╛рдгрд┐рдд (рдпрд╛ рдЧреИрд░-рдкреНрд░рдорд╛рдгрд┐рдд) рдлрдВрдб рд╕реАрдП рдХреЛ рддреИрдирд╛рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдЬрд╛рд░реАрдХрд░реНрддрд╛рд╕рд╛рдЗрдирдЯреВрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛):



рд╣реИрдмрд░ рдХреЗ рдЦреБрд▓реЗ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдпреЛрдЧреНрдп рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рд╕рдлрд▓ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗрд╡рд▓ рдЯреАрдЖрдИрдПрди, рдкреАрдПрд╕рдЖрд░рдПрди рдФрд░ рдПрд╕рдПрдирдЖрдИрдПрд▓рдПрд╕ рдХреА рдкреНрд░рд╛рдкреНрддрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдо рдбреАрдПрди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдХреНрдпреЛрдВ? рд▓реЗрдЦрдХ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛ рдереА рдФрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдо рдкрд╛рдпрдерди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдпреЛрдЧреНрдп рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд┐рддреНрд░рдордп рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо fsb795 рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдкреИрдХреЗрдЬ Pytho2 рдФрд░ Python3 рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВ:

# python -m pip install fsb795 Collecting fsb795 Requirement already satisfied: pyasn1-modules>=0.2.2 in /usr/lib/python2.7/site-packages (from fsb795) (0.2.2) Collecting pyasn1>=0.4.4 (from fsb795) Using cached https://files.pythonhosted.org/packages/d1/a1/7790cc85db38daa874f6a2e6308131b9953feb1367f2ae2d1123bb93a9f5/pyasn1-0.4.4-py2.py3-none-any.whl Requirement already satisfied: six in /usr/lib/python2.7/site-packages (from fsb795) (1.11.0) Installing collected packages: pyasn1, fsb795 Successfully installed fsb795-1.5.2 pyasn1-0.4.4 [root@localhost GCryptGOST]# 

Fsb795 рдкреИрдХреЗрдЬ рдХреЛ pyasn1 рдФрд░ pyasn1- рдореЙрдбреНрдпреВрд▓ рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╡реЗ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

Python3 рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрдорд╛рдВрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 # python -m pip install fsb795 ... # 

рдЖрдк python3 рдФрд░ python2 рд╕реНрдерд╛рдкрдирд╛ рдкреИрдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо, pyasn1- рдореЙрдбреНрдпреВрд▓ рдкреИрдХреЗрдЬ рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, rfc2459, рдЖрджрд┐ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ 27 рджрд┐рд╕рдВрдмрд░ 2011 рдХреЗ рд░реВрд╕реА рд╕рдВрдШ рдХреЗ рд╕рдВрдШреАрдп рд╕реБрд░рдХреНрд╖рд╛ рд╕реЗрд╡рд╛ рдХреЗ рдЖрджреЗрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдПрдХ рдпреЛрдЧреНрдп рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ ... "ред

рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╡рд░реНрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ fsb795 рдкреИрдХреЗрдЬ рдореЗрдВ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рддрдХ рдкрд╣реБрдВрдЪ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рд╣реИ:

 # -*- coding: utf-8 -*- import os, sys import pyasn1 import binascii import six from pyasn1_modules import rfc2459, pem from pyasn1.codec.der import decoder from datetime import datetime, timedelta class Certificate: #  cert_full = '' cert = '' pyver = '' formatCert = '' def __init__ (self,fileorstr): #     if not os.path.exists(fileorstr): #  ,  ,     #    PEM- strcert = fileorstr.strip('\n') if (strcert[0:27] != '-----BEGIN CERTIFICATE-----'): return idx, substrate = pem.readPemBlocksFromFile(six.StringIO( strcert), ('-----BEGIN CERTIFICATE-----', '-----END CERTIFICATE-----') ) self.pyver = sys.version[0] try: self.cert_full, rest = decoder.decode(substrate, asn1Spec=rfc2459.Certificate()) self.cert = self.cert_full["tbsCertificate"] self.formatCert = 'PEM' except: self.pyver = '' self.formatCert = '' return #   #  self.pyver   python self.pyver = sys.version[0] filename = fileorstr if (self.pyver == '2'): if sys.platform != "win32": filename = filename.encode("UTF-8") else: filename = filename.encode("CP1251") #  DER file1 = open(filename, "rb") substrate = file1.read() if (self.pyver == '2'): b0 = ord(substrate[0]) b1 = ord(substrate[1]) else: b0 = substrate[0] b1 = substrate[1] #  PEM/DER,   0x30,       127  if (b0 == 48 and b1 > 128) : self.formatCert = 'DER' else: self.formatCert = 'PEM' file1 = open(filename, "r") idx, substrate = pem.readPemBlocksFromFile( file1, ('-----BEGIN CERTIFICATE-----', '-----END CERTIFICATE-----') ) file1.close() try: self.cert_full, rest = decoder.decode(substrate, asn1Spec=rfc2459.Certificate()) self.cert = self.cert_full["tbsCertificate"] except: self.pyver = '' self.formatCert = '' #       def subjectSignTool(self): . . . #,     if __name__ == "__main__": . . . 

рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдерди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:

 $ python Python 2.7.15 (default, May 23 2018, 14:20:56) [GCC 5.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>import fsb795 >>tek_cert = fsb795.Certificate(</  >) >> 

рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╕рдордп, рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдпрд╛ рддреЛ рдкреАрдИрдПрдо рдпрд╛ рдбреАрдИрдЖрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдкреАрдИрдПрдо рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж, рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЪрд╛рд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ: рдкрд╛рдЗрд╡рд░, рдлреЙрд░реНрдореЗрдЯрдХрд╛рд░реНрдЯ, рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ_рдлреБрд▓ рдФрд░ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯред
рдкрд╛рдЗрд╡рд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреИрд╕реЗ рдЧрдИред рдпрджрд┐ рдкрд╛рдЗрд╡рд░ рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рддреЛ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдирд╣реАрдВ рд╣реИред рдЕрдиреНрдпрдерд╛, pyver рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдЕрдЬрдЧрд░ рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ:

 >>> c1=fsb795.Certificate('     ') >>> if (c1.pyver == ''): ... print ('   ') ...     >>> c2 = fsb795.Certificate('/home/a513/cert_nss.der') >>> if (c2.pyver != ""): ... print(c2.pyver) ... 2 >>> print(c2.formatCert) DER >>> 

рдлреЙрд░реНрдореЗрдЯрд░реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛, рдЬрдм рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рдлрд╝рд╛рдЗрд▓ / рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдкреАрдИрдПрдо рдпрд╛ рдбреАрдИрдЖрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдиреАрдЪреЗ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

Fsb795 рдкреИрдХреЗрдЬ pyasn1 рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рддреЛ, рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдЕрдкрд░рд┐рдЪрд┐рдд рд░рд╣ рдЧрдИрдВред Pyasn1 рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ tbs рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдФрд░ Cert_full рд╡рд┐рд╢реЗрд╖рддрд╛ rfc2459 рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдкреВрд░реЗ рдбрд┐рдХреЛрдб рдХрд┐рдП рдЧрдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИред рд╣рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░ рдЬреБрдбрд╝реЗ pyasn1 рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:

 >>> pubkey = c2.cert['subjectPublicKeyInfo'] >>> ff = pubkey['algorithm'] >>> ff1 = ff['algorithm'] >>> print (ff1) 1.2.643.2.2.19 >>> 

рдЕрдВрдд рдореЗрдВ, рдПрдХ рдпреЛрдЧреНрдп рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП fsb795 рдкреИрдХреЗрдЬ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред

рдЬрдм рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдорд╛рд░реЗ рдирд┐рдкрдЯрд╛рди рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддреЗ рд╣реИрдВред рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:

 >>> c3 = fsb795.Certificate('cert.der') >>> key_info=c3.publicKey() >>> for opt in key_info.keys(): ... val = str(key_info[opt]) ... print (opt + '=' + val) ... curve=1.2.643.2.2.36.0 hash=1.2.643.2.2.30.1 valuepk=5b785f86f0dd5316ba37c8440e398e83f2ec0c34478f90da9c0c8046d341ff66f9044cd00a0e25530 acefd51e6be852dbecacbaabc55e807be8e1f861658bd58 algo=1.2.643.2.2.19 >>> 

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╡рд░реНрдЧ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ:

  • subjectSignTool () - рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдзрд╛рд░рдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреЗрддрд╛ рд╣реИ
  • рдЬрд╛рд░реАрдХрд░реНрддрд╛рд╕рд╛рдЗрдирдЯреВрд▓ () - рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬрд╛рд░реАрдХрд░реНрддрд╛ рдХреЗ рд╕реВрдЪрдирд╛ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдЯреВрд▓ рдХреЗ рд╕рд╛рде рдЪрд╛рд░ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИ;
  • classUser () - рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдзрд╛рд░рдХ рдХреА рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рд╕реВрдЪрдирд╛ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рд╢рдкрде рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреЗрддрд╛ рд╣реИ, рдкрд╛рддреНрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ ";;";
  • рдЬрд╛рд░реАрдХрд░реНрддрд╛рдХреЙрд░реНрдЯ () - рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛ рдирд╛рдо рдбреАрдПрди рдФрд░ рдЦреЗрддреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдФрд░ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдирдВрдмрд░ (2 - рдХрд╛рдиреВрдиреА рдЗрдХрд╛рдИ);
  • subjectCert () - рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдзрд╛рд░рдХ рдХреЗ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдирд╛рдо DN рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рджреЗрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдВрдмрд░ рдЬреЛ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддрд╛ рд╣реИ (2 - рдХрд╛рдиреВрдиреА рдЗрдХрд╛рдИ);
  • publicKey () - рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореБрдЦреНрдп рдорд╛рди ('valuepk') рдФрд░ рдкреНрд░рдореБрдЦ рдкреИрд░рд╛рдореАрдЯрд░ ('рд╡рдХреНрд░' рдФрд░ 'hasn') рд╣реЛрддреЗ рд╣реИрдВ;
  • рд╕рд┐рдЧреНрдиреЗрдЪрд░рдХрд╛рд░реНрдЯ - рджреЛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ: рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдФрд░ рд╕рд┐рдЧреНрдиреЗрдЪрд░ рд╡реИрд▓реНрдпреВ;
  • validityCert - рджреЛ рдХреБрдВрдЬреА 'not_after' рдФрд░ 'not_before' рдХреЗ рд╕рд╛рде рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рджреЗрддрд╛ рд╣реИ;
  • keyUsage () - рдореБрдЦреНрдп рд╕реНрдХреЛрдк рдХреА рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИ;
  • рд╕реАрд░рд┐рдпрд▓рдирдВрдмрд░ () - рджрд╢рдорд▓рд╡ рд░реВрдк рдореЗрдВ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ;
  • prettyPrint () - pyasn1 (self.cert_full.prettyPrint ()) рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ 'рдкреНрд░рд┐рдВрдЯрдЖрдЙрдЯ' рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреЗрддрд╛ рд╣реИред

рд╕реНрдкреЙрдЗрд▓рд░ рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдХрд╛рдо рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

Fsb795 рдкреИрдХреЗрдЬ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП test795.py рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ
 import fsb795 certpem = """ -----BEGIN CERTIFICATE----- MIIG3DCCBougAwIBAgIKE8/KkAAAAAAC4zAIBgYqhQMCAgMwggFKMR4wHAYJKoZI hvcNAQkBFg9kaXRAbWluc3Z5YXoucnUxCzAJBgNVBAYTAlJVMRwwGgYDVQQIDBM3 NyDQsy4g0JzQvtGB0LrQstCwMRUwEwYDVQQHDAzQnNC+0YHQutCy0LAxPzA9BgNV BAkMNjEyNTM3NSDQsy4g0JzQvtGB0LrQstCwLCDRg9C7LiDQotCy0LXRgNGB0LrQ sNGPLCDQtC4gNzEsMCoGA1UECgwj0JzQuNC90LrQvtC80YHQstGP0LfRjCDQoNC+ 0YHRgdC40LgxGDAWBgUqhQNkARINMTA0NzcwMjAyNjcwMTEaMBgGCCqFAwOBAwEB EgwwMDc3MTA0NzQzNzUxQTA/BgNVBAMMONCT0L7Qu9C+0LLQvdC+0Lkg0YPQtNC+ 0YHRgtC+0LLQtdGA0Y/RjtGJ0LjQuSDRhtC10L3RgtGAMB4XDTE4MDcwOTE1MjYy NFoXDTI3MDcwOTE1MjYyNFowggFVMR4wHAYJKoZIhvcNAQkBFg9jb250YWN0QGVr ZXkucnUxITAfBgNVBAMMGNCe0J7QniDCq9CV0LrQtdC5INCj0KbCuzEwMC4GA1UE Cwwn0KPQtNC+0YHRgtC+0LLQtdGA0Y/RjtGJ0LjQuSDRhtC10L3RgtGAMSEwHwYD VQQKDBjQntCe0J4gwqvQldC60LXQuSDQo9CmwrsxCzAJBgNVBAYTAlJVMRgwFgYD VQQIDA83NyDQnNC+0YHQutCy0LAxRDBCBgNVBAkMO9Cj0JvQmNCm0JAg0JjQm9Cs 0JjQndCa0JAsINCULjQsINCQ0J3QotCgIDMg0K3Qojsg0J/QntCcLjk0MRgwFgYD VQQHDA/Qsy7QnNC+0YHQutCy0LAxGDAWBgUqhQNkARINMTE0Nzc0NjcxNDYzMTEa MBgGCCqFAwOBAwEBEgwwMDc3MTA5NjQzNDgwYzAcBgYqhQMCAhMwEgYHKoUDAgIk AAYHKoUDAgIeAQNDAARAW3hfhvDdUxa6N8hEDjmOg/LsDDRHj5DanAyARtNB/2b5 BEzQCg4lUwrO/VHmvoUtvsrLqrxV6Ae+jh+GFli9WKOCA0AwggM8MBIGA1UdEwEB /wQIMAYBAf8CAQAwHQYDVR0OBBYEFMQYnG5GfYRnj2ehEQ5tv8Fso/qBMAsGA1Ud DwQEAwIBRjAdBgNVHSAEFjAUMAgGBiqFA2RxATAIBgYqhQNkcQIwKAYFKoUDZG8E Hwwd0KHQmtCX0JggwqvQm9CY0KDQodCh0JstQ1NQwrswggGLBgNVHSMEggGCMIIB foAUi5g7iRhR6O+cAni46sjUILJVyV2hggFSpIIBTjCCAUoxHjAcBgkqhkiG9w0B CQEWD2RpdEBtaW5zdnlhei5ydTELMAkGA1UEBhMCUlUxHDAaBgNVBAgMEzc3INCz LiDQnNC+0YHQutCy0LAxFTATBgNVBAcMDNCc0L7RgdC60LLQsDE/MD0GA1UECQw2 MTI1Mzc1INCzLiDQnNC+0YHQutCy0LAsINGD0LsuINCi0LLQtdGA0YHQutCw0Y8s INC0LiA3MSwwKgYDVQQKDCPQnNC40L3QutC+0LzRgdCy0Y/Qt9GMINCg0L7RgdGB 0LjQuDEYMBYGBSqFA2QBEg0xMDQ3NzAyMDI2NzAxMRowGAYIKoUDA4EDAQESDDAw NzcxMDQ3NDM3NTFBMD8GA1UEAww40JPQvtC70L7QstC90L7QuSDRg9C00L7RgdGC 0L7QstC10YDRj9GO0YnQuNC5INGG0LXQvdGC0YCCEDRoHkDLQe8zqaC3yHaSmikw WQYDVR0fBFIwUDAmoCSgIoYgaHR0cDovL3Jvc3RlbGVjb20ucnUvY2RwL2d1Yy5j cmwwJqAkoCKGIGh0dHA6Ly9yZWVzdHItcGtpLnJ1L2NkcC9ndWMuY3JsMIHGBgUq hQNkcASBvDCBuQwj0J/QkNCa0JwgwqvQmtGA0LjQv9GC0L7Qn9GA0L4gSFNNwrsM INCf0JDQmiDCq9CT0L7Qu9C+0LLQvdC+0Lkg0KPQpsK7DDbQl9Cw0LrQu9GO0YfQ tdC90LjQtSDihJYgMTQ5LzMvMi8yLTk5OSDQvtGCIDA1LjA3LjIwMTIMONCX0LDQ utC70Y7Rh9C10L3QuNC1IOKEliAxNDkvNy8xLzQvMi02MDMg0L7RgiAwNi4wNy4y MDEyMAgGBiqFAwICAwNBALvjFGhdFE9llvlvKeQmZmkI5J+yO2jFWTh8nXPjIpiL OutUew2hIZv15pJ1QM/VgRO3BTBGDOoIrq8LvgC+3kA= -----END CERTIFICATE----- """ #c1 = fsb795.Certificate('OOO_VOLGA.der') #c1 = fsb795.Certificate('cert.der') c1 = fsb795.Certificate(certpem) if (c1.pyver == ''): print('Context for certificate not create') exit(-1) print('=================formatCert================================') print(c1.formatCert) res = c1.subjectSignTool() print('=================subjectSignTool================================') print (res) print('=================issuerSignTool================================') res1 = c1.issuerSignTool() print (res1[0]) print (res1[1]) print (res1[2]) print (res1[3]) print('=================prettyPrint================================') res2 = c1.prettyPrint() #print(res2) print('=================classUser================================') res3 = c1.classUser() print (res3) print('=================issuerCert================================') iss, vlad_is = c1.issuerCert() print ('vlad_is=' + str(vlad_is)) for key in iss.keys(): print (key + '=' + iss[key]) print('=================subjectCert================================') sub, vlad_sub = c1.subjectCert() print ('vlad_sub=' + str(vlad_sub)) for key in sub.keys(): print (key + '=' + sub[key]) print('================publicKey=================================') key_info = c1.publicKey() print(key_info['curve']) print(key_info['hash']) print(key_info['valuepk']) print('================serialNumber=================================') print(c1.serialNumber()) print('================validityCert=================================') valid = c1.validityCert() print(valid['not_after']) print(valid['not_before']) print('================signatureCert=================================') algosign, value = c1.signatureCert() print(algosign) print(value) print('================KeyUsage=================================') ku = c1.KeyUsage() for key in ku: print (key) # print(ku) print('================END=================================') 


рдкрд░реАрдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:

 $python test795.py 

рдЕрдкрдиреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ fsb795 рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде, рдпреЛрдЧреНрдп рдкреНрд░рдорд╛рдгрдкрддреНрд░ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЬрдЧрд░ рдХреЛ рдПрдХ рд╕реНрд╡-рдирд┐рд╣рд┐рдд, рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╕реНрд╡рддрдВрддреНрд░ рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдерд╛ред Tkinter рдкреИрдХреЗрдЬ рдХреЛ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рд╕рдорд░реНрдерди рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:



ViewCertFL63 рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рддреАрди рдЯреИрдм рд╣реИрдВред рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреИрдм рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд░реНрддрдорд╛рди рд╕рдордп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЗрд╕рдХреЗ рдиреАрдЪреЗ рд▓реМрдЯ рдЖрдПрдВрдЧреЗред рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ "рдЪрдпрди рдХрд░реЗрдВ" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:



рдмрдЯрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ (рдЬреЛ рд▓реЛрдЧ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рд╡реЗ рдЗрд╕ рдмрдЯрди рдХреЛ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗ), рдпрд╣ рдЖрдкрдХреЛ рддрдерд╛рдХрдерд┐рдд рдЕрджреГрд╢реНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ (рдЫрд┐рдкреА) рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдмрдЯрди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:

 if sys.platform != "win32": root.tk.call('set', '::tk::dialog::file::showHiddenBtn', '1') root.tk.call('set', '::tk::dialog::file::showHiddenVar', '0') 

рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдмрдЯрдиред рдЗрд╕рд▓рд┐рдП, рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЪреБрдирдиреЗ рдХреЗ рдмрд╛рдж, "рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ" рдЯреИрдм рдлреЙрд░реНрдо рд▓реЗрдЧрд╛:



рдпрд╣рд╛рдВ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рджреЗрдЦрдиреЗ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдКрдкрд░реА рдмрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ рдЖрдЗрдХрди рдкрд░ рд╕реАрд▓ рджреЛ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдЯреВрдЯ рдЬрд╛рдПрдЧреАред рд╣рд░ рдХреЛрдИ рдЗрд╕ рдкрд░ рдЖрд╢реНрд╡рд╕реНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдШрдбрд╝реА рдХреЛ рдлрд┐рд░ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ред
"рд╡рд┐рд╡рд░рдг" рдЯреИрдм рдкрд░, рдЖрдк рдПрдХ рдпреЛрдЧреНрдп рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреА рдЪрдпрдирд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:



рдФрд░ рдЕрдВрдд рдореЗрдВ, рддреАрд╕рд░рд╛ рдЯреИрдм "рдЯреЗрдХреНрд╕реНрдЯ" рд╣реИред рдпрд╣ рдЯреИрдм рдкреВрд░реЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:



рдкреНрд░рдорд╛рдг рдкрддреНрд░ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рди рдХреЗрд╡рд▓ рдкрд╛рдпрдерди ("рдкрд╛рдпрдерди" рдмрдЯрди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдиреЗрдЯрд╡рд░реНрдХ рд╕реАрд░рд┐рдпрд╕ рд╕рд░реНрд╡рд┐рд╕реЗрдЬ (рдПрдирдПрд╕рдПрд╕) рд╕реЗ рдЦреБрд▓рддрд╛ рд╣реИ рдФрд░ рдкреАрдкреА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВред рдпрджрд┐ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдпреЗ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рдХреЛ рд░реВрд╕реА рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдУрдкрдирд╕реЗрд▓ рдЗрдХрдЯреНрдард╛ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреАрдкреА рдпреВрдЯрд┐рд▓рд┐рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЖрдЙрдЯрдкреБрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



рдКрдкрд░, рд╣рдордиреЗ fsb795 рдкреИрдХреЗрдЬ рдХреЗ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рд╡рд░реНрдЧ рдХреЗ рдлреЙрд░реНрдореЗрдЯрд░реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдпрд╛ рдЙрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдЪрд▓рд╛рддреЗ рд╕рдордп рд╣рдореЗрдВ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдореВрд▓реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреАрдИрдПрдо рдлрд╛рдЗрд▓ рдлреЙрд░реНрдореЗрдЯ рдХреЗ рд╕рд╛рде рдкреАрдкреА рдпреВрдЯрд┐рд▓рд┐рдЯреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 $pp тАУtc тАУu тАУa тАУi < > 

-A рд╡рд┐рдХрд▓реНрдк PEM рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдбреАрдИрдЖрд░ рдкреНрд░рд╛рд░реВрдк рдХреЗ рд▓рд┐рдП, рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИред
рдЦреБрд▓рдиреЗ рдХреЗ рд▓рд┐рдП "-рдЗрдирдлреЙрд░реНрдо" рдкреИрд░рд╛рдореАрдЯрд░ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдпреВрдЯрд┐рд▓рд┐рдЯреА рдмрдЯрди рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдУрдкрдирд╕реЗрд▓ рдпрд╛ рдкреАрдкреА рдпреВрдЯрд┐рд▓рд┐рдЯреАрдЬ рдХреЗ рд▓рд┐рдП рд░рд╛рд╕реНрддрд╛ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
ViewCertFL63 рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╡рд┐рддрд░рдг рдпрд╣рд╛рдВ рд╕реНрдерд┐рдд рд╣реИрдВ ред
рд╡рд┐рддрд░рдг pyinstaller рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛:

 $python pyinstaller.py --noconsole -F viewCertFL63.py 

Source: https://habr.com/ru/post/hi421107/


All Articles