private int validateNPD(String filename, byte[] devKLic, NPD[] npdPtr, FileStream i) { i.Seek(0, SeekOrigin.Begin); byte[] npd = new byte[0x80]; i.Read(npd, 0, npd.Length); byte[] extraData = new byte[0x04]; i.Read(extraData, 0, extraData.Length); long flag = ConversionUtils.be32(extraData, 0); if ((flag & FLAG_SDAT) != 0) { Debug.WriteLine("INFO: SDAT detected. NPD header is not validated"); } else if (!checkNPDHash1(filename, npd)) { return(STATUS_ERROR_HASHTITLEIDNAME); } else if (devKLic == null) { Debug.WriteLine("WARNING: Can not validate devklic header"); } else if (!checkNPDHash2(devKLic, npd)) { return(STATUS_ERROR_HASHDEVKLIC); } npdPtr[0] = NPD.createNPD(npd); return(STATUS_OK); }