code: public static String generateJWTAssertion(String publicKeyFilename, String privateKeyFilename, String oAuthBasePath, String clientId, String userId, long expiresIn) throws JWTCreationException, IOException {
  		  String token = null;
  		  if (expiresIn <= 0L) {
  				throw new IllegalArgumentException("expiresIn should be a non-negative value");
  		  }
  		  if (publicKeyFilename == null || "".equals(publicKeyFilename) || privateKeyFilename == null || "".equals(privateKeyFilename) || oAuthBasePath == null || "".equals(oAuthBasePath) || clientId == null || "".equals(clientId) || userId == null || "".equals(userId)) {
  				throw new IllegalArgumentException("One of the arguments is null or empty");
  		  }
  
  		  try {
  			  RSAPublicKey publicKey = readPublicKeyFromFile(publicKeyFilename, "RSA");
  			  RSAPrivateKey privateKey = readPrivateKeyFromFile(privateKeyFilename, "RSA");
  			  Algorithm algorithm = Algorithm.RSA256(publicKey, privateKey);
  			  long now = System.currentTimeMillis();
  			  token = JWT.create()
  					  .withIssuer(clientId)
  					  .withSubject(userId)
  					  .withAudience(oAuthBasePath)
  					  .withNotBefore(new Date(now))
  					  .withExpiresAt(new Date(now + expiresIn * 1000))
  					  .withClaim("scope", "signature")
  					  .sign(algorithm);
  		  } catch (JWTCreationException e){
  			  throw e;
  		  } catch (IOException e) {
  			  throw e;
  		  }
  
  		  return token;
  	  }
docs: Helper method to create a JWT token for the JWT flow
  @param publicKeyFilename the filename of the RSA public key
  @param privateKeyFilename the filename of the RSA private key
  @param oAuthBasePath DocuSign OAuth base path (account-d.docusign.com for the developer sandbox
  and account.docusign.com for the production platform)
  @param clientId DocuSign OAuth Client Id (AKA Integrator Key)
  @param userId DocuSign user Id to be impersonated (This is a UUID)
  @param expiresIn number of seconds remaining before the JWT assertion is considered as invalid
  @return a fresh JWT token
  @throws JWTCreationException if not able to create a JWT token from the input parameters
  @throws IOException if there is an issue with either the public or private file