From df14f1b513ba9b167219e4fc4f829906dda5479a Mon Sep 17 00:00:00 2001 From: Matthias Schild Date: Tue, 1 Sep 2026 00:52:54 +0200 Subject: [PATCH] feat: initial commit --- .gitignore | 2 ++ go.mod | 12 ++++++++++++ go.sum | 18 ++++++++++++++++++ main.go | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 84 insertions(+) create mode 100644 .gitignore create mode 100644 go.mod create mode 100644 go.sum create mode 100644 main.go diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..28be13f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.asc +*.gpg \ No newline at end of file diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..69bb37d --- /dev/null +++ b/go.mod @@ -0,0 +1,12 @@ +module gogpg + +go 1.25.4 + +require github.com/ProtonMail/gopenpgp/v3 v3.3.0 + +require ( + github.com/ProtonMail/go-crypto v1.3.0 // indirect + github.com/cloudflare/circl v1.6.0 // indirect + golang.org/x/crypto v0.33.0 // indirect + golang.org/x/sys v0.30.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..266f82d --- /dev/null +++ b/go.sum @@ -0,0 +1,18 @@ +github.com/ProtonMail/go-crypto v1.3.0 h1:ILq8+Sf5If5DCpHQp4PbZdS1J7HDFRXz/+xKBiRGFrw= +github.com/ProtonMail/go-crypto v1.3.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE= +github.com/ProtonMail/gopenpgp/v3 v3.3.0 h1:N6rHCH5PWwB6zSRMgRj1EbAMQHUAAHxH3Oo4KibsPwY= +github.com/ProtonMail/gopenpgp/v3 v3.3.0/go.mod h1:J+iNPt0/5EO9wRt7Eit9dRUlzyu3hiGX3zId6iuaKOk= +github.com/cloudflare/circl v1.6.0 h1:cr5JKic4HI+LkINy2lg3W2jF8sHCVTBncJr5gIIq7qk= +github.com/cloudflare/circl v1.6.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/main.go b/main.go new file mode 100644 index 0000000..126691e --- /dev/null +++ b/main.go @@ -0,0 +1,52 @@ +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) + } +}