36 lines
814 B
Go
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
|
|
}
|