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) закрытого ключа')
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('Подпись сертификата прошла проверку')