|  | package jws | 
|  |  | 
|  | import "encoding/json" | 
|  |  | 
|  | type rawBase64 []byte | 
|  |  | 
|  | // MarshalJSON implements json.Marshaler for rawBase64. | 
|  | func (r rawBase64) MarshalJSON() ([]byte, error) { | 
|  | buf := make([]byte, len(r)+2) | 
|  | buf[0] = '"' | 
|  | copy(buf[1:], r) | 
|  | buf[len(buf)-1] = '"' | 
|  | return buf, nil | 
|  | } | 
|  |  | 
|  | // MarshalJSON implements json.Unmarshaler for rawBase64. | 
|  | func (r *rawBase64) UnmarshalJSON(b []byte) error { | 
|  | if len(b) > 1 && b[0] == '"' && b[len(b)-1] == '"' { | 
|  | b = b[1 : len(b)-1] | 
|  | } | 
|  | *r = rawBase64(b) | 
|  | return nil | 
|  | } | 
|  |  | 
|  | var ( | 
|  | _ json.Marshaler   = (rawBase64)(nil) | 
|  | _ json.Unmarshaler = (*rawBase64)(nil) | 
|  | ) |