Exemple #1
0
 def parsecert(self, cert_der_hex):
     try:
         status = ''
         dd = pyp11.parsecert(self.handle, self.slotid, cert_der_hex)
     except:
         e = sys.exc_info()[1]
         e1 = e.args[0]
         #Возвращаеи текст ошибки в status
         dd = ''
         status = e1
     return (dd, status)
#cert_der_hex = '3082069d30820648a00302010202021016300c06082a8503070101030205003081e2310b3009060355040613025255312c302a06035504080c23d09cd0bed181d0bad0bed0b2d181d0bad0b0d18f20d0bed0b1d0bbd0b0d181d182d18c3120301e06035504070c17476e75504720d093d09ed0a1d0a22d323031322d32353631143012060355040a0c0bd0a3d0a62031325f3235363114301206035504030c0bd0a3d0a62031325f323536311a301806082a85030381030101120c3132333435363738393031323118301606052a85036401120d313233343536373839303132333121301f06092a864886f70d010901161263615f31325f323536406c697373692e7275301e170d3230303631393039323533305a170d3233303931343039323533305a3081e4310b30090603550406130252553141303f06035504080c38d0a7d183d0b2d0b0d188d181d0bad0b0d18f20d0a0d0b5d181d0bfd183d0b1d0bbd0b8d0bad0b0202d20d0a7d183d0b2d0b0d188d0b8d18f310e300c06035504070c0564667364663111300f06035504030c0854657874344b6579310e300c06035504040c056473666664310e300c060355042a0c056378767863311a301806082a85030381030101120c3232323232323232323232323116301406052a85036403120b3333333333333333333333311b301906092a864886f70d010901160c6b657934406b6579342e72753066301f06082a85030701010101301306072a85030202240006082a850307010102020343000440a9816daf3fb8618718f5d9ed51ebf235bd09d6eb50184f3453dbf2481834211f7c6466b1aae96f1c0fee2675a74b71983df5a73dd60cf315b5d1028baa4e5a30a38203d9308203d5300c0603551d130101ff040230003081ae06052a850364700481a43081a10c3ad09dd0b0d0b8d0bcd0b5d0bdd0bed0b2d0b0d0bdd0b8d0b520d0a1d09ad097d09820d0bfd0bed0bbd18cd0b7d0bed0b2d0b0d182d0b5d0bbd18f0c1cd0a2d0b5d181d182d0bed0b2d18bd0b920d0a3d0a6204341464c36330c26d0a1d0b5d180d182d0b8d184d0b8d0bad0b0d18220d0a1d09ad097d09820d0a3d0a620e284960c1dd0a1d0b5d180d182d0b8d184d0b8d0bad0b0d18220d0a3d0a620e28496304506052a8503646f043c0c3ad09dd0b0d0b8d0bcd0b5d0bdd0bed0b2d0b0d0bdd0b8d0b520d0a1d09ad097d09820d0bfd0bed0bbd18cd0b7d0bed0b2d0b0d182d0b5d0bbd18f301d0603551d2004163014300806062a8503647101300806062a8503647102300b0603551d0f0404030204f0301106096086480186f84201010404030205a03082012c0603551d25048201233082011f06082b0601050507030206082b06010505070304060a2b06010401823714020206062a850364020106072a85030202220606082b0601050507030206082b0601050507030406092a850305011802010306052a8503060e06072a85030381570406072a85030381570506072a85030381570606072a85030381570706072a85030381570806072a85030381570906072a85030381570b06072a85030381570c06072a85030381570d060b2b0601040182bf2601010106082a8503024001010106082a850303050a020c06062a850306030206082a8503050118022e06082a8503062d01010106082a8503050118021e06072a850305011c0206072a850305011c0306082a850303814a010806082b0601050507030206082b06010505070304301d0603551d0e041604148491c02f2faa4711e096d0155d75f47540e878d2308201190603551d23048201103082010c80146d3700d64bf7ed43c3ebc25962639626272651cca181e8a481e53081e2310b3009060355040613025255312c302a06035504080c23d09cd0bed181d0bad0bed0b2d181d0bad0b0d18f20d0bed0b1d0bbd0b0d181d182d18c3120301e06035504070c17476e75504720d093d09ed0a1d0a22d323031322d32353631143012060355040a0c0bd0a3d0a62031325f3235363114301206035504030c0bd0a3d0a62031325f323536311a301806082a85030381030101120c3132333435363738393031323118301606052a85036401120d313233343536373839303132333121301f06092a864886f70d010901161263615f31325f323536406c697373692e7275820900c6047cfc0235e1eb30170603551d110410300e810c6b657934406b6579342e727530090603551d1204023000300c06082a85030701010302050003410015e2ad073f8bddfb763e0b46a5c8c554c359e4b989899f56850571ff2f6c967c953c61ae3e1f3eac45228dbbf6a31f7de2de07306c2d2be704712182eed71e8c'

