mport java.security.SecureRandom;
import java.util.Base64;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.Provider;
 
class getChallenge {
    public static void main(String[] args) {
        System.out.println("Starting...");
         
        SecureRandom random = new SecureRandom();
        byte[] code = new byte[32];
        random.nextBytes(code);
         
        String strVerifier = Base64.getUrlEncoder().withoutPadding().encodeToString(code);
        System.out.println("Use this for the token endpoint in Step 2: " + strVerifier);
        byte[] byteAscii = strVerifier.getBytes(StandardCharsets.US_ASCII);
         
        try {
            final MessageDigest md = MessageDigest.getInstance("SHA-256");
            md.update(byteAscii, 0, byteAscii.length);
            byte[] digest = md.digest();
            String strChallenge = Base64.getUrlEncoder().withoutPadding().encodeToString(digest);  
            System.out.println("Use this for the Auth endpoint in Step 1: " + strChallenge);           
        } catch (Exception e) {
            System.out.println("Broken...");
        }
        System.out.println("\n...Finished.");
         
    }
}
