blob: 3053dde60b56656bed9c803330356a247e8c2993 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
package dispatcher
import (
"fmt"
"github.com/fxamacker/cbor/v2"
)
func EncodeEnvelope(envelope Envelope) ([]byte, error) {
encoded, err := cbor.Marshal(envelope)
if err != nil {
return nil, fmt.Errorf("encode envelope: %w", err)
}
if len(encoded) > MaxEnvelopeBytes {
return nil, fmt.Errorf("encoded envelope is too large")
}
return encoded, nil
}
func DecodeEnvelope(encoded []byte) (Envelope, error) {
if len(encoded) == 0 || len(encoded) > MaxEnvelopeBytes {
return Envelope{}, fmt.Errorf("invalid encoded envelope size")
}
var envelope Envelope
if err := cbor.Unmarshal(encoded, &envelope); err != nil {
return Envelope{}, fmt.Errorf("decode envelope: %w", err)
}
return envelope, nil
}
|