docs: protected ChallengeResponse parseCredentials(final String cookieValue)
      {
          // 1) Decode Base64 string
          final byte[] encrypted = Base64.decode(cookieValue);
          
          if(encrypted == null)
          {
              this.log.error("Cannot decode cookie credentials : {}", cookieValue);
          }
          
          // 2) Decrypt the credentials
          try
          {
              final String decrypted =
                      CryptoUtils.decrypt(this.getEncryptAlgorithm(), this.getEncryptSecretKey(), encrypted);
              
              // 3) Parse the decrypted cookie value
              final int lastSlash = decrypted.lastIndexOf('/');
              final String[] indexes = decrypted.substring(lastSlash + 1).split(",");
              final int identifierIndex = Integer.parseInt(indexes[0]);
              final int secretIndex = Integer.parseInt(indexes[1]);
              
              // 4) Create the challenge response
              final ChallengeResponse cr = new ChallengeResponse(this.getScheme());
              cr.setRawValue(cookieValue);
              cr.setTimeIssued(Long.parseLong(decrypted.substring(0, identifierIndex)));
              cr.setIdentifier(decrypted.substring(identifierIndex + 1, secretIndex));
              cr.setSecret(decrypted.substring(secretIndex + 1, lastSlash));
              return cr;
          }
          catch(final Exception e)
          {
              this.log.info("Unable to decrypt cookie credentials");
              this.log.trace("Unable to decrypt cookie credentials: Stacktrace:", e);
              return null;
          }
      }