Hi folks, dropbear 2014.63 is already out. Can someone please review these patches? Here is an updated patch for 2014.63: https://lists.openwrt.org/pipermail/openwrt-devel/2014-February/024058.html http://patchwork.openwrt.org/patch/4931/
On Wed, Feb 19, 2014 at 1:22 AM, Catalin Patulea <c...@vv.carleton.ca> wrote: > Can I get another round of review on this? > > On Sat, Feb 15, 2014 at 9:08 PM, Catalin Patulea <c...@vv.carleton.ca> wrote: >> Upstream changelog: >> https://matt.ucc.asn.au/dropbear/CHANGES >> >> This adds elliptic curve cryptography (ECC) support as an option, disabled >> by default. >> >> dropbear mips 34kc uClibc binary size: >> before: 161,672 bytes >> after, without ECC (default): 164,968 >> after, with ECC: 198,008 >> >> Signed-off-by: Catalin Patulea <c...@vv.carleton.ca> >> --- >> package/network/services/dropbear/Config.in | 27 >> ++++++++++++++++++++ >> package/network/services/dropbear/Makefile | 24 +++++++++++++++-- >> .../dropbear/patches/100-pubkey_path.patch | 4 +-- >> .../dropbear/patches/110-change_user.patch | 2 +- >> .../dropbear/patches/120-openwrt_options.patch | 21 +++++---------- >> .../dropbear/patches/140-disable_assert.patch | 2 +- >> .../patches/150-dbconvert_standalone.patch | 6 ++--- >> .../dropbear/patches/200-lcrypt_bsdfix.patch | 8 +++--- >> .../dropbear/patches/500-set-default-path.patch | 2 +- >> 9 files changed, 67 insertions(+), 29 deletions(-) >> create mode 100644 package/network/services/dropbear/Config.in >> >> diff --git a/package/network/services/dropbear/Config.in >> b/package/network/services/dropbear/Config.in >> new file mode 100644 >> index 0000000..e2a7610 >> --- /dev/null >> +++ b/package/network/services/dropbear/Config.in >> @@ -0,0 +1,27 @@ >> +menu "Configuration" >> + depends on PACKAGE_dropbear >> + >> +config DROPBEAR_ECC >> + bool "Elliptic curve cryptography (ECC)" >> + default n >> + help >> + Enables elliptic curve cryptography (ECC) support in key >> exchange and public key >> + authentication. >> + >> + Key exchange algorithms: >> + ecdh-sha2-nistp256 >> + ecdh-sha2-nistp384 >> + ecdh-sha2-nistp521 >> + curve25519-sha...@libssh.org >> + >> + Public key algorithms: >> + ecdsa-sha2-nistp256 >> + ecdsa-sha2-nistp384 >> + ecdsa-sha2-nistp521 >> + >> + Does not generate ECC host keys by default (ECC key exchange >> will not be used, >> + only ECC public key auth). >> + >> + Increases binary size by about 36 kB (MIPS). >> + >> +endmenu >> diff --git a/package/network/services/dropbear/Makefile >> b/package/network/services/dropbear/Makefile >> index 02be761..c7d0a96 100644 >> --- a/package/network/services/dropbear/Makefile >> +++ b/package/network/services/dropbear/Makefile >> @@ -8,26 +8,32 @@ >> include $(TOPDIR)/rules.mk >> >> PKG_NAME:=dropbear >> -PKG_VERSION:=2013.59 >> +PKG_VERSION:=2013.62 >> PKG_RELEASE:=1 >> >> PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 >> PKG_SOURCE_URL:= \ >> http://matt.ucc.asn.au/dropbear/releases/ \ >> https://dropbear.nl/mirror/releases/ >> -PKG_MD5SUM:=6c1e6c2c297f4034488ffc95e8b7e6e9 >> +PKG_MD5SUM:=ca2c7932a1399cf361f795aaa3843998 >> >> PKG_LICENSE:=MIT >> PKG_LICENSE_FILES:=LICENSE libtomcrypt/LICENSE libtommath/LICENSE >> >> PKG_BUILD_PARALLEL:=1 >> >> +PKG_CONFIG_DEPENDS:=CONFIG_DROPBEAR_ECC >> + >> include $(INCLUDE_DIR)/package.mk >> >> define Package/dropbear/Default >> URL:=http://matt.ucc.asn.au/dropbear/ >> endef >> >> +define Package/dropbear/config >> + source "$(SOURCE)/Config.in" >> +endef >> + >> define Package/dropbear >> $(call Package/dropbear/Default) >> SECTION:=net >> @@ -72,6 +78,20 @@ CONFIGURE_ARGS += \ >> TARGET_CFLAGS += -DARGTYPE=3 -ffunction-sections -fdata-sections >> TARGET_LDFLAGS += -Wl,--gc-sections >> >> +define Build/Prepare >> + $(call Build/Prepare/Default) >> + # Enforce that all replacements are made, otherwise options.h has >> changed >> + # format and this logic is broken. >> + for OPTION in DROPBEAR_ECDSA DROPBEAR_ECDH DROPBEAR_CURVE25519; do \ >> + awk 'BEGIN { rc = 1 } \ >> + /'$$$$OPTION'/ { $$$$0 = "$(if $(CONFIG_DROPBEAR_ECC),,// >> )#define '$$$$OPTION'"; rc = 0 } \ >> + { print } \ >> + END { exit(rc) }' $(PKG_BUILD_DIR)/options.h \ >> + >$(PKG_BUILD_DIR)/options.h.new && \ >> + mv $(PKG_BUILD_DIR)/options.h.new $(PKG_BUILD_DIR)/options.h || >> exit 1; \ >> + done >> +endef >> + >> define Build/Compile >> +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \ >> $(TARGET_CONFIGURE_OPTS) \ >> diff --git a/package/network/services/dropbear/patches/100-pubkey_path.patch >> b/package/network/services/dropbear/patches/100-pubkey_path.patch >> index c1802f5..456874b 100644 >> --- a/package/network/services/dropbear/patches/100-pubkey_path.patch >> +++ b/package/network/services/dropbear/patches/100-pubkey_path.patch >> @@ -1,6 +1,6 @@ >> --- a/svr-authpubkey.c >> +++ b/svr-authpubkey.c >> -@@ -209,17 +209,21 @@ static int checkpubkey(unsigned char* al >> +@@ -208,17 +208,21 @@ static int checkpubkey(unsigned char* al >> goto out; >> } >> >> @@ -33,7 +33,7 @@ >> if (authfile == NULL) { >> goto out; >> } >> -@@ -372,26 +376,35 @@ static int checkpubkeyperms() { >> +@@ -371,26 +375,35 @@ static int checkpubkeyperms() { >> goto out; >> } >> >> diff --git a/package/network/services/dropbear/patches/110-change_user.patch >> b/package/network/services/dropbear/patches/110-change_user.patch >> index 48228ea..fa608e7 100644 >> --- a/package/network/services/dropbear/patches/110-change_user.patch >> +++ b/package/network/services/dropbear/patches/110-change_user.patch >> @@ -1,6 +1,6 @@ >> --- a/svr-chansession.c >> +++ b/svr-chansession.c >> -@@ -889,12 +889,12 @@ static void execchild(void *user_data) { >> +@@ -890,12 +890,12 @@ static void execchild(void *user_data) { >> /* We can only change uid/gid as root ... */ >> if (getuid() == 0) { >> >> diff --git >> a/package/network/services/dropbear/patches/120-openwrt_options.patch >> b/package/network/services/dropbear/patches/120-openwrt_options.patch >> index 9300a27..1b5c5cb 100644 >> --- a/package/network/services/dropbear/patches/120-openwrt_options.patch >> +++ b/package/network/services/dropbear/patches/120-openwrt_options.patch >> @@ -1,6 +1,6 @@ >> --- a/options.h >> +++ b/options.h >> -@@ -38,7 +38,7 @@ >> +@@ -41,7 +41,7 @@ >> * Both of these flags can be defined at once, don't compile without at >> least >> * one of them. */ >> #define NON_INETD_MODE >> @@ -9,16 +9,7 @@ >> >> /* Setting this disables the fast exptmod bignum code. It saves ~5kB, but >> is >> * perhaps 20% slower for pubkey operations (it is probably worth >> experimenting >> -@@ -49,7 +49,7 @@ >> - several kB in binary size however will make the symmetrical ciphers and >> hashes >> - slower, perhaps by 50%. Recommended for small systems that aren't doing >> - much traffic. */ >> --/*#define DROPBEAR_SMALL_CODE*/ >> -+#define DROPBEAR_SMALL_CODE >> - >> - /* Enable X11 Forwarding - server only */ >> - #define ENABLE_X11FWD >> -@@ -78,7 +78,7 @@ much traffic. */ >> +@@ -81,7 +81,7 @@ much traffic. */ >> >> /* Enable "Netcat mode" option. This will forward standard input/output >> * to a remote TCP-forwarded connection */ >> @@ -27,7 +18,7 @@ >> >> /* Whether to support "-c" and "-m" flags to choose ciphers/MACs at >> runtime */ >> #define ENABLE_USER_ALGO_LIST >> -@@ -92,8 +92,8 @@ much traffic. */ >> +@@ -95,8 +95,8 @@ much traffic. */ >> #define DROPBEAR_AES256 >> /* Compiling in Blowfish will add ~6kB to runtime heap memory usage */ >> /*#define DROPBEAR_BLOWFISH*/ >> @@ -38,7 +29,7 @@ >> >> /* Enable "Counter Mode" for ciphers. This is more secure than normal >> * CBC mode against certain attacks. This adds around 1kB to binary >> -@@ -119,7 +119,7 @@ much traffic. */ >> +@@ -122,7 +122,7 @@ much traffic. */ >> * If you disable MD5, Dropbear will fall back to SHA1 fingerprints, >> * which are not the standard form. */ >> #define DROPBEAR_SHA1_HMAC >> @@ -47,7 +38,7 @@ >> /*#define DROPBEAR_SHA2_256_HMAC*/ >> /*#define DROPBEAR_SHA2_512_HMAC*/ >> #define DROPBEAR_MD5_HMAC >> -@@ -157,7 +157,7 @@ much traffic. */ >> +@@ -175,7 +175,7 @@ much traffic. */ >> >> /* Whether to print the message of the day (MOTD). This doesn't add much >> code >> * size */ >> @@ -56,7 +47,7 @@ >> >> /* The MOTD file path */ >> #ifndef MOTD_FILENAME >> -@@ -195,7 +195,7 @@ much traffic. */ >> +@@ -213,7 +213,7 @@ much traffic. */ >> * note that it will be provided for all "hidden" client-interactive >> * style prompts - if you want something more sophisticated, use >> * SSH_ASKPASS instead. Comment out this var to remove this >> functionality.*/ >> diff --git >> a/package/network/services/dropbear/patches/140-disable_assert.patch >> b/package/network/services/dropbear/patches/140-disable_assert.patch >> index edc7547..0717228 100644 >> --- a/package/network/services/dropbear/patches/140-disable_assert.patch >> +++ b/package/network/services/dropbear/patches/140-disable_assert.patch >> @@ -1,6 +1,6 @@ >> --- a/dbutil.h >> +++ b/dbutil.h >> -@@ -92,7 +92,11 @@ int m_str_to_uint(const char* str, unsig >> +@@ -101,7 +101,11 @@ int m_str_to_uint(const char* str, unsig >> #define DEF_MP_INT(X) mp_int X = {0, 0, 0, NULL} >> >> /* Dropbear assertion */ >> diff --git >> a/package/network/services/dropbear/patches/150-dbconvert_standalone.patch >> b/package/network/services/dropbear/patches/150-dbconvert_standalone.patch >> index 3e0b008..367dc2c 100644 >> --- >> a/package/network/services/dropbear/patches/150-dbconvert_standalone.patch >> +++ >> b/package/network/services/dropbear/patches/150-dbconvert_standalone.patch >> @@ -9,6 +9,6 @@ >> +#define DROPBEAR_CLIENT >> +#endif >> + >> - /****************************************************************** >> - * Define compile-time options below - the "#ifndef DROPBEAR_XXX .... >> #endif" >> - * parts are to allow for commandline -DDROPBEAR_XXX options etc. >> + /* Define compile-time options below - the "#ifndef DROPBEAR_XXX .... >> #endif" >> + * parts are to allow for commandline -DDROPBEAR_XXX options etc. */ >> + >> diff --git >> a/package/network/services/dropbear/patches/200-lcrypt_bsdfix.patch >> b/package/network/services/dropbear/patches/200-lcrypt_bsdfix.patch >> index a5697e2..940e428 100644 >> --- a/package/network/services/dropbear/patches/200-lcrypt_bsdfix.patch >> +++ b/package/network/services/dropbear/patches/200-lcrypt_bsdfix.patch >> @@ -1,15 +1,15 @@ >> --- a/Makefile.in >> +++ b/Makefile.in >> -@@ -56,7 +56,7 @@ HEADERS=options.h dbutil.h session.h pac >> +@@ -58,7 +58,7 @@ HEADERS=options.h dbutil.h session.h pac >> loginrec.h atomicio.h x11fwd.h agentfwd.h tcpfwd.h compat.h \ >> - listener.h fake-rfc2553.h >> + listener.h fake-rfc2553.h ecc.h ecdsa.h >> >> -dropbearobjs=$(COMMONOBJS) $(CLISVROBJS) $(SVROBJS) @CRYPTLIB@ >> +dropbearobjs=$(COMMONOBJS) $(CLISVROBJS) $(SVROBJS) >> dbclientobjs=$(COMMONOBJS) $(CLISVROBJS) $(CLIOBJS) >> dropbearkeyobjs=$(COMMONOBJS) $(KEYOBJS) >> dropbearconvertobjs=$(COMMONOBJS) $(CONVERTOBJS) >> -@@ -78,7 +78,7 @@ STRIP=@STRIP@ >> +@@ -81,7 +81,7 @@ STRIP=@STRIP@ >> INSTALL=@INSTALL@ >> CPPFLAGS=@CPPFLAGS@ >> CFLAGS+=-I. -I$(srcdir) $(CPPFLAGS) @CFLAGS@ >> @@ -18,7 +18,7 @@ >> LDFLAGS=@LDFLAGS@ >> >> EXEEXT=@EXEEXT@ >> -@@ -168,7 +168,7 @@ scp: $(SCPOBJS) $(HEADERS) Makefile >> +@@ -171,7 +171,7 @@ scp: $(SCPOBJS) $(HEADERS) Makefile >> # multi-binary compilation. >> MULTIOBJS= >> ifeq ($(MULTI),1) >> diff --git >> a/package/network/services/dropbear/patches/500-set-default-path.patch >> b/package/network/services/dropbear/patches/500-set-default-path.patch >> index 702ad6c..cf1634a 100644 >> --- a/package/network/services/dropbear/patches/500-set-default-path.patch >> +++ b/package/network/services/dropbear/patches/500-set-default-path.patch >> @@ -1,6 +1,6 @@ >> --- a/options.h >> +++ b/options.h >> -@@ -301,7 +301,7 @@ be overridden at runtime with -I. 0 disa >> +@@ -319,7 +319,7 @@ be overridden at runtime with -I. 0 disa >> #define DEFAULT_IDLE_TIMEOUT 0 >> >> /* The default path. This will often get replaced by the shell */ >> -- >> 1.7.9.5 >> _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel