bloat/read.go
2025-04-07 03:47:40 -06:00

36 lines
814 B
Go

package bloat
import (
"errors"
"fmt"
)
func (b *BloatEnc[T]) ReadEnc(packed []byte, author BloatEnc[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, BloatPlain[T](plainFromEnc(author)))
return final, err
}
func (b *BloatPlain[T]) ReadPlain(plain []byte, author BloatPlain[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
}