package bloat import ( "errors" "fmt" ) func (b *Bloat[T]) ReadEnc(packed []byte, author Bloat[T]) (T, error) { var final T decrypted, err := b.decrypt(packed) // our own key if err != nil { fmt.Println("decrypt failed") fmt.Println(err) return final, err } final, err = b.ReadPlain(decrypted, author) return final, err } func (b *Bloat[T]) ReadPlain(plain []byte, author Bloat[T]) (T, error) { var final T body, verified, err := author.verify(plain) // author's key if err != nil { fmt.Println("verification failed") fmt.Println(err) return final, err } if !verified { return final, errors.New("not verified") } final, err = b.unmarshal(body) if err != nil { fmt.Println("unmarshal failed") fmt.Println(err) } return final, err }