########################
#Читаем серификат в DER-кодировке из файла
with open("cert_256.der", "rb") as f:
    cert_der = f.read()
#Упаковываем der в hex
cert_der_hex = bytes(cert_der).hex()
#
#Перевод из hex в der
#cert_der = bytearray.fromhex(cert_der_hex)
#Перевод из binary в hex
#cert_der_hex = bytes(cert_der).hex()
#cert_der_hex = bytes(bytearray.fromhex(cert_der_hex)).hex()

print('parsecert')
dd, stat = t1.parsecert(cert_der_hex)
if (stat != ''):
    print('Ошибка при parsecert')
    print(stat)
    quit()
for key in dd.keys():
    print(key + ': ' + dd[key])
print('parsecert END')
dd = pyp11.parsecert(cert_der_hex)
print('parsecert END not slot')
print(dd.keys())
for key in dd.keys():
    print(key + ': ' + dd[key])
    print(e1)

#cert_der_hex = '3082069d30820648a00302010202021016300c06082a8503070101030205003081e2310b3009060355040613025255312c302a06035504080c23d09cd0bed181d0bad0bed0b2d181d0bad0b0d18f20d0bed0b1d0bbd0b0d181d182d18c3120301e06035504070c17476e75504720d093d09ed0a1d0a22d323031322d32353631143012060355040a0c0bd0a3d0a62031325f3235363114301206035504030c0bd0a3d0a62031325f323536311a301806082a85030381030101120c3132333435363738393031323118301606052a85036401120d313233343536373839303132333121301f06092a864886f70d010901161263615f31325f323536406c697373692e7275301e170d3230303631393039323533305a170d3233303931343039323533305a3081e4310b30090603550406130252553141303f06035504080c38d0a7d183d0b2d0b0d188d181d0bad0b0d18f20d0a0d0b5d181d0bfd183d0b1d0bbd0b8d0bad0b0202d20d0a7d183d0b2d0b0d188d0b8d18f310e300c06035504070c0564667364663111300f06035504030c0854657874344b6579310e300c06035504040c056473666664310e300c060355042a0c056378767863311a301806082a85030381030101120c3232323232323232323232323116301406052a85036403120b3333333333333333333333311b301906092a864886f70d010901160c6b657934406b6579342e72753066301f06082a85030701010101301306072a85030202240006082a850307010102020343000440a9816daf3fb8618718f5d9ed51ebf235bd09d6eb50184f3453dbf2481834211f7c6466b1aae96f1c0fee2675a74b71983df5a73dd60cf315b5d1028baa4e5a30a38203d9308203d5300c0603551d130101ff040230003081ae06052a850364700481a43081a10c3ad09dd0b0d0b8d0bcd0b5d0bdd0bed0b2d0b0d0bdd0b8d0b520d0a1d09ad097d09820d0bfd0bed0bbd18cd0b7d0bed0b2d0b0d182d0b5d0bbd18f0c1cd0a2d0b5d181d182d0bed0b2d18bd0b920d0a3d0a6204341464c36330c26d0a1d0b5d180d182d0b8d184d0b8d0bad0b0d18220d0a1d09ad097d09820d0a3d0a620e284960c1dd0a1d0b5d180d182d0b8d184d0b8d0bad0b0d18220d0a3d0a620e28496304506052a8503646f043c0c3ad09dd0b0d0b8d0bcd0b5d0bdd0bed0b2d0b0d0bdd0b8d0b520d0a1d09ad097d09820d0bfd0bed0bbd18cd0b7d0bed0b2d0b0d182d0b5d0bbd18f301d0603551d2004163014300806062a8503647101300806062a8503647102300b0603551d0f0404030204f0301106096086480186f84201010404030205a03082012c0603551d25048201233082011f06082b0601050507030206082b06010505070304060a2b06010401823714020206062a850364020106072a85030202220606082b0601050507030206082b0601050507030406092a850305011802010306052a8503060e06072a85030381570406072a85030381570506072a85030381570606072a85030381570706072a85030381570806072a85030381570906072a85030381570b06072a85030381570c06072a85030381570d060b2b0601040182bf2601010106082a8503024001010106082a850303050a020c06062a850306030206082a8503050118022e06082a8503062d01010106082a8503050118021e06072a850305011c0206072a850305011c0306082a850303814a010806082b0601050507030206082b06010505070304301d0603551d0e041604148491c02f2faa4711e096d0155d75f47540e878d2308201190603551d23048201103082010c80146d3700d64bf7ed43c3ebc25962639626272651cca181e8a481e53081e2310b3009060355040613025255312c302a06035504080c23d09cd0bed181d0bad0bed0b2d181d0bad0b0d18f20d0bed0b1d0bbd0b0d181d182d18c3120301e06035504070c17476e75504720d093d09ed0a1d0a22d323031322d32353631143012060355040a0c0bd0a3d0a62031325f3235363114301206035504030c0bd0a3d0a62031325f323536311a301806082a85030381030101120c3132333435363738393031323118301606052a85036401120d313233343536373839303132333121301f06092a864886f70d010901161263615f31325f323536406c697373692e7275820900c6047cfc0235e1eb30170603551d110410300e810c6b657934406b6579342e727530090603551d1204023000300c06082a85030701010302050003410015e2ad073f8bddfb763e0b46a5c8c554c359e4b989899f56850571ff2f6c967c953c61ae3e1f3eac45228dbbf6a31f7de2de07306c2d2be704712182eed71e8c'

