code: func NewJSONWebKeySet(parsed *JSONWebKeySetStruct) (*JSONWebKeySet, error) {
  	// Pick keys used to verify RS256 signatures.
  	keys := make(map[string]rsa.PublicKey, len(parsed.Keys))
  	for _, k := range parsed.Keys {
  		if k.Kty != "RSA" || k.Alg != "RS256" || k.Use != "sig" {
  			continue // not an RSA public key
  		}
  		if k.Kid == "" {
  			// Per spec 'kid' field is optional, but providers we support return them,
  			// so make them required to keep the code simpler.
  			return nil, fmt.Errorf("bad JSON web key - missing 'kid' field")
  		}
  		pub, err := decodeRSAPublicKey(k.N, k.E)
  		if err != nil {
  			return nil, fmt.Errorf("failed to parse RSA public key in JSON web key - %s", err)
  		}
  		keys[k.Kid] = pub
  	}
  
  	if len(keys) == 0 {
  		return nil, fmt.Errorf("the JSON web key doc didn't have any signing keys")
  	}
  
  	return &JSONWebKeySet{keys: keys}, nil
  }
docs: // NewJSONWebKeySet makes the keyset from raw JSON Web Key set struct.