, I've spent the last two weeks trying to migrate all SSL and CRYPTO components of the current oscam master to MbedTLS.
The result is a fully functional oscam variant based on MbedTLS 3.6.5 LTS, which can be reviewed and tested in the
Sie müssen registriert sein, um Links zu sehen.
.
What has been changed?
Sie müssen registriert sein, um Links zu sehen.
library code resides as a git submodule in the source tree of oscam repository (externally maintaind, automatically managed via make/cmake)
used library functions of MbedTLS are statically build into oscam binary
cscrypt functions replaced with MbedTLS ones (except RC6 IDEA)
embedding crypto functions (AES MD5 MDC2 DES SHA1 SHA256 RC6 IDEA BIGNUM) depends on selected oscam modules (config.sh)
USE_SSL flag is still present and needed for https webif, signing
USE_LIBCRYPTO flag was removed
no OpenSSL dependency anymore, it is not need in toolchains during build nor on the target system
MbedTLS integration is done without binding on glibc, so the built binary is widely compatible, only architecture matters
How to test?
for the make/cmake guys
Code:
# clone mbedtls branch
git clone https://git.streamboard.tv/common/oscam.git -b mbedtls oscam-mbedtls
cd oscam-mbedtls
# your normal make/cmake commands
for the simplebuild3 guys
Code:
# optional, if you want to start from scratch
git clone https://github.com/gorgone/s3_releases.git s3_releases
cd s3_releases
./s3 update_me
./s3 checkout mbedtls
# your normal s3 commands
Pros/Cons?
-- alpha version, could have bugs, not for "production" use
Habe mir jetzt mal eine zum Testen für die two selber kompiliert und das bin ist mit selben Einstellungen 333k größer als vorher. Laufen tut's, aber ich halte die 50% Größen Zuwachs erst mal für ein Nachteil.
Baut man ohne SSL wird das Binary sogar kleiner als vorher. Mit SSL steigt dann die größer um die 300 KB je nach Toolchain an.
mbedtls wird in der Tat statisch gelinkt, um Abhängigkeiten in der Toolchain und auf dem Zielsystem aufzuheben. Und ja, trade-off ist das das Binary größer wird. Aber nicht zu vergleichen mit dem Zuwachs, wenn OpenSSL statisch gelinkt wird. mbedtls ist genau für unsere embedded devices gedacht, schlank, schnell, portable.
Das ist schon klar, ich habe bei simplebuild alle Haken bei SSL raus, wird trotzdem mit SSL gebaut. Muss ich hier SSL auch noch aus der TC raus nehmen?
Dann noch ne allgemeine Frage zu dem ganzen Sinn. Das dient doch nur zur besseren Kompatibilität der bin, oder liege ich hier falsch?
Signing muss deaktiviert sein, sonst wird immer mit SSL gebaut, wie vorher. SSL im Toolchain spielt keine Rolle.
Kompatibilät und Maintability steht im Vordergrund. Es ist ein Unterschied, ob der Code immer genau eine Version von mbedtls oder alle OpenSSL Versionen von 0.9.8 - 3.6+ unterstützen muss.
Eine gebaute mbedtls oscam sollte auf allen Sytemen mit der gleichen Architektur laufen (NEON Inkompatibilitäten mal ausgenommen), da kein Dependency zu einer bestimmten glibc Version entsteht.
Ok, jetzt hab ich es begriffen.
Für mich als Selberbauer, spielt das Thema Kompatibilität keine Rolle, da ich nur für mich baue. Maintability betrifft mich in dem Fall auch nicht, wobei ich den Sinn für die OSCAM Devs nachvollziehen kann.
nein. Das ist eine version (enigma2-cams-oscam-icam-systemd_git11902-noemu_mipsel), die von @ketschuss (merlin-team) heraugegeben wird.
muss dann nach tmp kopiert und über die softwareverwaltung (oder über telnet) installiert werden.
und läuft hervorragend. damit waren z.b. meine bild- bzw. tonausfälle nach aufnahmen geschichte.
hatte diese ausfälle, wenn ich aufnahmen auf "normalen" sendern aufnahmen gemacht und danach auf einen icam-sender umgeschaltet habe.
So nochmal ein paar Oscam´s ohne signed und upx gepackt.
mips32el_generic -->731 kb
Oscam mit solo4k Toolchain ist ohne neon und libdvbcsa-32 für Boxen mit HiSi-MV430 Chipsatz.(Zgemma-H8.2H,Octagon-SFX6008/6018)
Anhänge
Du musst angemeldet sein, um die Anhangsliste zu sehen.