docs: private static String canonicalHeaders(Map<String, String> headers) {
          StringBuilder canonical = new StringBuilder();
          for (Map.Entry<String, String> header : headers.entrySet()) {
              canonical.append(header.getKey()).append(':').append(header.getValue()).append('\n');
          }
          return canonical.toString();
      }