Проверьте gpg подпись в Go openpgp
Я играю с написанием программы Go, которая загружает и проверяет файлы. Я надеюсь не заставлять пользователя устанавливать gnupg (если это возможно).
Можно ли проверить загруженный файл с подписью gpg (asc-файл), как описано здесь или здесь, используя openpgp lib Go или какую-то другую библиотеку Go?
Будем благодарны за любые примеры, демонстрирующие, как использовать openpgp для проверки файла с подписью asc.
1 ответ
Решение
Мне удалось проверить подпись gpg, используя следующий код:
package main
import (
"fmt"
"golang.org/x/crypto/openpgp"
"os"
)
func main() {
keyRingReader, err := os.Open("signer-pubkey.asc")
if err != nil {
fmt.Println(err)
return
}
signature, err := os.Open("signature.asc")
if err != nil {
fmt.Println(err)
return
}
verification_target, err := os.Open("mysql-5.7.9-win32.zip")
if err != nil {
fmt.Println(err)
return
}
keyring, err := openpgp.ReadArmoredKeyRing(keyRingReader)
if err != nil {
fmt.Println("Read Armored Key Ring: " + err.Error())
return
}
entity, err := openpgp.CheckArmoredDetachedSignature(keyring, verification_target, signature)
if err != nil {
fmt.Println("Check Detached Signature: " + err.Error())
return
}
fmt.Println(entity)
}
Полный код: https://gist.github.com/lsowen/d420a64821414cd2adfb