예제 #1
0
    print(status)
    quit()

print('\tСгенерировали ключевую пару: ' + key_type + ' c параметром: ' +
      par_key + ' и меткой: ' + labkey)
for key in genkey.keys():
    print(key + ': ' + genkey.get(key))

hpubkey = genkey.get("hobj_pubkey")
hprivkey = genkey.get("hobj_privkey")
pubkeyinfo = genkey.get("pubkeyinfo")
pkcs11_id = genkey.get("pkcs11_id")

ckmpair = 'CKM_GOSTR3410_512'
print('\tСчитаем хэш для подписи')
digest_hex, stat = t1.digest("stribog512", "12345678900987654321")
if (stat != ''):
    print('Неудалось посчитать хэш')
    print(stat)
    quit()

print(digest_hex)
print('\tПодписываем по handle закрытого ключа')
#Для подписания используем handle закрытого ключа
sign_hex, stat = t1.sign(ckmpair, digest_hex, hprivkey)
if (stat != ''):
    print(stat)
    quit()
#Для подписания используем CKA_ID закрытого ключа
sign1_hex1, stat = t1.sign(ckmpair, digest_hex, pkcs11_id)
print('\tПодписываем по pkcs11_id (CKA_ID)  закрытого ключа')
예제 #2
0
parseHabre, stat = t1.parsecert(certHabr_hex)
if (stat != ''):
    print(stat)
    quit()
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, stat = t1.digest("stribog512", tbsHabrDer)
if (stat != ''):
    print(stat)
    quit()
#hashTbs_hex, stat = t1.digest("stribog256", tbsHabrDer)
verify, stat = t1.verify(hashTbs_hex, parseHabre.get('signature'),
                         parseCA.get('pubkeyinfo'))
#verify, stat = t1.verify(hashTbs_hex, parseHabre.get('signature'), parseHabre.get('pubkeyinfo'))
if (stat != ''):
    print('Ошибка при проверке подписи:')
    print(stat)
    quit()
if (verify != 1):
    print('Подпись сертификата не прошла проверку')
    quit()
print('Подпись сертификата прошла проверку')