53 lines
849 B
Go
53 lines
849 B
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/ProtonMail/gopenpgp/v3/crypto"
|
|
)
|
|
|
|
const keyFile = "pubkey.asc"
|
|
|
|
func generateFile() string {
|
|
return "this is a file"
|
|
}
|
|
|
|
func encryptFile(content string) []byte {
|
|
publicKeyArmored, err := os.ReadFile(keyFile)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
publicKey, err := crypto.NewKeyFromArmored(string(publicKeyArmored))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
pgp := crypto.PGP()
|
|
enc, err := pgp.Encryption().Recipient(publicKey).New()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
message, err := enc.Encrypt([]byte(content))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
messageArmored, err := message.ArmorBytes()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return messageArmored
|
|
}
|
|
|
|
func main() {
|
|
content := generateFile()
|
|
encrypted := encryptFile(content)
|
|
err := os.WriteFile("data.gpg", encrypted, 0600)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|