The current implementation was custom and super slow. Since we use Crypto++
anyway, we might as well get use a good implementation.
Change-Id: I761ad7401653471e54000e1c2bc3d9882378112f
Instead of having our own copy of the AES code, use a good library to do that.
Crypto++ is well-maintained, supports a lot of ciphers, works on many OSes, and
is optimized for many architectures.
Change-Id: I7d7d24b47993206d7338c5f9bac8bbdd3915a667
It was a mess, a mix of crypto_* and cbc_mac calls. I made everything call crypto
functions, and also separate key setup from cryptographic operations, this will
be useful to speed up the code in the upcoming commits. Drop support for "usbotp"
key, since the crypto code for that was never mainlined and we can always get the
keys from a device as long as we have code execution (using the DCP debug registers).
Change-Id: I7aa24d12207ffb744225d1b9cc7cb1dc7281dd22
The overriding of the IV and real key should be the exception, there is no
need to manually set them to false.
Change-Id: Id66754f20a79aa5c1a991839345d1242e0aa587d
The old code was working but a mess to maintain. The new code is cleaner
and always simpler handling of all the different options. Extraction of the
OF is no longer a standalone function but just one particular output type.
This commit prepares the ground for firmware "unpatching" (aka OF extraction
from patched OF). The patching code itself did not change so this commit
should still produce the exact same images as before.
Change-Id: I3840793d4b78b8435e38c08f558840925085ead1
When linking with C++ files the linker also needs to link against the C++
libraries. This is done automatically when invoking the compiler upon linking.
Since we don't want C++ dependencies on C-only projects we check if we actually
have C++ files and use either the C or C++ compiler.
Rename CFLAGS since it's now used for both C and C++ compiler and add dedicated
CFLAGS, CXXFLAGS and LDFLAGS variables.
Change-Id: I9cc068a8038f21e8fd96b20173a8f790e6ab4b6e
- Change suffix of objects and depencency files to keep the original file
suffix. This makes it easy to distinguish between C and C++ files when
building and avoids implicit make rules trying to build in a way we don't
want to.
- Implicitly handle dependencies instead of having an explicit rule. Simplifies
things a bit.
- Support C++ files by adding an explicit rule for them. With keeping the
original file suffixes this becomes quite simple.
To use C++ files simply add them to SOURCES (or LIBSOURCES).
Change-Id: I22c56a6e153e281cfa675e91ad4a70fd18e2c43c
Split source files for library and stand-alone binary and use library as
dependency when building the stand-alone binary. This avoids dependencies
getting added multiple times.
Remove outdated RBARCH handling, we always create fat binaries on OS X these
days.
Change-Id: Ia15a731296edcbe90869a1bf66dda2c3d6c7e317
Don't construct the local file URL from string. On Windows the URL needs to
start with file:/// instead of file://. QUrl handles this.
Change-Id: I3dea29a8d368ebdc20eeff6b1f1cf5058d1b5d05
This commit adds the necessary code in the dualboot stub (bootloader) to
let rockbox control the boot process. In particular, rockbox can now choose
if the next boot will be normal (boot rockbox or OF on magic key), to OF
or to updater.
The intents (to be added in follow-up commits) are:
1) Let the user more easily reboot to the OF. On some targets it is not trivial,
especially in USB mode.
2) Automatically reboot to updater when the user drop firmware.sb at the root
of the drive (currently, the user needs to do that in OF USB mode)
3) Document this OF magic
Change-Id: I86df651dec048c318c6a22de74abb8c6b41aa9ad
They did not compile anymore after the register hearder rework. This change
only fixes the syntax, the generated binaries are exactly identical.
Change-Id: Iec2347aa3deb1ddfe2ca36f0db1e481c4e2d329c
During the bootloader install/uninstall process, a signal
is emitted when "Abort" button is pressed, the installers
can attach this signal and cancel the process.
Change-Id: I7f297b8031d7a2d93da0022081aaef03ef041baf
Useful for targets that needs multi-stage uninstall. On current
targets (with Uninstall capability) the progress is updated to
100% when bootloader uninstall is successfully finished.
Change-Id: I61be1c4f5cfc2d2f35fa5005962be9703888447d
This allows to implement multi-stage uninstallers. Should not affect
the behaviour on current targets.
Change-Id: Idf8aec5caf76cf9317798890d094a7cebdbcabec
Since the stub code is shared with NWZ-360, it enables the pullup for the
hold button, but the NWZ-370/380 doesn't have a hold button so don't compile
this code in, it could potentially have unexpected effets or increase consumption
Change-Id: I28c8aa40fc7f9373593ff105fb6df557a6f57ccd
Qt 5.6 on OS X requires targeting at least OS X 10.7, while for earlier
versions we can still target 10.6. Handle this case and inform the user about
the used target version.
Change-Id: I78e426037e2966241ab9a63105e04e7366b469ed
MPProcessors has been deprecated with 10.7. When targeting 10.7 (required when
building with Qt 5.6 on OS X) this causes a warning. Use Gestalt instead
(Gestalt has been deprecated with 10.8, but when targeting 10.7 this doesn't
cause a warning, and Gestalt is used for other values as well).
Change-Id: Iaf82147ad47115e228f5c08f8198a6a7e92102a3
Current clang on OS X suggests placing parens so add them
(-Wbitwise-op-parentheses enabled by default).
Change-Id: I31b49386aa184fe27f72f7f58909b97524d96f44
C++11 requires a space between literal and identifier. When compiling with Qt
5.6 on OS X C++11 support is automatically enabled, causing an error due to
this.
Change-Id: Ifbedc894a3cef23fc67ed1da75558e92e44d1077
QUrl::isLocalFile() is available starting with Qt 4.8. We can safely check for
a file:// url instead.
Qt 4.8 dropped support for OS X 10.4 / 10.5. Since we're still supporting those
we need to keep using Qt 4.7 on OS X. We might want to consider requiring at
least 10.6 on OS X with the next major release of Rockbox Utility.
Change-Id: I18998fe3c7a38773479bc7a1c32ca6e4966359e9
On case sensitive systems (i.e. Linux) uninstalling the bootloader could fail
when renaming the original bootloader file back. Fix this by using the
case-resolved filename.
Change-Id: I504656f70e7ccc7c0752f5252ddb14a625131f5b
Rework to return mapping between (filtered) process names and their pid values
(if running). Note that this functionality is not implemented for Linux (but as
it's mostly intended to detect Itunes currently not needed on that platform).
Change-Id: Ie348bfed46bda390f469c37635a96c75e5782616
Solves some eject issues (FSCTL_LOCK_VOLUMEN ioctl failures) ocurring
when resolveDevicename() is ejecuted prior to ejectDevice(), tested
with Qt5.
Change-Id: Iff9240abd9d2f71bec1a1070f4ef194916e13b65
Windows XP might use mixed case in hardware ID (VID / PID) string.
Cherry-picked from G#1221.
Change-Id: I86fa63e050cd9b9de5a1beac65b81028e0f86a9d
Signed-off-by: Dominik Riebeling <Dominik.Riebeling@gmail.com>
Make local HttpDaemon for testing use a random unused port instead of a fixed
one. Avoids possible issues with the port chosen already being used on the
local machine.
Change-Id: I1ca10b7e5ce198350e14321afc50c36d78b1c0b4
HttpGet::getFile() always returns the same value. Remove the return value since
it isn't necessary. Add some missing function documentation comments.
Change-Id: I1cee242211272a996437b10dbc8de791b3fc3d67
QNetworkAccessManager can handle file:// URLs without additional work. Make
HttpGet aware of that so you can now also use it to retrieve file:// URLs. Add
a unit test for it as well.
Change-Id: If64b57453460b70bca9e5b0c725bb78344617bcd
Qt5 uses a different name for the accessibility plugin. Cherry-picked from
G#1221.
Change-Id: If32eafa053a176ba24b4595826593023ed808164
Signed-off-by: Dominik Riebeling <Dominik.Riebeling@gmail.com>
Make sure to handle if retrieving the device description ends up with a NULL
data buffer pointer. Also switch handling the retrieved string using QString.
Fixes a crash reported in the forums.
Change-Id: I6e95a411308e85656cd78ddcecb1bcee165864d0
Windows doesn't have which, so building natively on Windows didn't create
translations anymore. Use a which-less approach instead.
Change-Id: I7b4c40b26d68da54277a148e8e2d76ac81061c8b
Check for lrelease and always try to run it if found. If not found show a
warning. This avoids build problems for certain setups which previously
required -config dbg to complete.
Change-Id: I60f0f49adc8455743afc5e4d23294ce0729f38d2