package bloat import ( "crypto/rand" "fmt" "aead.dev/minisign" "filippo.io/age" ) type Bloat[T any] struct { SignPub minisign.PublicKey signPriv minisign.PrivateKey RequireEnc bool Enc age.X25519Identity // EncPub age.X25519Recipient // encPriv age.X25519Identity // Scrypt is the password one? } func NewPlainBloat[T any]() (Bloat[T], error) { pub, sign, err := minisign.GenerateKey(rand.Reader) if err != nil { fmt.Println("problem generating minisign") fmt.Println(err) return Bloat[T]{}, err } res := Bloat[T]{ SignPub: pub, signPriv: sign, RequireEnc: false, } return res, nil } func NewEncBloat[T any]() (Bloat[T], error) { res, err := NewPlainBloat[T]() res.RequireEnc = true if err != nil { fmt.Println("problem generating signing part") } enc, err := age.GenerateX25519Identity() if err != nil { fmt.Println("unable to generate") fmt.Println(err) return Bloat[T]{}, err } // recip := enc.Recipient() res.Enc = *enc // res.encPriv = *enc // res.EncPub = *recip // fmt.Printf("made age key: %s\n", enc.Recipient().String()) return res, nil }