code: func validateCryptoKeysKMSPath(path string) error {
  	if path[0] == '/' {
  		path = path[1:]
  	}
  	components := strings.Split(path, "/")
  	if len(components) < (len(cryptoKeysPathComponents)-1)*2 || len(components) > len(cryptoKeysPathComponents)*2 {
  		return errors.Reason("path should have the form %s", strings.Join(cryptoKeysPathComponents, "/.../")+"/...").Err()
  	}
  	for i, c := range components {
  		if i%2 == 1 {
  			continue
  		}
  		expect := cryptoKeysPathComponents[i/2]
  		if c != expect {
  			return errors.Reason("expected component %d to be %s, got %s", i+1, expect, c).Err()
  		}
  	}
  	return nil
  }
docs: // validateCryptoKeysKMSPath validates a cloudkms path used for the API calls currently
  // supported by this client.
  //
  // What this means is we only care about paths that look exactly like the ones
  // constructed from kmsPathComponents.