diff mbox series

[OpenWrt-Devel] wolfssl: update to version 3.14.4

Message ID 20180524163437.GA16880@makrotopia.org
State Accepted
Delegated to: John Crispin
Headers show
Series [OpenWrt-Devel] wolfssl: update to version 3.14.4 | expand

Commit Message

Daniel Golle May 24, 2018, 4:34 p.m. UTC
Use download from github archive corresponding to v3.14.4 tag because
the project's website apparently only offers 3.14.0-stable release
downloads.
Drop local patch for CVE-2017-13099 as it was merged upstream.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
---
 package/libs/wolfssl/Makefile                 |   9 +-
 .../wolfssl/patches/001-CVE-2017-13099.patch  | 144 ------------------
 .../patches/100-disable-hardening-check.patch |   2 +-
 3 files changed, 6 insertions(+), 149 deletions(-)
 delete mode 100644 package/libs/wolfssl/patches/001-CVE-2017-13099.patch

Comments

Alexandru Ardelean May 24, 2018, 7:38 p.m. UTC | #1
On Thu, May 24, 2018 at 7:34 PM, Daniel Golle <daniel@makrotopia.org> wrote:
> Use download from github archive corresponding to v3.14.4 tag because
> the project's website apparently only offers 3.14.0-stable release
> downloads.
> Drop local patch for CVE-2017-13099 as it was merged upstream.
>

Looks good.
On a related note, would you like to take over the package ?
I don't seem to find time for it at the moment.

