// doEnc encodes in as the payload in a JWT. func doEnc(signer jwt.Signer, in []byte) ([]byte, error) { var err error // make sure its valid json first m := make(map[string]interface{}) // do the initial decode d := json.NewDecoder(bytes.NewBuffer(in)) d.UseNumber() err = d.Decode(&m) if err != nil { return nil, err } // encode claims out, err := signer.Encode(&m) if err != nil { return nil, err } return out, nil }