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