diff options
Diffstat (limited to 'build/utils.go')
-rw-r--r-- | build/utils.go | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/build/utils.go b/build/utils.go new file mode 100644 index 000000000..df869efd0 --- /dev/null +++ b/build/utils.go @@ -0,0 +1,39 @@ +// +build none + +package build + +import ( + "bytes" + "encoding/base64" + + "golang.org/x/crypto/openpgp" + "golang.org/x/crypto/openpgp/armor" +) + +// GenerateEncodedPGPKeyPair generate base64 encoded PGP key pair +func GenerateEncodedPGPKeyPair(name, comment, email string) (string, error) { + var e *openpgp.Entity + e, err := openpgp.NewEntity(name, comment, email, nil) + if err != nil { + return "", err + } + + keyBuffer := bytes.Buffer{} + w, err := armor.Encode(&keyBuffer, openpgp.PrivateKeyType, nil) + if err != nil { + return "", err + } + + err = e.SerializePrivate(w, nil) + if err != nil { + return "", err + } + w.Close() + + base64Buffer := bytes.Buffer{} + en := base64.NewEncoder(base64.StdEncoding, &base64Buffer) + en.Write(keyBuffer.Bytes()) + en.Close() + + return base64Buffer.String(), nil +} |