package bloat import ( "crypto/rand" "aead.dev/minisign" "filippo.io/age" ) type Bloat[T any] struct { SignPub minisign.PublicKey signPriv minisign.PrivateKey EncPub age.X25519Recipient encDec age.X25519Identity // Scrypt is the password one? Obj T } func NewBloat[T any]() (Bloat[T], error) { pub, sign, err := minisign.GenerateKey(rand.Reader) if err != nil { return Bloat[T]{}, err } enc, err := age.GenerateX25519Identity() if err != nil { return Bloat[T]{}, err } recip := enc.Recipient() res := Bloat[T]{ SignPub: pub, signPriv: sign, EncPub: *recip, encDec: *enc, } return res, nil }