]> Sergey Matveev's repositories - stargrave-blog.git/commit
Бага в Go, когда есть X.509 сертификат с неподдерживаемым алгоритмом
authorSergey Matveev <stargrave@stargrave.org>
Sun, 26 Mar 2023 12:34:07 +0000 (15:34 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Sun, 26 Mar 2023 12:34:07 +0000 (15:34 +0300)
commit9a4adf51f358a9f04dafe9979d7472ff72c1815c
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904
parent938ae4238d5588e87dc75f76b0f75afcc586c16a
Бага в Go, когда есть X.509 сертификат с неподдерживаемым алгоритмом

Обнаружилась проблема в Go. Если в списке доверенных сертификатов есть,
например, с ГОСТовым алгоритмом, то при попытке проверки сертификата, он
запаникует:

    panic: interface conversion: interface is nil, not x509.pubKeyEqual

    goroutine 194 [running]:
    crypto/x509.alreadyInChain(0xc000466100, {0xc00029e760, 0x2, 0xc0006062e8?})
            /.../src/crypto/x509/verify.go:870 +0x14a

То есть, авторы crypto/x509 не предполагают что может быть алгоритм
который они не поддерживают. Я то этого всего не замечал, так как
использую fork с поддержкой ГОСТов, но если подсунуть мой CA bundle
(http://www.ca.cypherpunks.ru/cert.pem.), то на обычной версии Go это
проявится.