Skip to content

Instantly share code, notes, and snippets.

@lintianzhi
Created August 15, 2014 02:44
Show Gist options
  • Save lintianzhi/b007c40247394070e2af to your computer and use it in GitHub Desktop.
Save lintianzhi/b007c40247394070e2af to your computer and use it in GitHub Desktop.
gpg decrypt
package main
import (
"code.google.com/p/go.crypto/openpgp"
"github.com/qiniu/log"
"io/ioutil"
"os"
)
func main() {
sk, err := os.Open("secring.gpg")
logfatal(err)
kring, err := openpgp.ReadKeyRing(sk)
sk.Close()
logfatal(err)
passphrase := []byte("pass")
for _, entity := range kring {
if entity.PrivateKey != nil && entity.PrivateKey.Encrypted {
err = entity.PrivateKey.Decrypt(passphrase)
logfatal(err)
}
for _, subkey := range entity.Subkeys {
if subkey.PrivateKey != nil && subkey.PrivateKey.Encrypted {
err = subkey.PrivateKey.Decrypt(passphrase)
logfatal(err)
}
}
}
eb, err := os.Open("xx")
logfatal(err)
defer eb.Close()
md, err := openpgp.ReadMessage(eb, kring, nil, nil)
logfatal(err)
plain, err := ioutil.ReadAll(md.UnverifiedBody)
logfatal(err)
err = ioutil.WriteFile("xxx", plain, 0666)
logfatal(err)
}
func logfatal(err error) {
if err != nil {
log.Fatal(err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment