code: private byte[] validateChallenge(byte[] nonce, byte[] encryptedChallenge)
      throws GeneralSecurityException {
  
      byte[] challenge = decrypt(encryptedChallenge);
      checkSubArray(appId, challenge, 0);
      checkSubArray(nonce, challenge, appId.length);
      return Arrays.copyOfRange(challenge, appId.length + nonce.length, challenge.length);
    }
docs: Validates an encrypted challenge as defined in the protocol, and returns the byte array
  that corresponds to the actual challenge data.