1package crypto
2
3import (
4	"encoding/json"
5
6	"github.com/briankassouf/jose"
7)
8
9// Signature is a JWS signature.
10type Signature []byte
11
12// MarshalJSON implements json.Marshaler for a signature.
13func (s Signature) MarshalJSON() ([]byte, error) {
14	return jose.EncodeEscape(s), nil
15}
16
17// Base64 helps implements jose.Encoder for Signature.
18func (s Signature) Base64() ([]byte, error) {
19	return jose.Base64Encode(s), nil
20}
21
22// UnmarshalJSON implements json.Unmarshaler for signature.
23func (s *Signature) UnmarshalJSON(b []byte) error {
24	dec, err := jose.DecodeEscaped(b)
25	if err != nil {
26		return err
27	}
28	*s = Signature(dec)
29	return nil
30}
31
32var (
33	_ json.Marshaler   = (Signature)(nil)
34	_ json.Unmarshaler = (*Signature)(nil)
35	_ jose.Encoder     = (Signature)(nil)
36)
37