Skip to content

Instantly share code, notes, and snippets.

@kemadz
Forked from jyap808/public_key_encrypt_gpg_base64.go
Last active February 3, 2020 18:14
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kemadz/1686c90eea8014ddc44d to your computer and use it in GitHub Desktop.
Save kemadz/1686c90eea8014ddc44d to your computer and use it in GitHub Desktop.
Encrypt string with GPG public key into armored
package main
import (
"bytes"
"fmt"
"golang.org/x/crypto/openpgp"
"golang.org/x/crypto/openpgp/armor"
)
func gpg_pubkey_encrypt(s, key string) string {
buf := new(bytes.Buffer)
msg, _ := armor.Encode(buf, "PGP MESSAGE", nil)
pubkey, _ := openpgp.ReadArmoredKeyRing(bytes.NewBufferString(key))
gpg, _ := openpgp.Encrypt(msg, pubkey, nil, nil, nil)
fmt.Fprintf(gpg, s)
gpg.Close()
msg.Close()
return buf.String()
}
func main() {
fmt.Println(gpg_pubkey_encrypt("golang", publicKey))
}
// pub 1024R/7F98BBCE 2014-01-04
// uid Golang Test (Private key password is 'golang') <golangtest@test.com>
// sub 1024R/5F34A320 2014-01-04
const publicKey = `-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.15 (Darwin)
mI0EUsdthgEEAMKOAoeY+bAHEjdzcM9WhJ27T4QmX8SxLYcRo3rd2cuQawwCz7jf
bCzLCYyvMqoIvjSxuElVgFx97RyEv5yvLg7ngNfv6ADRlJXMVQ3YQahyeRofPJJ+
5S0F0JOahZlkAYWIHCUhLtoT/zpI7IeSwWjwtEL1b8YhZBLY9txp29TLABEBAAG0
REdvbGFuZyBUZXN0IChQcml2YXRlIGtleSBwYXNzd29yZCBpcyAnZ29sYW5nJykg
PGdvbGFuZ3Rlc3RAdGVzdC5jb20+iLgEEwECACIFAlLHbYYCGwMGCwkIBwMCBhUI
AgkKCwQWAgMBAh4BAheAAAoJEFVKIId/mLvOookD+wVQzZN8vZVkpYLsTU3XDBly
0H0F/vtJ4A9JWkYJnRyJRggV3DAajAq2OgOuxtiA+n5QY7JgwPq0bNYpomtBCgPJ
pCpVVGFs1cHsnPslPZqoocPW3tzHkV9TMMwE2i7dM5YeiYNfJAYMBQsBmeNo6Pz+
kN7qmjHIGW5KMwlTN8OmuI0EUsdthgEEAK1DA6pBp4PQqaZO91AVgXe44YW7ZNHm
kUIf4KFB4SiXq2eCzENtSCsiF/hkG7HA6XHKVzCOnk4V8ay/g/BuHDW+HsL09M3N
tPk/dc7YE/QP+FYn3BD0AhK06mP6GaYQM2TNaerEXp3NtnuNok9CIm3eYArNsJ0j
XlM8mw3LkIthABEBAAGInwQYAQIACQUCUsdthgIbDAAKCRBVSiCHf5i7zrpRA/9r
lIf6ozk+OvF6Cul7fN+8OOSUD6S6ohh/SiYKha1MSTMNWyBNhutOjmOoQoHhPmAv
Kp8tvYULV4SiKrlCP9ANait2gmYcKsqk/kI7xel4tIvx64EMAsgaKWN7hp3TG77Y
cVNCjtHerHjGZbRw6/GGlNSbw8DRQ0FbsPkasuexEw==
=jr2t
-----END PGP PUBLIC KEY BLOCK-----`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment