为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go openpgp 中验证 gpg 签名

在 Go openpgp 中验证 gpg 签名

Go
犯罪嫌疑人X 2021-11-22 20:01:57
我正在编写一个下载和验证文件的 Go 程序。我希望避免强迫用户安装 gnupg(如果可能)。是否可以使用 Go 的 openpgp lib 或其他一些 Go 库来验证具有 gpg 签名(asc 文件)的下载文件,如此处或此处所述?任何演示如何使用 openpgp 验证具有 asc 签名的文件的示例都将不胜感激。
查看完整描述

1 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

我能够使用以下代码验证 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


查看完整回答
反对 回复 2021-11-22
  • 1 回答
  • 0 关注
  • 226 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信