我想生成 OpenPGP 密钥对并在导出之前使用“密码”对其进行加密。我想在 Go 中使用它的 openpgp 包 来做到这一点。到目前为止,我已经生成了密钥对,导出了它们,并使用链接到here的简单包装器成功将公钥导入到 GnuPG 中进行加密。
在将私钥导出到 ASCII 盔甲之前,我仍然需要使用“密码”对私钥进行加密。有人可以给我提供一个示例或一些关于如何执行此操作的提示吗?
go mod init gpg
go mod tidy
go run main.go
package main
import (
"fmt"
"strings"
"github.com/ProtonMail/gopenpgp/v2/crypto"
"github.com/ProtonMail/gopenpgp/v2/helper"
)
func main() {
var (
name = "Max Mustermann"
email = "[email protected]"
passphrase = []byte("LongSecret")
rsaBits = 2048 * 2
)
// RSA, string
rsaKey, err := helper.GenerateKey(name, email, passphrase, "rsa", rsaBits)
if err != nil {
panic(err)
}
fmt.Println(rsaKey)
keyRing, err := crypto.NewKeyFromArmoredReader(strings.NewReader(rsaKey))
if err != nil {
panic(err)
}
publicKey, err := keyRing.GetArmoredPublicKey()
if err != nil {
panic(err)
}
fmt.Println(publicKey)
}