Разобрать asn1 с ГОСТ сертификатом с python - PullRequest
0 голосов
/ 05 июля 2019

Я начинающий на питоне.

Попытка создать какой-нибудь успокоительный API, который получит в качестве строки входных данных (подписанная фраза «Hello World» по какому-либо сертификату ГОСТ 2012 - русская криптография) и проанализировать ее. «Hello world» был подписан плагином браузера CADES BES

Но я получил ошибку и застрял на ней.

пример строки в кодировке base64:

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
K6AphidodHRwOi8vcmVlc3RyLXBraS5ydS9jZHAvZ3VjX2dvc3QxMi5jcmwwLaAroCmGJ2h0dHA6
Ly9jb21wYW55LnJ0LnJ1L2NkcC9ndWNfZ29zdDEyLmNybDAtoCugKYYnaHR0cDovL3Jvc3RlbGVj
b20ucnUvY2RwL2d1Y19nb3N0MTIuY3JsMEMGCCsGAQUFBwEBBDcwNTAzBggrBgEFBQcwAoYnaHR0
cDovL3JlZXN0ci1wa2kucnUvY2RwL2d1Y19nb3N0MTIuY3J0MIH1BgUqhQNkcASB6zCB6Aw00J/Q
kNCa0JwgwqvQmtGA0LjQv9GC0L7Qn9GA0L4gSFNNwrsg0LLQtdGA0YHQuNC4IDIuMAxD0J/QkNCa
IMKr0JPQvtC70L7QstC90L7QuSDRg9C00L7RgdGC0L7QstC10YDRj9GO0YnQuNC5INGG0LXQvdGC
0YDCuww10JfQsNC60LvRjtGH0LXQvdC40LUg4oSWIDE0OS8zLzIvMi8yMyDQvtGCIDAyLjAzLjIw
MTgMNNCX0LDQutC70Y7Rh9C10L3QuNC1IOKEliAxNDkvNy82LzEwNSDQvtGCIDI3LjA2LjIwMTgw
CgYIKoUDBwEBAwIDQQCPEsUWahdFUiSEW47UoDlqOX34Q5BaJwVJy77feC2FcSqtoILE68BpPIsZ
ettY4vfk/4QjuUWO+Aca6PXKnir8MIIJSDCCCPWgAwIBAgIRAIKLCnrEDB676BFH/UnwFIEwCgYI
KoUDBwEBAwIwggEuMRowGAYJKoZIhvcNAQkBFgt1Y0BzenRscy5ydTEYMBYGBSqFA2QBEg0xMDU3
ODEyMDI4NDE2MRowGAYIKoUDA4EDAQESDDAwNzgxNDMyNTIyNjELMAkGA1UEBhMCUlUxKTAnBgNV
BAgMIDc4INCh0LDQvdC60YIt0J/QtdGC0LXRgNCx0YPRgNCzMSYwJAYDVQQHDB3QodCw0L3QutGC
LdCf0LXRgtC10YDQsdGD0YDQszE6MDgGA1UECQwx0YPQuy4g0KLQvtGA0LbQutC+0LLRgdC60LDR
jywg0LQuIDQsINC+0YTQuNGBIDUxMTEeMBwGA1UECgwV0J7QntCeIMKr0KHQl9Ci0JvQocK7MR4w
HAYDVQQDDBXQntCe0J4gwqvQodCX0KLQm9ChwrswHhcNMTgxMjExMTMxMDIwWhcNMTkxMjExMTMx
MDIwWjCCAeExFjAUBgUqhQNkAxILMTY4Njc0MjY1MjExGDAWBgUqhQNkARINMTA1NzgxMjAyODQx
NjEaMBgGCCqFAwOBAwEBEgwwMDc4MTQzMjUyMjYxITAfBgkqhkiG9w0BCQEWEnkuc21pcm5vdkBz
enRscy5ydTELMAkGA1UEBhMCUlUxLTArBgNVBAgMJDc4INCzLiDQodCw0L3QutGCLdCf0LXRgtC1
0YDQsdGD0YDQszEmMCQGA1UEBwwd0KHQsNC90LrRgi3Qn9C10YLQtdGA0LHRg9GA0LMxOzA5BgNV
BAkMMtGD0LsuINCi0L7RgNC20LrQvtCy0YHQutCw0Y8gLCDQtC4gNCwg0L7RhNC40YEgNTExMQ8w
DQYDVQQLDAbQmNCi0KExHjAcBgNVBAoMFdCe0J7QniDCq9Ch0JfQotCb0KHCuzEeMBwGA1UEAwwV
0J7QntCeIMKr0KHQl9Ci0JvQocK7MTswOQYDVQQMDDLQl9Cw0LzQtdGB0YLQuNGC0LXQu9GMINC9
0LDRh9Cw0LvRjNC90LjQutCwINCY0KLQoTEmMCQGA1UEKgwd0K7RgNC40Lkg0JTQvNC40YLRgNC4
0LXQstC40YcxFzAVBgNVBAQMDtCh0LzQuNGA0L3QvtCyMGYwHwYIKoUDBwEBAQEwEwYHKoUDAgIk
AAYIKoUDBwEBAgIDQwAEQJjCdPnpO/7D/ZrJKCq/vFexq6llis9nhSOWpsKUCizAiqw0CuH7OgCS
L/vjBEYWjUQzKtaR07vZzf1G1s8v+vajggUuMIIFKjAOBgNVHQ8BAf8EBAMCBPAwHQYDVR0OBBYE
FARal0VEBHN1v/pmculoIgp2NMOpMIIBXwYDVR0jBIIBVjCCAVKAFGOeXT+bcpgpEWy44+ndWC3T
Wp+4oYIBLKSCASgwggEkMR4wHAYJKoZIhvcNAQkBFg9kaXRAbWluc3Z5YXoucnUxCzAJBgNVBAYT
AlJVMRgwFgYDVQQIDA83NyDQnNC+0YHQutCy0LAxGTAXBgNVBAcMENCzLiDQnNC+0YHQutCy0LAx
LjAsBgNVBAkMJdGD0LvQuNGG0LAg0KLQstC10YDRgdC60LDRjywg0LTQvtC8IDcxLDAqBgNVBAoM
I9Cc0LjQvdC60L7QvNGB0LLRj9C30Ywg0KDQvtGB0YHQuNC4MRgwFgYFKoUDZAESDTEwNDc3MDIw
MjY3MDExGjAYBggqhQMDgQMBARIMMDA3NzEwNDc0Mzc1MSwwKgYDVQQDDCPQnNC40L3QutC+0LzR
gdCy0Y/Qt9GMINCg0L7RgdGB0LjQuIIKEQFGBgAAAAAASDBSBgNVHSUESzBJBggrBgEFBQcDBAYH
KoUDA4FXCwYHKoUDA4FXDAYHKoUDA4FXDQYHKoUDA4FXBAYHKoUDA4FXBgYHKoUDA4FXBwYHKoUD
A4FXCDAdBgNVHSAEFjAUMAgGBiqFA2RxATAIBgYqhQNkcQIwKwYDVR0QBCQwIoAPMjAxODEyMTEx
MzEwMTlagQ8yMDE5MTIxMTEzMTAxOVowggEzBgUqhQNkcASCASgwggEkDCsi0JrRgNC40L/RgtC+
0J/RgNC+IENTUCIgKNCy0LXRgNGB0LjRjyA0LjApDFMi0KPQtNC+0YHRgtC+0LLQtdGA0Y/RjtGJ
0LjQuSDRhtC10L3RgtGAICLQmtGA0LjQv9GC0L7Qn9GA0L4g0KPQpiIg0LLQtdGA0YHQuNC4IDIu
MAxP0KHQtdGA0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNGPIOKEliDQodCk
LzEyNC0zMDEwINC+0YIgMzAuMTIuMjAxNgxP0KHQtdGA0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQ
stC10YLRgdGC0LLQuNGPIOKEliDQodCkLzEyOC0yOTgzINC+0YIgMTguMTEuMjAxNjA0BgUqhQNk
bwQrDCnQmtGA0LjQv9GC0L7Qn9GA0L4gQ1NQICjQstC10YDRgdC40Y8gNC4wKTCBtwYDVR0fBIGv
MIGsMC+gLaArhilodHRwOi8vd3d3LnN6dGxzLnJ1L2NjMi9zenRscy0wNy0yMDE4LmNybDA5oDeg
NYYzaHR0cDovL2NhLmNjMi5zenRscy5ydS9jZXJ0ZW5yb2xsL3N6dGxzLTA3LTIwMTguY3JsMD6g
PKA6hjhodHRwOi8vMTAuMjEuMTcuNjYvaW1hZ2VzL3N0b3JpZXMvZmlsZS9zenRscy0wNy0yMDE4
LmNybDCBzgYIKwYBBQUHAQEEgcEwgb4wNQYIKwYBBQUHMAKGKWh0dHA6Ly93d3cuc3p0bHMucnUv
Y2MyL3N6dGxzLTA3LTIwMTguY3J0MD8GCCsGAQUFBzAChjNodHRwOi8vY2EuY2MyLnN6dGxzLnJ1
L2NlcnRlbnJvbGwvc3p0bHMtMDctMjAxOC5jcnQwRAYIKwYBBQUHMAKGOGh0dHA6Ly8xMC4yMS4x
Ny42Ni9pbWFnZXMvc3Rvcmllcy9maWxlL3N6dGxzLTA3LTIwMTguY2VyMAoGCCqFAwcBAQMCA0EA
FMJuUM30SBmEptufB6NVzrn5CUy0t+7JJZiqnBF/Ndjh4hgknxAh959evUnLwdou2c4GHCTxqLfk
AVNXg2yZXTGCA7swggO3AgEBMIIBRTCCAS4xGjAYBgkqhkiG9w0BCQEWC3VjQHN6dGxzLnJ1MRgw
FgYFKoUDZAESDTEwNTc4MTIwMjg0MTYxGjAYBggqhQMDgQMBARIMMDA3ODE0MzI1MjI2MQswCQYD
VQQGEwJSVTEpMCcGA1UECAwgNzgg0KHQsNC90LrRgi3Qn9C10YLQtdGA0LHRg9GA0LMxJjAkBgNV
BAcMHdCh0LDQvdC60YIt0J/QtdGC0LXRgNCx0YPRgNCzMTowOAYDVQQJDDHRg9C7LiDQotC+0YDQ
ttC60L7QstGB0LrQsNGPLCDQtC4gNCwg0L7RhNC40YEgNTExMR4wHAYDVQQKDBXQntCe0J4gwqvQ
odCX0KLQm9ChwrsxHjAcBgNVBAMMFdCe0J7QniDCq9Ch0JfQotCb0KHCuwIRAIKLCnrEDB676BFH
/UnwFIEwDAYIKoUDBwEBAgIFAKCCAgkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG
9w0BCQUxDxcNMTkwNDExMDgxNzMzWjAvBgkqhkiG9w0BCQQxIgQgZmz0+/dOxopm6N09MGGwM3Vo
ziGhBFQdTe4D9USMKa8wggGcBgsqhkiG9w0BCRACLzGCAYswggGHMIIBgzCCAX8wCgYIKoUDBwEB
AgIEIH2zmGuHPsg6qUlpyHIPuz5cQu0zwmqCpgoFMrK8gO+yMIIBTTCCATakggEyMIIBLjEaMBgG
CSqGSIb3DQEJARYLdWNAc3p0bHMucnUxGDAWBgUqhQNkARINMTA1NzgxMjAyODQxNjEaMBgGCCqF
AwOBAwEBEgwwMDc4MTQzMjUyMjYxCzAJBgNVBAYTAlJVMSkwJwYDVQQIDCA3OCDQodCw0L3QutGC
LdCf0LXRgtC10YDQsdGD0YDQszEmMCQGA1UEBwwd0KHQsNC90LrRgi3Qn9C10YLQtdGA0LHRg9GA
0LMxOjA4BgNVBAkMMdGD0LsuINCi0L7RgNC20LrQvtCy0YHQutCw0Y8sINC0LiA0LCDQvtGE0LjR
gSA1MTExHjAcBgNVBAoMFdCe0J7QniDCq9Ch0JfQotCb0KHCuzEeMBwGA1UEAwwV0J7QntCeIMKr
0KHQl9Ci0JvQocK7AhEAgosKesQMHrvoEUf9SfAUgTAMBggqhQMHAQEBAQUABECZj2YH53aumvR2
hM74JSd79eqsid/EhbwgF8sHB6meeEgyJB4vgUhkD5Vbrx9rMJ+POSu4pRo6WQ4HLDqiy8V9

Код:

from base64 import b64decode
from Crypto.Cipher import AES
import asn1
from pyasn1_modules import pem, rfc3280, rfc2511
from pyasn1.codec.der import decoder


with open('file.txt', 'rb') as f:
    derData = b64decode(f.read())

s = decoder.decode(derData, asn1Spec=rfc3280.Certificate())
print(s)

Ошибка

Traceback (последний вызов был последним): decoder.decode (derData, asn1Spec = rfc3280.Certificate ()) stGetValueDecoder, самостоятельно, подложка Fun компонент, голова = decodeFun (голова, asn1Spec) «% s отсутствует в asn1Spec:% s»% (tagSet, asn1Spec) pyasn1.error.PyAsn1Error: [0: 0: 6] отсутствует в asn1Spec: TagMap:. , .

...