func ReadJSKey() { pubringFile, _ := os.Open("path to public keyring") defer pubringFile.Close() pubring, _ := openpgp.ReadArmoredKeyRing(pubringFile) theirPublicKey := getKeyByEmail(pubring, "*****@*****.**") secringFile, _ := os.Open("path to private keyring") defer secringFile.Close() secring, _ := openpgp.ReadArmoredKeyRing(secringFile) myPrivateKey := getKeyByEmail(secring, "*****@*****.**") myPrivateKey.PrivateKey.Decrypt([]byte("passphrase")) var hint openpgp.FileHints hint.IsBinary = false hint.FileName = "_CONSOLE" hint.ModTime = time.Now() w, _ := armor.Encode(os.Stdout, "PGP MESSAGE", nil) defer w.Close() plaintext, _ := openpgp.Encrypt(w, []*openpgp.Entity{theirPublicKey}, myPrivateKey, &hint, nil) defer plaintext.Close() fmt.Fprintf(plaintext, "黄勇刚在熟悉OpenPGP代码\n") }
func main() { //NewEntity("hyg", "*****@*****.**", "secfile.key") //return pubringFile, _ := os.Open("path to public keyring") defer pubringFile.Close() pubring, _ := openpgp.ReadKeyRing(pubringFile) //theirPublicKey := getKeyByEmail(pubring, "*****@*****.**") theirPublicKey := getKeyByEmail(pubring, "*****@*****.**") secringFile, _ := os.Open("path to private keyring") defer secringFile.Close() sevring, _ := openpgp.ReadKeyRing(secringFile) myPrivateKey := getKeyByEmail(sevring, "*****@*****.**") //theirPublicKey.Serialize(os.Stdout) //myPrivateKey.Serialize(os.Stdout) //myPrivateKey.SerializePrivate(os.Stdout, nil) myPrivateKey.PrivateKey.Decrypt([]byte("passphrase")) /* // bug: have to input the correct passphrase at the first time for myPrivateKey.PrivateKey.Encrypted { fmt.Print("PGP passphrase: ") pgppass := gopass.GetPasswd() myPrivateKey.PrivateKey.Decrypt([]byte(pgppass)) if myPrivateKey.PrivateKey.Encrypted { fmt.Println("Incorrect. Try again or press ctrl+c to exit.") } } */ var hint openpgp.FileHints hint.IsBinary = false hint.FileName = "_CONSOLE" hint.ModTime = time.Now() w, _ := armor.Encode(os.Stdout, "PGP MESSAGE", nil) defer w.Close() plaintext, _ := openpgp.Encrypt(w, []*openpgp.Entity{theirPublicKey}, myPrivateKey, &hint, nil) defer plaintext.Close() fmt.Fprintf(plaintext, "黄勇刚在熟悉OpenPGP代码\n") }