docs: public String computeSignature(String requestMethod, String targetUrl, Map<String, String> params, @Sensitive String consumerSecret, @Sensitive String tokenSecret) {
  
          String signatureBaseString = createSignatureBaseString(requestMethod, targetUrl, params);
  
          // Hash the base string using the consumer secret (and request token secret, if known) as a key
          String signature = "";
          try {
              String secretToEncode = null;
              if (consumerSecret != null) {
                  secretToEncode = consumerSecret;
              }
              StringBuilder keyString = new StringBuilder(Utils.percentEncodeSensitive(secretToEncode)).append("&");
              if (tokenSecret != null) {
                  keyString.append(Utils.percentEncodeSensitive(tokenSecret));
              }
              signature = computeSha1Signature(signatureBaseString, keyString.toString());
  
          } catch (GeneralSecurityException e) {
              Tr.warning(tc, "TWITTER_ERROR_CREATING_SIGNATURE", new Object[] { e.getLocalizedMessage() });
          } catch (UnsupportedEncodingException e) {
              // Should be using UTF-8 encoding, so this should be highly unlikely
              if (tc.isDebugEnabled()) {
                  Tr.debug(tc, "Caught unexpected exception: " + e.getLocalizedMessage(), e);
              }
          }
  
          return signature;
      }