code: ClientChallenge challenge() throws GeneralSecurityException {
      this.authNonce = randomBytes(conf.encryptionKeyLength() / Byte.SIZE);
      SecretKeySpec authKey = generateKey(conf.keyFactoryAlgorithm(), conf.keyFactoryIterations(),
        authNonce, conf.encryptionKeyLength());
      initializeForAuth(conf.cipherTransformation(), authNonce, authKey);
  
      this.challenge = randomBytes(conf.encryptionKeyLength() / Byte.SIZE);
      return new ClientChallenge(new String(appId, UTF_8),
        conf.keyFactoryAlgorithm(),
        conf.keyFactoryIterations(),
        conf.cipherTransformation(),
        conf.encryptionKeyLength(),
        authNonce,
        challenge(appId, authNonce, challenge));
    }
docs: Create the client challenge.
  
  @return A challenge to be sent the remote side.