bloat/obj.go

53 lines
1.1 KiB
Go

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
}