# #validation #go #digital-signature #x509certificate
Вопрос:
file, _ := ioutil.ReadFile(filename)
block, _ := pem.Decode(file)
cert, err := x509.ParseCertificate(block.Bytes)
У меня есть приведенный выше код в моей программе, где у меня есть exe-файл для проверки цифровой подписи. Я передаю имя exe-файла как «имя файла». И программа, и файл приложения находятся в одном каталоге. Но этот фрагмент кода ожидает файл сертификата в качестве аргумента, поэтому «блок» здесь получает нулевое значение, из-за которого block.bytes также равен нулю. Это приводит к ошибке здесь. Как я могу найти файл сертификата из exe-файла или найти способ проверки exe-файла с помощью пакета x509?
Комментарии:
1. Вам нужно извлечь подпись из исполняемого файла. Либо найдите библиотеку, которая это делает, либо вызовите signtool.
2. Google «аутентифицирует формат pe», в нем объясняется, как подписывается файл PE и где хранится подпись .
3. Привет @Marc, я не нахожу библиотеки для извлечения этой подписи, и я внедрил Wintrust для проверки подписи, но теперь я также хочу проверить то же самое, сравнив имя субъекта или имя эмитента, например:- Корпорация Microsoft и т. Д. В идеале это можно было бы сделать с помощью проверки x509, но я не могу понять, как это сделать в golang.