From f4e568479e04cad58c9f37d7034ec7c71562743b Mon Sep 17 00:00:00 2001 From: kalipso Date: Sat, 3 Aug 2024 23:13:22 +0200 Subject: [PATCH] start implementing crypto handling --- cmd/ppass/ppass.go | 3 +++ crypto/crypto.go | 56 ++++++++++++++++++++++++++++++++++++++++++++++ go.mod | 1 + go.sum | 8 +++++-- 4 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 crypto/crypto.go diff --git a/cmd/ppass/ppass.go b/cmd/ppass/ppass.go index d750a6f..d8b53c1 100644 --- a/cmd/ppass/ppass.go +++ b/cmd/ppass/ppass.go @@ -18,6 +18,7 @@ import ( logging "github.com/ipfs/go-log/v2" "github.com/k4lipso/pentapass/storage" + "github.com/k4lipso/pentapass/crypto" ) var ( @@ -32,6 +33,8 @@ var ( func main() { + crypto.Encrypt() + flag.Parse() ctx := context.Background() data := *dbPath diff --git a/crypto/crypto.go b/crypto/crypto.go new file mode 100644 index 0000000..7dfdaca --- /dev/null +++ b/crypto/crypto.go @@ -0,0 +1,56 @@ +package crypto + +import ( + "fmt" + "bytes" + "io" + "encoding/json" + + "filippo.io/age" +) + +type Password struct { + Service string `json:"Service"` + Url string `json:"Url"` + Username string `json:"Username"` + Password string `json:"Password"` + Tags []string `json:"Tags"` +} + +func (p *Password) ToJson() ([]byte, error) { + return json.Marshal(p) +} + +func GetPasswordFromJson(b []byte) (Password, error) { + var result Password + err := json.Unmarshal(b, result) + + if err != nil { + return Password{}, err + } + + return result, nil +} + +func Encrypt() { + publicKey := "age1cy0su9fwf3gf9mw868g5yut09p6nytfmmnktexz2ya5uqg9vl9sss4euqm" + recipient, err := age.ParseX25519Recipient(publicKey) + if err != nil { + fmt.Printf("Failed to parse public key %q: %v", publicKey, err) + } + + out := &bytes.Buffer{} + + w, err := age.Encrypt(out, recipient) + if err != nil { + fmt.Printf("Failed to create encrypted file: %v\n", err) + } + if _, err := io.WriteString(w, "Black lives matter."); err != nil { + fmt.Printf("Failed to write to encrypted file: %v\n", err) + } + if err := w.Close(); err != nil { + fmt.Printf("Failed to close encrypted file: %v\n", err) + } + + fmt.Printf("Encrypted file size: %d\n", out.Len()) +} diff --git a/go.mod b/go.mod index a704b67..f667908 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module github.com/k4lipso/pentapass go 1.22.5 require ( + filippo.io/age v1.2.0 github.com/hsanjuan/ipfs-lite v1.8.2 github.com/ipfs/go-datastore v0.6.0 github.com/ipfs/go-ds-badger2 v0.1.3 diff --git a/go.sum b/go.sum index a2fa0d4..0372eb3 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,5 @@ +c2sp.org/CCTV/age v0.0.0-20240306222714-3ec4d716e805 h1:u2qwJeEvnypw+OCPUHmoZE3IqwfuN5kgDfo5MLzpNM0= +c2sp.org/CCTV/age v0.0.0-20240306222714-3ec4d716e805/go.mod h1:FomMrUJ2Lxt5jCLmZkG3FHa72zUprnhd3v/Z18Snm4w= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= @@ -6,6 +8,8 @@ dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= +filippo.io/age v1.2.0 h1:vRDp7pUMaAJzXNIWJVAZnEf/Dyi4Vu4wI8S1LBzufhE= +filippo.io/age v1.2.0/go.mod h1:JL9ew2lTN+Pyft4RiNGguFfOpewKwSHm5ayKD/A4004= git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 h1:cTp8I5+VIoKjsnZuH8vjyaysT/ses3EvZeaV/1UkF2M= github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= @@ -443,8 +447,8 @@ github.com/quic-go/webtransport-go v0.8.0/go.mod h1:N99tjprW432Ut5ONql/aUhSLT0YV github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk= github.com/raulk/go-watchdog v1.3.0/go.mod h1:fIvOnLbF0b0ZwkB9YU4mOW9Did//4vPZtDqv66NfsMU= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=