> Signed-off-by: Daniel Golle <daniel@makrotopia.org>
> ---
>  package/libs/wolfssl/Makefile                 |   9 +-
>  .../wolfssl/patches/001-CVE-2017-13099.patch  | 144 ------------------
>  .../patches/100-disable-hardening-check.patch |   2 +-
>  3 files changed, 6 insertions(+), 149 deletions(-)
>  delete mode 100644 package/libs/wolfssl/patches/001-CVE-2017-13099.patch
>
> diff --git a/package/libs/wolfssl/Makefile b/package/libs/wolfssl/Makefile
> index d0bd3b5a35..41296dd0f2 100644
> --- a/package/libs/wolfssl/Makefile
> +++ b/package/libs/wolfssl/Makefile
> @@ -8,12 +8,13 @@
>  include $(TOPDIR)/rules.mk
>
>  PKG_NAME:=wolfssl
> -PKG_VERSION:=3.12.2
> -PKG_RELEASE:=2
> +PKG_VERSION:=3.14.4
> +PKG_RELEASE:=1
>
>  PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).zip
> -PKG_SOURCE_URL:=https://www.wolfssl.com/
> -PKG_HASH:=4993844c4b7919007c4511ec3f987fb06543536c3fc933cb53491bffe9150e49
> +# PKG_SOURCE_URL:=https://www.wolfssl.com/
> +PKG_SOURCE_URL:=https://github.com/wolfSSL/wolfssl/archive/v$(PKG_VERSION)
> +PKG_HASH:=1da1b45dec4a455716c8547074ad883c737865225f69443bb173c0dc21683fd1
>
>  PKG_FIXUP:=libtool
>  PKG_INSTALL:=1
> diff --git a/package/libs/wolfssl/patches/001-CVE-2017-13099.patch b/package/libs/wolfssl/patches/001-CVE-2017-13099.patch
> deleted file mode 100644
> index e7b63cb8d4..0000000000
> --- a/package/libs/wolfssl/patches/001-CVE-2017-13099.patch
> +++ /dev/null
> @@ -1,144 +0,0 @@
> -From fd455d5a5e9fef24c208e7ac7d3a4bc58834cbf1 Mon Sep 17 00:00:00 2001
> -From: David Garske <david@wolfssl.com>
> -Date: Tue, 14 Nov 2017 14:05:50 -0800
> -Subject: [PATCH] Fix for handling of static RSA PKCS formatting failures so
> - they are indistinguishable from from correctly formatted RSA blocks (per
> - RFC5246 section 7.4.7.1). Adjusted the static RSA preMasterSecret RNG
> - creation for consistency in client case. Removed obsolete
> - `PMS_VERSION_ERROR`.
> -
> ----
> - src/internal.c      | 70 +++++++++++++++++++++++++++++++++++++++++++++--------
> - wolfssl/error-ssl.h |  2 +-
> - 2 files changed, 61 insertions(+), 11 deletions(-)
> -
> ---- a/src/internal.c
> -+++ b/src/internal.c
> -@@ -14190,9 +14190,6 @@ const char* wolfSSL_ERR_reason_error_str
> -     case NOT_READY_ERROR :
> -         return "handshake layer not ready yet, complete first";
> -
> --    case PMS_VERSION_ERROR :
> --        return "premaster secret version mismatch error";
> --
> -     case VERSION_ERROR :
> -         return "record layer version error";
> -
> -@@ -18758,8 +18755,10 @@ int SendClientKeyExchange(WOLFSSL* ssl)
> -             #ifndef NO_RSA
> -                 case rsa_kea:
> -                 {
> -+                    /* build PreMasterSecret with RNG data */
> -                     ret = wc_RNG_GenerateBlock(ssl->rng,
> --                        ssl->arrays->preMasterSecret, SECRET_LEN);
> -+                        &ssl->arrays->preMasterSecret[VERSION_SZ],
> -+                        SECRET_LEN - VERSION_SZ);
> -                     if (ret != 0) {
> -                         goto exit_scke;
> -                     }
> -@@ -23545,6 +23544,9 @@ static int DoSessionTicket(WOLFSSL* ssl,
> -         word32 idx;
> -         word32 begin;
> -         word32 sigSz;
> -+    #ifndef NO_RSA
> -+        int    lastErr;
> -+    #endif
> -     } DckeArgs;
> -
> -     static void FreeDckeArgs(WOLFSSL* ssl, void* pArgs)
> -@@ -23770,6 +23772,14 @@ static int DoSessionTicket(WOLFSSL* ssl,
> -                             ERROR_OUT(BUFFER_ERROR, exit_dcke);
> -                         }
> -
> -+                        /* pre-load PreMasterSecret with RNG data */
> -+                        ret = wc_RNG_GenerateBlock(ssl->rng,
> -+                            &ssl->arrays->preMasterSecret[VERSION_SZ],
> -+                            SECRET_LEN - VERSION_SZ);
> -+                        if (ret != 0) {
> -+                            goto exit_dcke;
> -+                        }
> -+
> -                         args->output = NULL;
> -                         break;
> -                     } /* rsa_kea */
> -@@ -24234,6 +24244,20 @@ static int DoSessionTicket(WOLFSSL* ssl,
> -                             NULL, 0, NULL
> -                         #endif
> -                         );
> -+
> -+                        /*  Errors that can occur here that should be
> -+                         *  indistinguishable:
> -+                         *       RSA_BUFFER_E, RSA_PAD_E and RSA_PRIVATE_ERROR
> -+                         */
> -+                        if (ret < 0 && ret != BAD_FUNC_ARG) {
> -+                        #ifdef WOLFSSL_ASYNC_CRYPT
> -+                            if (ret == WC_PENDING_E)
> -+                                goto exit_dcke;
> -+                        #endif
> -+                            /* store error code for handling below */
> -+                            args->lastErr = ret;
> -+                            ret = 0;
> -+                        }
> -                         break;
> -                     } /* rsa_kea */
> -                 #endif /* !NO_RSA */
> -@@ -24380,16 +24404,42 @@ static int DoSessionTicket(WOLFSSL* ssl,
> -                         /* Add the signature length to idx */
> -                         args->idx += args->length;
> -
> --                        if (args->sigSz == SECRET_LEN && args->output != NULL) {
> --                            XMEMCPY(ssl->arrays->preMasterSecret, args->output, SECRET_LEN);
> --                            if (ssl->arrays->preMasterSecret[0] != ssl->chVersion.major ||
> --                                ssl->arrays->preMasterSecret[1] != ssl->chVersion.minor) {
> --                                ERROR_OUT(PMS_VERSION_ERROR, exit_dcke);
> -+                    #ifdef DEBUG_WOLFSSL
> -+                        /* check version (debug warning message only) */
> -+                        if (args->output != NULL) {
> -+                            if (args->output[0] != ssl->chVersion.major ||
> -+                                args->output[1] != ssl->chVersion.minor) {
> -+                                WOLFSSL_MSG("preMasterSecret version mismatch");
> -                             }
> -                         }
> -+                    #endif
> -+
> -+                        /* RFC5246 7.4.7.1:
> -+                         * Treat incorrectly formatted message blocks and/or
> -+                         * mismatched version numbers in a manner
> -+                         * indistinguishable from correctly formatted RSA blocks
> -+                         */
> -+
> -+                        ret = args->lastErr;
> -+                        args->lastErr = 0; /* reset */
> -+
> -+                        /* build PreMasterSecret */
> -+                        ssl->arrays->preMasterSecret[0] = ssl->chVersion.major;
> -+                        ssl->arrays->preMasterSecret[1] = ssl->chVersion.minor;
> -+                        if (ret == 0 && args->sigSz == SECRET_LEN &&
> -+                                                         args->output != NULL) {
> -+                            XMEMCPY(&ssl->arrays->preMasterSecret[VERSION_SZ],
> -+                                &args->output[VERSION_SZ],
> -+                                SECRET_LEN - VERSION_SZ);
> -+                        }
> -                         else {
> --                            ERROR_OUT(RSA_PRIVATE_ERROR, exit_dcke);
> -+                            /* preMasterSecret has RNG and version set */
> -+                            /* return proper length and ignore error */
> -+                            /* error will be caught as decryption error */
> -+                            args->sigSz = SECRET_LEN;
> -+                            ret = 0;
> -                         }
> -+
> -                         break;
> -                     } /* rsa_kea */
> -                 #endif /* !NO_RSA */
> ---- a/wolfssl/error-ssl.h
> -+++ b/wolfssl/error-ssl.h
> -@@ -57,7 +57,7 @@ enum wolfSSL_ErrorCodes {
> -     DOMAIN_NAME_MISMATCH         = -322,   /* peer subject name mismatch */
> -     WANT_READ                    = -323,   /* want read, call again    */
> -     NOT_READY_ERROR              = -324,   /* handshake layer not ready */
> --    PMS_VERSION_ERROR            = -325,   /* pre m secret version error */
> -+
> -     VERSION_ERROR                = -326,   /* record layer version error */
> -     WANT_WRITE                   = -327,   /* want write, call again   */
> -     BUFFER_ERROR                 = -328,   /* malformed buffer input   */
> diff --git a/package/libs/wolfssl/patches/100-disable-hardening-check.patch b/package/libs/wolfssl/patches/100-disable-hardening-check.patch
> index 83d51b1d5c..d913b5fdea 100644
> --- a/package/libs/wolfssl/patches/100-disable-hardening-check.patch
> +++ b/package/libs/wolfssl/patches/100-disable-hardening-check.patch
> @@ -1,6 +1,6 @@
>  --- a/wolfssl/wolfcrypt/settings.h
>  +++ b/wolfssl/wolfcrypt/settings.h
> -@@ -1553,7 +1553,7 @@ extern void uITRON4_free(void *p) ;
> +@@ -1624,7 +1624,7 @@ extern void uITRON4_free(void *p) ;
>   #endif
>
>   /* warning for not using harden build options (default with ./configure) */
> --
> 2.17.0
>
Daniel Golle May 24, 2018, 10:18 p.m. UTC | #2
Hi!

On Thu, May 24, 2018 at 10:38:45PM +0300, Alexandru Ardelean wrote:
> On Thu, May 24, 2018 at 7:34 PM, Daniel Golle <daniel@makrotopia.org> wrote:
> > Use download from github archive corresponding to v3.14.4 tag because
> > the project's website apparently only offers 3.14.0-stable release
> > downloads.
> > Drop local patch for CVE-2017-13099 as it was merged upstream.
> >
> 
> Looks good.
> On a related note, would you like to take over the package ?
> I don't seem to find time for it at the moment.

You had that nice patch to improve the build-time configuration half-
ready. It'd really be nice to still incooperate that...
I do believe you are doing a good job as a maintainer, however, if you
feel burdened by the maintainership I'm also ok to take over.


Cheers


Daniel
Alexandru Ardelean May 25, 2018, 6:30 a.m. UTC | #3
On Fri, May 25, 2018 at 1:18 AM, Daniel Golle <daniel@makrotopia.org> wrote:
> Hi!
>
> On Thu, May 24, 2018 at 10:38:45PM +0300, Alexandru Ardelean wrote:
>> On Thu, May 24, 2018 at 7:34 PM, Daniel Golle <daniel@makrotopia.org> wrote:
>> > Use download from github archive corresponding to v3.14.4 tag because
>> > the project's website apparently only offers 3.14.0-stable release
>> > downloads.
>> > Drop local patch for CVE-2017-13099 as it was merged upstream.
>> >
>>
>> Looks good.
>> On a related note, would you like to take over the package ?
>> I don't seem to find time for it at the moment.
>
> You had that nice patch to improve the build-time configuration half-
> ready. It'd really be nice to still incooperate that...
> I do believe you are doing a good job as a maintainer, however, if you
> feel burdened by the maintainership I'm also ok to take over.
>

Not so much burdened as much as I don't want to block other people.
So, if you don't feel blocked, I can still keep maintaining it.

I will make time for that configuration patch.

Thanks
Alex

>
> Cheers
>
>
> Daniel
diff mbox series

Patch

diff --git a/package/libs/wolfssl/Makefile b/package/libs/wolfssl/Makefile
index d0bd3b5a35..41296dd0f2 100644
--- a/package/libs/wolfssl/Makefile
+++ b/package/libs/wolfssl/Makefile
@@ -8,12 +8,13 @@ 
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=wolfssl
-PKG_VERSION:=3.12.2
-PKG_RELEASE:=2
+PKG_VERSION:=3.14.4
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).zip
-PKG_SOURCE_URL:=https://www.wolfssl.com/
-PKG_HASH:=4993844c4b7919007c4511ec3f987fb06543536c3fc933cb53491bffe9150e49
+# PKG_SOURCE_URL:=https://www.wolfssl.com/
+PKG_SOURCE_URL:=https://github.com/wolfSSL/wolfssl/archive/v$(PKG_VERSION)
+PKG_HASH:=1da1b45dec4a455716c8547074ad883c737865225f69443bb173c0dc21683fd1
 
 PKG_FIXUP:=libtool
 PKG_INSTALL:=1
diff --git a/package/libs/wolfssl/patches/001-CVE-2017-13099.patch b/package/libs/wolfssl/patches/001-CVE-2017-13099.patch
deleted file mode 100644
index e7b63cb8d4..0000000000
--- a/package/libs/wolfssl/patches/001-CVE-2017-13099.patch
+++ /dev/null
@@ -1,144 +0,0 @@ 
-From fd455d5a5e9fef24c208e7ac7d3a4bc58834cbf1 Mon Sep 17 00:00:00 2001
-From: David Garske <david@wolfssl.com>
-Date: Tue, 14 Nov 2017 14:05:50 -0800
-Subject: [PATCH] Fix for handling of static RSA PKCS formatting failures so
- they are indistinguishable from from correctly formatted RSA blocks (per
- RFC5246 section 7.4.7.1). Adjusted the static RSA preMasterSecret RNG
- creation for consistency in client case. Removed obsolete
- `PMS_VERSION_ERROR`.
-
----
- src/internal.c      | 70 +++++++++++++++++++++++++++++++++++++++++++++--------
- wolfssl/error-ssl.h |  2 +-
- 2 files changed, 61 insertions(+), 11 deletions(-)
-
---- a/src/internal.c
-+++ b/src/internal.c
-@@ -14190,9 +14190,6 @@ const char* wolfSSL_ERR_reason_error_str
-     case NOT_READY_ERROR :
-         return "handshake layer not ready yet, complete first";
- 
--    case PMS_VERSION_ERROR :
--        return "premaster secret version mismatch error";
--
-     case VERSION_ERROR :
-         return "record layer version error";
- 
-@@ -18758,8 +18755,10 @@ int SendClientKeyExchange(WOLFSSL* ssl)
-             #ifndef NO_RSA
-                 case rsa_kea:
-                 {
-+                    /* build PreMasterSecret with RNG data */
-                     ret = wc_RNG_GenerateBlock(ssl->rng,
--                        ssl->arrays->preMasterSecret, SECRET_LEN);
-+                        &ssl->arrays->preMasterSecret[VERSION_SZ],
-+                        SECRET_LEN - VERSION_SZ);
-                     if (ret != 0) {
-                         goto exit_scke;
-                     }
-@@ -23545,6 +23544,9 @@ static int DoSessionTicket(WOLFSSL* ssl,
-         word32 idx;
-         word32 begin;
-         word32 sigSz;
-+    #ifndef NO_RSA
-+        int    lastErr;
-+    #endif
-     } DckeArgs;
- 
-     static void FreeDckeArgs(WOLFSSL* ssl, void* pArgs)
-@@ -23770,6 +23772,14 @@ static int DoSessionTicket(WOLFSSL* ssl,
-                             ERROR_OUT(BUFFER_ERROR, exit_dcke);
-                         }
- 
-+                        /* pre-load PreMasterSecret with RNG data */
-+                        ret = wc_RNG_GenerateBlock(ssl->rng,
-+                            &ssl->arrays->preMasterSecret[VERSION_SZ],
-+                            SECRET_LEN - VERSION_SZ);
-+                        if (ret != 0) {
-+                            goto exit_dcke;
-+                        }
-+
-                         args->output = NULL;
-                         break;
-                     } /* rsa_kea */
-@@ -24234,6 +24244,20 @@ static int DoSessionTicket(WOLFSSL* ssl,
-                             NULL, 0, NULL
-                         #endif
-                         );
-+
-+                        /*  Errors that can occur here that should be
-+                         *  indistinguishable:
-+                         *       RSA_BUFFER_E, RSA_PAD_E and RSA_PRIVATE_ERROR
-+                         */
-+                        if (ret < 0 && ret != BAD_FUNC_ARG) {
-+                        #ifdef WOLFSSL_ASYNC_CRYPT
-+                            if (ret == WC_PENDING_E)
-+                                goto exit_dcke;
-+                        #endif
-+                            /* store error code for handling below */
-+                            args->lastErr = ret;
-+                            ret = 0;
-+                        }
-                         break;
-                     } /* rsa_kea */
-                 #endif /* !NO_RSA */
-@@ -24380,16 +24404,42 @@ static int DoSessionTicket(WOLFSSL* ssl,
-                         /* Add the signature length to idx */
-                         args->idx += args->length;
- 
--                        if (args->sigSz == SECRET_LEN && args->output != NULL) {
--                            XMEMCPY(ssl->arrays->preMasterSecret, args->output, SECRET_LEN);
--                            if (ssl->arrays->preMasterSecret[0] != ssl->chVersion.major ||
--                                ssl->arrays->preMasterSecret[1] != ssl->chVersion.minor) {
--                                ERROR_OUT(PMS_VERSION_ERROR, exit_dcke);
-+                    #ifdef DEBUG_WOLFSSL
-+                        /* check version (debug warning message only) */
-+                        if (args->output != NULL) {
-+                            if (args->output[0] != ssl->chVersion.major ||
-+                                args->output[1] != ssl->chVersion.minor) {
-+                                WOLFSSL_MSG("preMasterSecret version mismatch");
-                             }
-                         }
-+                    #endif
-+
-+                        /* RFC5246 7.4.7.1:
-+                         * Treat incorrectly formatted message blocks and/or
-+                         * mismatched version numbers in a manner
-+                         * indistinguishable from correctly formatted RSA blocks
-+                         */
-+
-+                        ret = args->lastErr;
-+                        args->lastErr = 0; /* reset */
-+
-+                        /* build PreMasterSecret */
-+                        ssl->arrays->preMasterSecret[0] = ssl->chVersion.major;
-+                        ssl->arrays->preMasterSecret[1] = ssl->chVersion.minor;
-+                        if (ret == 0 && args->sigSz == SECRET_LEN &&
-+                                                         args->output != NULL) {
-+                            XMEMCPY(&ssl->arrays->preMasterSecret[VERSION_SZ],
-+                                &args->output[VERSION_SZ],
-+                                SECRET_LEN - VERSION_SZ);
-+                        }
-                         else {
--                            ERROR_OUT(RSA_PRIVATE_ERROR, exit_dcke);
-+                            /* preMasterSecret has RNG and version set */
-+                            /* return proper length and ignore error */
-+                            /* error will be caught as decryption error */
-+                            args->sigSz = SECRET_LEN;
-+                            ret = 0;
-                         }
-+
-                         break;
-                     } /* rsa_kea */
-                 #endif /* !NO_RSA */
---- a/wolfssl/error-ssl.h
-+++ b/wolfssl/error-ssl.h
-@@ -57,7 +57,7 @@ enum wolfSSL_ErrorCodes {
-     DOMAIN_NAME_MISMATCH         = -322,   /* peer subject name mismatch */
-     WANT_READ                    = -323,   /* want read, call again    */
-     NOT_READY_ERROR              = -324,   /* handshake layer not ready */
--    PMS_VERSION_ERROR            = -325,   /* pre m secret version error */
-+
-     VERSION_ERROR                = -326,   /* record layer version error */
-     WANT_WRITE                   = -327,   /* want write, call again   */
-     BUFFER_ERROR                 = -328,   /* malformed buffer input   */
diff --git a/package/libs/wolfssl/patches/100-disable-hardening-check.patch b/package/libs/wolfssl/patches/100-disable-hardening-check.patch
index 83d51b1d5c..d913b5fdea 100644
--- a/package/libs/wolfssl/patches/100-disable-hardening-check.patch
+++ b/package/libs/wolfssl/patches/100-disable-hardening-check.patch
@@ -1,6 +1,6 @@ 
 --- a/wolfssl/wolfcrypt/settings.h
 +++ b/wolfssl/wolfcrypt/settings.h
-@@ -1553,7 +1553,7 @@ extern void uITRON4_free(void *p) ;
+@@ -1624,7 +1624,7 @@ extern void uITRON4_free(void *p) ;
  #endif
  
  /* warning for not using harden build options (default with ./configure) */