########################
#Читаем серификат в DER-кодировке из файла
with open("cert_256.der", "rb") as f:
    #    cert = Certificate.load(f.read())
    cert_der = f.read()
#Упаковываем der в hex
cert_der_hex = bytes(cert_der).hex()
#
#Перевод из hex в der
#cert_der = bytearray.fromhex(cert_der_hex)
#Перевод из binary в hex
#cert_der_hex = bytes(cert_der).hex()
#cert_der_hex = bytes(bytearray.fromhex(cert_der_hex)).hex()

print('PubKeyInfo')
dd = pyp11.parsecert(aa, 0, cert_der_hex)
for key in dd.keys():
    print(key + ': ' + dd[key])
print('PubKeyInfo END')
#print (dd)
dd = pyp11.parsecert(cert_der_hex)
print('PubKeyInfo END not slot')
#print (dd)
print(dd.keys())
for key in dd.keys():
    print(key + ': ' + dd[key])
Exemple #4
0
fileCA = "CA_12_512.der"
#Файл с сертификатов пользователя в DER-кодировке
fileUser = "******"
#Читаем корневой серификат в DER-кодировке из файла
with open(fileCA, "rb") as f:
    certCA = f.read()
#Упаковываем der в hex
certCA_hex = bytes(certCA).hex()
#Читаем серификат пользователя в DER-кодировке из файла
with open(fileUser, "rb") as f:
    certHabr = f.read()
#Упаковываем der в hex
certHabr_hex = bytes(certHabr).hex()

print('Разбираем корневой сертификат')
parseCA = pyp11.parsecert(aa, 0, certCA_hex)
print('Разбираем сертификат пользователя')
parseHabre = pyp11.parsecert(certHabr_hex)
print(parseHabre.keys())
#Проверяем, что издатель сертификата совпадает с владельцем корневого сертификата
if (parseCA.get('subject') != parseHabre.get('issuer')):
    print('Сертификат выдан на другом УЦ')
    quit()
print('Сертификат выдан на данном УЦ')
#Переводим tbsCertificate пользователь в binary
tbs_hex = parseHabre.get('tbsCertificate')
tbsHabrDer = bytes(bytearray.fromhex(tbs_hex))
#tbsHabrDer = '1111'
#Получаем хэш для tbs-сертификата
hashTbs_hex = pyp11.digest(aa, 0, "stribog512", tbsHabrDer)
#hashTbs_hex = pyp11.digest(aa, 0, "stribog256", tbsHabrDer)