20 lines
426 B
Go
20 lines
426 B
Go
package bloat
|
|
|
|
import "errors"
|
|
|
|
func (b *Bloat[T]) Read(packed []byte, author Bloat[T]) (T, error) {
|
|
var final T
|
|
decrypted, err := b.Decrypt(packed) // our own key
|
|
if err != nil {
|
|
return final, err
|
|
}
|
|
body, verified, err := author.Verify(decrypted) // author's key
|
|
if err != nil {
|
|
return final, err
|
|
}
|
|
if !verified {
|
|
return final, errors.New("not verified")
|
|
}
|
|
final, err = b.Unmarshal(body)
|
|
return final, err
|
|
}
|