ping
On Mon, Feb 24, 2014 at 1:02 AM, 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 | 29 > -------------------- > .../dropbear/patches/500-set-default-path.patch | 2 +- > 9 files changed, 63 insertions(+), 54 deletions(-) > create mode 100644 package/network/services/dropbear/Config.in > delete mode 100644 > package/network/services/dropbear/patches/200-lcrypt_bsdfix.patch > > 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..692199e 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:=2014.63 > 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:=7066bb9a2da708f3ed06314fdc9c47fd > > 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..659e257 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) { > +@@ -894,12 +894,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 > deleted file mode 100644 > index a5697e2..0000000 > --- a/package/network/services/dropbear/patches/200-lcrypt_bsdfix.patch > +++ /dev/null > @@ -1,29 +0,0 @@ > ---- a/Makefile.in > -+++ b/Makefile.in > -@@ -56,7 +56,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 > - > --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@ > - INSTALL=@INSTALL@ > - CPPFLAGS=@CPPFLAGS@ > - CFLAGS+=-I. -I$(srcdir) $(CPPFLAGS) @CFLAGS@ > --LIBS+=@LIBS@ > -+LIBS+=@CRYPTLIB@ @LIBS@ > - LDFLAGS=@LDFLAGS@ > - > - EXEEXT=@EXEEXT@ > -@@ -168,7 +168,7 @@ scp: $(SCPOBJS) $(HEADERS) Makefile > - # multi-binary compilation. > - MULTIOBJS= > - ifeq ($(MULTI),1) > -- MULTIOBJS=dbmulti.o $(sort $(foreach prog, $(PROGRAMS), > $($(prog)objs))) @CRYPTLIB@ > -+ MULTIOBJS=dbmulti.o $(sort $(foreach prog, $(PROGRAMS), > $($(prog)objs))) > - CFLAGS+=$(addprefix -DDBMULTI_, $(PROGRAMS)) -DDROPBEAR_MULTI > - endif > - > 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..4eea57d 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 > +@@ -318,7 +318,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