37 lines
642 B
Go
37 lines
642 B
Go
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
|
|
}
|