From eda102e39760b89d94a76a2b58cd052752874c80 Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Thu, 13 Dec 2018 20:05:12 +0800
Subject: [PATCH] jwe

---
 .gitignore                                    |    1 +
 .travis.yml                                   |    4 +-
 CMakeLists.txt                                |   91 +-
 README.md                                     |   48 +-
 READMEs/README.crypto-apis.md                 |   18 +-
 changelog                                     |    6 +
 cmake/lws_config.h.in                         |   11 +-
 doc-assets/lws-overview.png                   |  Bin 0 -> 519276 bytes
 doc-assets/lws-overview.svg                   |  335 ---
 include/libwebsockets.h                       |    5 +-
 include/libwebsockets/lws-genaes.h            |   23 +-
 include/libwebsockets/lws-gencrypto.h         |   33 +-
 include/libwebsockets/lws-genec.h             |   26 +-
 include/libwebsockets/lws-genrsa.h            |   72 +-
 include/libwebsockets/lws-jose.h              |   91 +-
 include/libwebsockets/lws-jwe.h               |   94 +-
 include/libwebsockets/lws-jwk.h               |   65 +-
 include/libwebsockets/lws-jws.h               |  325 ++-
 include/libwebsockets/lws-lejp.h              |    4 +
 include/libwebsockets/lws-misc.h              |   16 +
 lib/core/libwebsockets.c                      |   20 +-
 lib/core/output.c                             |    3 +-
 lib/jose/README.md                            |   25 +-
 lib/jose/jwe/jwe-aeskw.c                      |  192 ++
 lib/jose/jwe/jwe-rsa-aescbc.c                 |  437 ++++
 lib/jose/jwe/jwe-rsa-aesgcm.c                 |  349 +++
 lib/jose/jwe/jwe.c                            |  439 +++-
 lib/jose/jwe/private.h                        |   50 +
 lib/jose/jwk/jwk.c                            |  674 ++++--
 lib/jose/jws/jose.c                           |  146 +-
 lib/jose/jws/jws.c                            |  624 ++++-
 lib/jose/jws/private.h                        |    8 -
 lib/jose/private.h                            |    5 +
 lib/misc/fts/trie-fd.c                        |    2 +-
 lib/misc/lejp.c                               |   12 +-
 lib/misc/peer-limits.c                        |   11 +-
 lib/roles/http/client/client.c                |    9 +-
 lib/roles/http/server/server.c                |   22 +-
 lib/tls/lws-gencrypto-common.c                |  477 +++-
 lib/tls/lws-genec-common.c                    |    2 +
 lib/tls/mbedtls/lws-genaes.c                  |  166 +-
 lib/tls/mbedtls/lws-gencrypto.c               |    6 +-
 lib/tls/mbedtls/lws-genec.c                   |  137 +-
 lib/tls/mbedtls/lws-genhash.c                 |    6 +
 lib/tls/mbedtls/lws-genrsa.c                  |  110 +-
 lib/tls/mbedtls/mbedtls-server.c              |    2 +-
 lib/tls/openssl/lws-genaes.c                  |  100 +-
 lib/tls/openssl/lws-gencrypto.c               |    5 +
 lib/tls/openssl/lws-genec.c                   |  241 +-
 lib/tls/openssl/lws-genhash.c                 |    8 +
 lib/tls/openssl/lws-genrsa.c                  |   65 +-
 lib/tls/openssl/openssl-client.c              |    5 +
 lib/tls/openssl/openssl-server.c              |    5 +
 lib/tls/openssl/ssl.c                         |    5 +
 lib/tls/private.h                             |    5 +
 minimal-examples/README.md                    |    1 +
 minimal-examples/api-tests/README.md          |    9 +-
 .../api-tests/api-test-gencrypto/lws-genaes.c |   40 +-
 .../api-tests/api-test-gencrypto/lws-genec.c  |    6 +-
 .../api-tests/api-test-jose/jwe.c             | 2127 +++++++++++++++--
 .../api-tests/api-test-jose/jws.c             |  700 +++++-
 .../api-tests/api-test-lwsac/main.c           |    2 +
 minimal-examples/crypto/README.md             |    5 +
 .../crypto/minimal-crypto-jwe/CMakeLists.txt  |   77 +
 .../crypto/minimal-crypto-jwe/README.md       |   69 +
 .../minimal-crypto-jwe/key-rsa-4096.private   |    1 +
 .../minimal-crypto-jwe/key-rsa-4096.pub       |    1 +
 .../crypto/minimal-crypto-jwe/main.c          |  264 ++
 .../crypto/minimal-crypto-jwk/CMakeLists.txt  |   77 +
 .../crypto/minimal-crypto-jwk/README.md       |   51 +
 .../crypto/minimal-crypto-jwk/main.c          |  187 ++
 .../crypto/minimal-crypto-jws/CMakeLists.txt  |   77 +
 .../crypto/minimal-crypto-jws/README.md       |   59 +
 .../crypto/minimal-crypto-jws/main.c          |  185 ++
 .../minimal-http-server-smp.c                 |    6 +-
 .../acme-client/protocol_lws_acme_client.c    |   10 +-
 plugins/deaddrop/protocol_lws_deaddrop.c      |    8 +-
 plugins/raw-proxy/protocol_lws_raw_proxy.c    |   13 +-
 plugins/ssh-base/sshd.c                       |   15 +-
 scripts/autobahn-test-server.sh               |    2 +-
 test-apps/test-sshd.c                         |    2 +-
 81 files changed, 8142 insertions(+), 1493 deletions(-)
 create mode 100644 doc-assets/lws-overview.png
 delete mode 100644 doc-assets/lws-overview.svg
 create mode 100644 lib/jose/jwe/jwe-aeskw.c
 create mode 100644 lib/jose/jwe/jwe-rsa-aescbc.c
 create mode 100644 lib/jose/jwe/jwe-rsa-aesgcm.c
 create mode 100644 lib/jose/jwe/private.h
 create mode 100644 minimal-examples/crypto/README.md
 create mode 100644 minimal-examples/crypto/minimal-crypto-jwe/CMakeLists.txt
 create mode 100644 minimal-examples/crypto/minimal-crypto-jwe/README.md
 create mode 100644 minimal-examples/crypto/minimal-crypto-jwe/key-rsa-4096.private
 create mode 100644 minimal-examples/crypto/minimal-crypto-jwe/key-rsa-4096.pub
 create mode 100644 minimal-examples/crypto/minimal-crypto-jwe/main.c
 create mode 100644 minimal-examples/crypto/minimal-crypto-jwk/CMakeLists.txt
 create mode 100644 minimal-examples/crypto/minimal-crypto-jwk/README.md
 create mode 100644 minimal-examples/crypto/minimal-crypto-jwk/main.c
 create mode 100644 minimal-examples/crypto/minimal-crypto-jws/CMakeLists.txt
 create mode 100644 minimal-examples/crypto/minimal-crypto-jws/README.md
 create mode 100644 minimal-examples/crypto/minimal-crypto-jws/main.c

diff --git a/.gitignore b/.gitignore
index 19199b1b..5805b27d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -51,3 +51,4 @@ doc
 /build3/
 /cov-int/
 /.vs/
+/build-mtls/
diff --git a/.travis.yml b/.travis.yml
index d7fa222e..fb94419c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,10 +4,10 @@ env:
   global:
     - secure: "KhAdQ9ja+LBObWNQTYO7Df5J4DyOih6S+eerDMu8UPSO+CoWV2pWoQzbOfocjyOscGOwC+2PrrHDNZyGfqkCLDXg1BxynXPCFerHC1yc2IajvKpGXmAAygNIvp4KACDfGv/dkXrViqIzr/CdcNaU4vIMHSVb5xkeLi0W1dPnQOI="
   matrix:
-    - LWS_METHOD=lwsws CMAKE_ARGS="-DLWS_WITH_LWSWS=ON -DLWS_WITHOUT_EXTENSIONS=0 -DLWS_WITH_HTTP2=1 -DLWS_WITH_ACME=1 -DLWS_WITH_MINIMAL_EXAMPLES=1 -DCMAKE_BUILD_TYPE=DEBUG -DLWS_ROLE_DBUS=1 -DLWS_DBUS_INCLUDE2=/usr/lib/x86_64-linux-gnu/dbus-1.0/include/ -DLWS_WITH_JWS=1 -DLWS_WITH_GENRSA=1 -DLWS_WITH_GENHASH=1 -DLWS_WITH_GENAES=1 -DLWS_WITH_GENEC=1"
+    - LWS_METHOD=lwsws CMAKE_ARGS="-DLWS_WITH_LWSWS=ON -DLWS_WITHOUT_EXTENSIONS=0 -DLWS_WITH_HTTP2=1 -DLWS_WITH_ACME=1 -DLWS_WITH_MINIMAL_EXAMPLES=1 -DCMAKE_BUILD_TYPE=DEBUG -DLWS_ROLE_DBUS=1 -DLWS_DBUS_INCLUDE2=/usr/lib/x86_64-linux-gnu/dbus-1.0/include/ -DLWS_WITH_GENCRYPTO=1 -DLWS_WITH_JOSE=1"
     - LWS_METHOD=lwsws2 CMAKE_ARGS="-DLWS_WITH_LWSWS=ON -DLWS_WITHOUT_EXTENSIONS=0 -DLWS_WITH_HTTP2=1 -DLWS_WITH_ACME=1 -DLWS_WITH_MINIMAL_EXAMPLES=1 -DCMAKE_BUILD_TYPE=DEBUG -DLWS_ROLE_DBUS=1 -DLWS_DBUS_INCLUDE2=/usr/lib/x86_64-linux-gnu/dbus-1.0/include/"
     - LWS_METHOD=default CMAKE_ARGS="-DLWS_WITH_MINIMAL_EXAMPLES=1"
-    - LWS_METHOD=mbedtls CMAKE_ARGS="-DLWS_WITH_MBEDTLS=1 -DLWS_WITH_HTTP2=1 -DLWS_WITH_LWSWS=1 -DLWS_WITH_MINIMAL_EXAMPLES=1 -DCMAKE_BUILD_TYPE=DEBUG"
+    - LWS_METHOD=mbedtls CMAKE_ARGS="-DLWS_WITH_MBEDTLS=1 -DLWS_WITH_HTTP2=1 -DLWS_WITH_LWSWS=1 -DLWS_WITH_MINIMAL_EXAMPLES=1 -DLWS_WITH_JOSE=1 -DCMAKE_BUILD_TYPE=DEBUG"
     - LWS_METHOD=noserver CMAKE_ARGS="-DLWS_WITHOUT_SERVER=ON -DLWS_WITH_MINIMAL_EXAMPLES=1"
     - LWS_METHOD=noclient CMAKE_ARGS="-DLWS_WITHOUT_CLIENT=ON -DLWS_WITH_MINIMAL_EXAMPLES=1"
     - LWS_METHOD=noext CMAKE_ARGS="-DLWS_WITHOUT_EXTENSIONS=ON -DLWS_WITH_MINIMAL_EXAMPLES=1"
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 088cb1c2..63bc25cc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -105,12 +105,8 @@ option(LWS_WITH_SMTP "Provide SMTP support" OFF)
 option(LWS_WITH_NO_LOGS "Disable all logging from being compiled in" OFF)
 option(LWS_AVOID_SIGPIPE_IGN "Android 7+ reportedly needs this" OFF)
 option(LWS_WITH_STATS "Keep statistics of lws internal operations" OFF)
-option(LWS_WITH_JWS "JSON Web Signature (RFC7515) API" OFF)
-option(LWS_WITH_JWE "JSON Web Encryption (RFC7516) API" OFF)
-option(LWS_WITH_GENHASH "Enable support for Generic Hash (SHA1 + SHA2 with api independent of TLS backend)" OFF)
-option(LWS_WITH_GENRSA "Enable support for Generic RSA (RSA with api independent of TLS backend)" OFF)
-option(LWS_WITH_GENAES "Enable support for Generic AES (AES with api independent of TLS backend)" OFF)
-option(LWS_WITH_GENEC "Enable support for Generic EC (EC with api independent of TLS backend)" OFF)
+option(LWS_WITH_JOSE "JSON Web Signature / Encryption / Keys (RFC7515/6/) API" OFF)
+option(LWS_WITH_GENCRYPTO "Enable support for Generic Crypto apis independent of TLS backend" OFF)
 option(LWS_WITH_SELFTESTS "Selftests run at context creation" OFF)
 option(LWS_WITH_GCOV "Build with gcc gcov coverage instrumentation" OFF)
 option(LWS_WITH_EXPORT_LWSTARGETS "Export libwebsockets CMake targets.  Disable if they conflict with an outer cmake project." ON)
@@ -159,11 +155,8 @@ if(LWS_WITH_DISTRO_RECOMMENDED)
 	set(LWS_WITH_LEJP_CONF 1)
 	set(LWS_WITH_PLUGINS 1)
 	set(LWS_ROLE_RAW_PROXY 1)
-	set(LWS_WITH_GENHASH 1)
-	set(LWS_WITH_GENRSA 1)
-	set(LWS_WITH_GENEC 1)
-	set(LWS_WITH_JWS 1)
-	set(LWS_WITH_JWE 1)
+	set(LWS_WITH_GENCRYPTO 1)
+	set(LWS_WITH_JOSE 1)
 endif()
 
 # do you care about this?  Then send me a patch where it disables it on travis
@@ -292,6 +285,11 @@ if (LWS_WITH_LWSWS)
  set(LWS_ROLE_RAW_PROXY 1)
 endif()
 
+# sshd plugin
+if (LWS_WITH_PLUGINS)
+ set(LWS_WITH_GENCRYPTO 1)
+endif()
+
 if (LWS_ROLE_RAW_PROXY)
  set (LWS_WITHOUT_CLIENT 0)
  set (LWS_WITHOUT_SERVER 0)
@@ -300,19 +298,12 @@ endif()
 if (LWS_WITH_ACME)
  set (LWS_WITHOUT_CLIENT 0)
  set (LWS_WITHOUT_SERVER 0)
- set (LWS_WITH_JWS 1)
- set (LWS_WITH_JWE 1)
-endif()
-
-if (LWS_WITH_JWE)
- set(LWS_WITH_JWS 1)
+ set (LWS_WITH_JOSE 1)
 endif()
 
-if (LWS_WITH_JWS)
+if (LWS_WITH_JOSE)
  set(LWS_WITH_LEJP 1)
- set(LWS_WITH_GENHASH 1)
- set(LWS_WITH_GENRSA 1)
- set(LWS_WITH_GENEC 1)
+ set(LWS_WITH_GENCRYPTO 1)
 endif()
 
 if (LWS_WITH_PLUGINS AND NOT LWS_WITH_LIBUV)
@@ -327,8 +318,7 @@ endif()
 
 if (LWS_WITH_PLUGINS OR LWS_WITH_CGI)
 	# sshd plugin
- set(LWS_WITH_GENHASH 1)
- set(LWS_WITH_GENRSA 1)
+ set(LWS_WITH_GENCRYPTO 1)
 endif()
 
 if (LWS_WITH_GENERIC_SESSIONS)
@@ -1025,29 +1015,13 @@ if (LWS_WITH_SSL)
 			list(APPEND SOURCES
 				lib/tls/mbedtls/ssl.c
 			)
-			if (LWS_WITH_GENHASH)
+			if (LWS_WITH_GENCRYPTO)
 				list(APPEND SOURCES
 					lib/tls/mbedtls/lws-genhash.c
-				)
-			endif()
-			if (LWS_WITH_GENRSA)
-				list(APPEND SOURCES
 					lib/tls/mbedtls/lws-genrsa.c
-				)
-			endif()
-			if (LWS_WITH_GENAES)
-				list(APPEND SOURCES
 					lib/tls/mbedtls/lws-genaes.c
-				)
-			endif()
-			if (LWS_WITH_GENEC)
-				list(APPEND SOURCES
 					lib/tls/lws-genec-common.c
 					lib/tls/mbedtls/lws-genec.c
-				)
-			endif()
-			if (LWS_WITH_GENEC OR LWS_WITH_GENRSA)
-				list(APPEND SOURCES
 					lib/tls/mbedtls/lws-gencrypto.c
 				)
 			endif()
@@ -1055,29 +1029,13 @@ if (LWS_WITH_SSL)
 			list(APPEND SOURCES
 				lib/tls/openssl/ssl.c
 			)
-			if (LWS_WITH_GENHASH)
+			if (LWS_WITH_GENCRYPTO)
 				list(APPEND SOURCES
 					lib/tls/openssl/lws-genhash.c
-				)
-			endif()
-			if (LWS_WITH_GENRSA)
-				list(APPEND SOURCES
 					lib/tls/openssl/lws-genrsa.c
-				)
-			endif()
-			if (LWS_WITH_GENAES)
-				list(APPEND SOURCES
 					lib/tls/openssl/lws-genaes.c
-				)
-			endif()
-			if (LWS_WITH_GENEC)
-				list(APPEND SOURCES
 					lib/tls/lws-genec-common.c
 					lib/tls/openssl/lws-genec.c
-				)
-			endif()
-			if (LWS_WITH_GENEC OR LWS_WITH_GENRSA)
-				list(APPEND SOURCES
 					lib/tls/openssl/lws-gencrypto.c
 				)
 			endif()
@@ -1235,19 +1193,19 @@ if (LWS_WITH_ZIP_FOPS)
        endif()
 endif()
 
-if (LWS_WITH_JWS)
+if (LWS_WITH_JOSE)
 	list(APPEND SOURCES
 		lib/jose/jwk/jwk.c
 		lib/jose/jws/jose.c
-		lib/jose/jws/jws.c)
-endif()
-
-if (LWS_WITH_JWE)
-	list(APPEND SOURCES
-		lib/jose/jwe/jwe.c)
+		lib/jose/jws/jws.c
+		lib/jose/jwe/jwe.c
+		lib/jose/jwe/jwe-rsa-aescbc.c
+		lib/jose/jwe/jwe-aeskw.c
+		lib/jose/jwe/jwe-rsa-aesgcm.c
+		)
 endif()
 
-if (LWS_WITH_JWE OR LWS_WITH_JWS OR LWS_WITH_GENHASH)
+if (LWS_WITH_JOSE OR LWS_WITH_GENCRYPTO)
 	list(APPEND SOURCES
 		lib/tls/lws-gencrypto-common.c)
 endif()
@@ -1685,6 +1643,9 @@ CHECK_FUNCTION_EXISTS(SSL_CTX_set_ciphersuites LWS_HAVE_SSL_CTX_set_ciphersuites
 if (LWS_WITH_SSL AND NOT LWS_WITH_MBEDTLS)
 CHECK_SYMBOL_EXISTS(SSL_CTX_get_extra_chain_certs_only openssl/ssl.h LWS_HAVE_SSL_EXTRA_CHAIN_CERTS)
 CHECK_FUNCTION_EXISTS(EVP_MD_CTX_free LWS_HAVE_EVP_MD_CTX_free)
+CHECK_FUNCTION_EXISTS(ECDSA_SIG_set0 LWS_HAVE_ECDSA_SIG_set0)
+CHECK_FUNCTION_EXISTS(BN_bn2binpad LWS_HAVE_BN_bn2binpad)
+CHECK_FUNCTION_EXISTS(EVP_aes_128_wrap LWS_HAVE_EVP_aes_128_wrap)
 endif()
 if (LWS_WITH_MBEDTLS)
 	set(LWS_HAVE_TLS_CLIENT_METHOD 1)
diff --git a/README.md b/README.md
index 958641f7..0fc8526d 100644
--- a/README.md
+++ b/README.md
@@ -11,14 +11,56 @@ cloud serving.
 [50 minimal examples](https://libwebsockets.org/git/libwebsockets/tree/minimal-examples) for
 various scenarios, CC0-licensed (public domain) for cut-and-paste, allow you to get started quickly.
 
-![overview](./doc-assets/lws-overview.svg)
+![overview](./doc-assets/lws-overview.png)
 
 News
 ----
 
 ## New features on master
 
- - **`lws-genec` ECDH + ECDSA** - Work in progress
+ - CMake config simplification for crypto: `-DLWS_WITH_GENCRYPTO=1` for all
+   generic cipher and hash apis built (which work the same on mbedtls and
+   OpenSSL transparently), and `-DLWS_WITH_JOSE=1` for all JOSE, JWK, JWS
+   and JWE support built (which use gencrypto and so also work the same
+   regardless of tls library backend).
+
+ - **`JWE`** - JWE (RFC7516) Work in progress: Working CI tests
+
+|Key Encryption|Payload authentication + crypt|Enc + Dec Support|
+|---|---|---|
+|`RSAES-PKCS1-v1.5` 2048b & 4096b|`AES_128_CBC_HMAC_SHA_256`|Enc + Dec|
+|`RSAES-PKCS1-v1.5` 2048b|`AES_192_CBC_HMAC_SHA_384`|Enc + Dec|
+|`RSAES-PKCS1-v1.5` 2048b|`AES_256_CBC_HMAC_SHA_512`|Enc + Dec|
+|`RSAES-OAEP`|`AES_256_GCM`|Enc + Dec|
+|`AES128KW`, `AES192KW`, `AES256KW`|`AES_128_CBC_HMAC_SHA_256`|Enc + Dec|
+|`AES128KW`, `AES192KW`, `AES256KW`|`AES_192_CBC_HMAC_SHA_384`|Enc + Dec|
+|`AES128KW`, `AES192KW`, `AES256KW`|`AES_256_CBC_HMAC_SHA_512`|Enc + Dec|
+|`ECDH-ES` P-256|`AES_128_GCM`|Dec|
+
+All tests pass on both OpenSSL and mbedTLS backends, using keys generated on
+both OpenSSL and mbedTLS in the tests.
+
+A minimal example tool shows how to encrypt and decrypt compact JWE objects
+from the commandline for all supported algorithms.
+
+   [jwe api](https://libwebsockets.org/git/libwebsockets/tree/include/libwebsockets/lws-jwe.h), 
+   [jwe unit tests](https://libwebsockets.org/git/libwebsockets/tree/minimal-examples/api-tests/api-test-jose/jwe.c), 
+   [jwe minimal example](https://libwebsockets.org/git/libwebsockets/tree/minimal-examples/crypto/minimal-crypto-jwe)
+
+ - **`lws-genec` ECDSA** - JWS-compatible ECDSA is supported on both OpenSSL and mbedtls... Work in progress: ECDH-ES
+
+ - **`JWS`** - JWS (RFC7515) is now supported for none, HS256/384/512, RS256/384/512, and ES256/384/512, on both OpenSSL and mbedtls.  There's a minimal example tool that signs and verifies compact
+ representation JWS from stdin.
+   [jws api](https://libwebsockets.org/git/libwebsockets/tree/include/libwebsockets/lws-jws.h), 
+   [jws unit tests](https://libwebsockets.org/git/libwebsockets/tree/minimal-examples/api-tests/api-test-jose/jws.c), 
+   [jws minimal example](https://libwebsockets.org/git/libwebsockets/tree/minimal-examples/crypto/minimal-crypto-jwe)
+
+ - **`JWK`** - JWK (RFC7517) now supports oct, RSA and EC keys including JSON key
+   arrays on both OpenSSL and mbedtls.  A minimal example tool shows how to create
+   new JSON JWK keys to specified parameters from the commandline for all supported
+   ciphers.
+
+   [jwk minimal example](https://libwebsockets.org/git/libwebsockets/tree/minimal-examples/crypto/minimal-crypto-jwk)
 
  - **`lws-genrsa` OAEP + PSS support** - in addition to PKCS#1 1.5 padding, OAEP and PSS are
    now supported on both mbedtls and openssl backends.
@@ -27,7 +69,7 @@ News
    backends.  Supports CBC, CFB128, CFB8, CTR, ECB, OFB, XTS and GCM variants.  Unit tests in CI.
    [genaes api](https://libwebsockets.org/git/libwebsockets/tree/include/libwebsockets/lws-genaes.h),
    [api test](https://libwebsockets.org/git/libwebsockets/tree/minimal-examples/api-tests/api-test-gencrypto),
-   CMake config: `-DLWS_WITH_GENAES=1`
+   CMake config: `-DLWS_WITH_GENCRYPTO=1`
 
  - **http fallback support** - you can specify a role and protocol to apply if non-http or non-tls
    packets arrive at an http(s) listen port.  For example, you can specify that the new `raw proxy`
diff --git a/READMEs/README.crypto-apis.md b/READMEs/README.crypto-apis.md
index c8a06775..88e4695f 100644
--- a/READMEs/README.crypto-apis.md
+++ b/READMEs/README.crypto-apis.md
@@ -15,6 +15,19 @@ or via another layer on top, which processes JOSE JSON objects using
 JWS (JSON Web Signatures), JWK (JSON Web Keys), and JWE (JSON Web
 Encryption).
 
+The `JW` apis use the generic apis (`lws_genrsa_`, etc) to get the crypto tasks
+done, so anything they can do you can also get done using the generic apis.
+The main difference is that with the generic apis, you must instantiate the
+correct types and use type-specfic apis.  With the `JW` apis, there is only
+one interface for all operations, with the details hidden in the api and
+controlled by the JSON objects.
+
+Because of this, the `JW` apis are often preferred because they give you
+"crypto agility" cheaply... to change your crypto to another supported algorithm
+once it's working, you literally just change your JSON defining the keys and
+JWE or JWS algorithm.  (It's up to you to define your policy for which
+combinations are acceptable by querying the parsed JW structs).
+
 ## Using the generic layer
 
 All the necessary includes are part of `libwebsockets.h`.
@@ -63,7 +76,7 @@ Unit tests for these apis, which serve as usage examples, can be found in [./min
 Keys in the JOSE layer use a `struct lws_jwk`, this contains two arrays of
 `struct lws_jwk_elements` sized for the worst case (currently RSA).  One
 array contains the key elements as described for the generic case, and the
-other contains various key metadata taken from JWK JSON.
+other contains various nonencrypted key metadata taken from JWK JSON.
 
 |metadata index|function|
 |---|---|
@@ -74,3 +87,6 @@ other contains various key metadata taken from JWK JSON.
 |`JWK_META_X5C`|Optional X.509 cert version of the key|
 |`JWK_META_ALG`|Optional overall crypto algorithm the key is intended for use with|
 
+`lws_jwk_destroy()` should be called when the jwk is going out of scope... this
+takes care to zero down any key element data in the jwk.
+
diff --git a/changelog b/changelog
index 4ce59358..8fd65070 100644
--- a/changelog
+++ b/changelog
@@ -1,6 +1,12 @@
 Changelog
 ---------
 
+ - CHANGE: REMOVED: LWS_WITH_GENRSA, LWS_WITH_GENHASH, LWS_WITH_GENEC,
+ LWS_WITH_GENAES have all been removed and combined into LWS_WITH_GENCRYPTO
+
+ - CHANGE: REMOVED: LWS_WITH_JWS, LWS_WITH_JWE have been removed and combined
+ into LWS_WITH_JOSE
+
 v3.1.0
 ======
 
diff --git a/cmake/lws_config.h.in b/cmake/lws_config.h.in
index 7c50c29d..7c6cc524 100644
--- a/cmake/lws_config.h.in
+++ b/cmake/lws_config.h.in
@@ -23,7 +23,10 @@
 #cmakedefine LWS_HAS_INTPTR_T
 #cmakedefine LWS_HAVE__ATOI64
 #cmakedefine LWS_HAVE_ATOLL
+#cmakedefine LWS_HAVE_BN_bn2binpad
+#cmakedefine LWS_HAVE_ECDSA_SIG_set0
 #cmakedefine LWS_HAVE_EVP_MD_CTX_free
+#cmakedefine LWS_HAVE_EVP_aes_128_wrap
 #cmakedefine LWS_HAVE_LIBCAP
 #cmakedefine LWS_HAVE_MALLOC_H
 #cmakedefine LWS_HAVE_NEW_UV_VERSION_H
@@ -71,17 +74,13 @@
 #cmakedefine LWS_WITH_CGI
 #cmakedefine LWS_WITH_ESP32
 #cmakedefine LWS_WITH_FTS
-#cmakedefine LWS_WITH_GENRSA
-#cmakedefine LWS_WITH_GENHASH
-#cmakedefine LWS_WITH_GENAES
-#cmakedefine LWS_WITH_GENEC
+#cmakedefine LWS_WITH_GENCRYPTO
 #cmakedefine LWS_WITH_HTTP2
 #cmakedefine LWS_WITH_HTTP_BROTLI
 #cmakedefine LWS_WITH_HTTP_PROXY
 #cmakedefine LWS_WITH_HTTP_STREAM_COMPRESSION
 #cmakedefine LWS_WITH_IPV6
-#cmakedefine LWS_WITH_JWE
-#cmakedefine LWS_WITH_JWS
+#cmakedefine LWS_WITH_JOSE
 #cmakedefine LWS_WITH_LEJP
 #cmakedefine LWS_WITH_LIBEV
 #cmakedefine LWS_WITH_LIBEVENT
diff --git a/doc-assets/lws-overview.png b/doc-assets/lws-overview.png
new file mode 100644
index 0000000000000000000000000000000000000000..7355cdfd1ac3d10f02532557a025004cdc31e8e5
GIT binary patch
literal 519276
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
U%G!6v3=9kmp00i_>zopr04|o02mk;8

literal 0
HcmV?d00001

diff --git a/doc-assets/lws-overview.svg b/doc-assets/lws-overview.svg
deleted file mode 100644
index 7f8e45bc..00000000
--- a/doc-assets/lws-overview.svg
+++ /dev/null
@@ -1,335 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg width="142.43mm" height="132.94mm" version="1.1" viewBox="0 0 142.42645 132.93726" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-	<defs>
-		<filter id="az" x="-.042506" y="-.041505" width="1.085" height="1.083" color-interpolation-filters="sRGB">
-			<feGaussianBlur stdDeviation="0.21922556"/>
-		</filter>
-		<filter id="ap" x="-.0444" y="-.0444" width="1.0888" height="1.0888" color-interpolation-filters="sRGB">
-			<feGaussianBlur stdDeviation="0.084531083"/>
-		</filter>
-		<filter id="ag" x="-.0444" y="-.0444" width="1.0888" height="1.0888" color-interpolation-filters="sRGB">
-			<feGaussianBlur stdDeviation="0.084531083"/>
-		</filter>
-		<filter id="ah" x="-.0444" y="-.0444" width="1.0888" height="1.0888" color-interpolation-filters="sRGB">
-			<feGaussianBlur stdDeviation="0.084531083"/>
-		</filter>
-		<filter id="ak" x="-.0444" y="-.0444" width="1.0888" height="1.0888" color-interpolation-filters="sRGB">
-			<feGaussianBlur stdDeviation="0.084531083"/>
-		</filter>
-		<filter id="ao" x="-.0444" y="-.0444" width="1.0888" height="1.0888" color-interpolation-filters="sRGB">
-			<feGaussianBlur stdDeviation="0.084531083"/>
-		</filter>
-		<filter id="al" x="-.0444" y="-.0444" width="1.0888" height="1.0888" color-interpolation-filters="sRGB">
-			<feGaussianBlur stdDeviation="0.084531083"/>
-		</filter>
-		<filter id="ai" x="-.0444" y="-.0444" width="1.0888" height="1.0888" color-interpolation-filters="sRGB">
-			<feGaussianBlur stdDeviation="0.084531083"/>
-		</filter>
-		<filter id="aj" x="-.0444" y="-.0444" width="1.0888" height="1.0888" color-interpolation-filters="sRGB">
-			<feGaussianBlur stdDeviation="0.084531083"/>
-		</filter>
-		<filter id="aq" x="-.0444" y="-.0444" width="1.0888" height="1.0888" color-interpolation-filters="sRGB">
-			<feGaussianBlur stdDeviation="0.084531083"/>
-		</filter>
-		<radialGradient id="c" cx="15.529" cy="71.842" r="31.048" gradientTransform="matrix(.87664 .41986 -.43219 .90238 62.364 -14.24)" gradientUnits="userSpaceOnUse">
-			<stop offset="0"/>
-			<stop stop-opacity=".99216" offset=".54286"/>
-			<stop stop-color="#fffafa" stop-opacity="0" offset="1"/>
-		</radialGradient>
-		<filter id="ax" x="-.03" y="-.03" width="1.06" height="1.06" color-interpolation-filters="sRGB">
-			<feGaussianBlur stdDeviation="0.60135641"/>
-		</filter>
-		<linearGradient id="af" x1="44.768" x2="11.092" y1="82.65" y2="55.121" gradientTransform="translate(15.635 -12.161)" gradientUnits="userSpaceOnUse">
-			<stop stop-color="#447821" offset="0"/>
-			<stop stop-color="#112b00" offset="1"/>
-		</linearGradient>
-		<filter id="ay" x="-.03" y="-.03" width="1.06" height="1.06" color-interpolation-filters="sRGB">
-			<feGaussianBlur stdDeviation="0.35814872"/>
-		</filter>
-		<linearGradient id="ae" x1="30.049" x2="15.969" y1="69.08" y2="55.473" gradientTransform="translate(15.635 -12.161)" gradientUnits="userSpaceOnUse">
-			<stop stop-color="#917c6f" offset="0"/>
-			<stop stop-color="#483e37" offset="1"/>
-		</linearGradient>
-		<filter id="aw" x="-.03" y="-.03" width="1.06" height="1.06" color-interpolation-filters="sRGB">
-			<feGaussianBlur stdDeviation="0.18156297"/>
-		</filter>
-		<linearGradient id="ad" x1="14.08" x2="22.206" y1="54.906" y2="62.088" gradientTransform="translate(15.635 -12.161)" gradientUnits="userSpaceOnUse">
-			<stop stop-color="#917c6f" offset="0"/>
-			<stop stop-color="#c8b7b7" offset="1"/>
-		</linearGradient>
-		<path id="h" d="m27.596 49.575c1.8633 3.3048 5.5925 4.7703 9.7554 3.1404" fill="none"/>
-		<filter id="av" x="-.0336" y="-.0336" width="1.0672" height="1.0672" color-interpolation-filters="sRGB">
-			<feGaussianBlur stdDeviation="0.063969468"/>
-		</filter>
-		<filter id="at" x="-.0312" y="-.0312" width="1.0624" height="1.0624" color-interpolation-filters="sRGB">
-			<feGaussianBlur stdDeviation="0.05940022"/>
-		</filter>
-		<filter id="au" x="-.0444" y="-.0444" width="1.0888" height="1.0888" color-interpolation-filters="sRGB">
-			<feGaussianBlur stdDeviation="0.084531083"/>
-		</filter>
-		<filter id="ar" x="-.0468" y="-.0468" width="1.0936" height="1.0936" color-interpolation-filters="sRGB">
-			<feGaussianBlur stdDeviation="0.089100331"/>
-		</filter>
-		<filter id="as" x="-.0444" y="-.0444" width="1.0888" height="1.0888" color-interpolation-filters="sRGB">
-			<feGaussianBlur stdDeviation="0.084531083"/>
-		</filter>
-		<path id="j" d="m59.668 35.811c3.8865 2.9737 3.4332 2.9031 6.7486 6.8822" fill="none"/>
-		<path id="i" d="m44.033 47.972c3.8865 2.9737 3.4332 2.9031 6.7486 6.8822" fill="none"/>
-		<path id="g" d="m26.88 58.809c5.249 5.4788 9.83 5.7421 15.639 4.5358" fill="none"/>
-		<path id="f" d="m28.723 73.22c5.1014 4.5559 13.146 7.2579 20.222 5.0554" fill="none"/>
-		<path id="e" d="m53.387 84.721c4.7064-0.87913 10.462-4.6776 13.831-9.7554" fill="none"/>
-		<path id="d" d="m12.328 58.62c0.62888 6.7681 3.7381 14.383 7.9375 18.899" fill="none"/>
-		<linearGradient id="ac" x1="32.039" x2="39.021" y1="52.549" y2="37.782" gradientTransform="translate(15.635 -12.161)" gradientUnits="userSpaceOnUse">
-			<stop stop-color="#2b2200" offset="0"/>
-			<stop stop-color="#bbe1da" offset="1"/>
-		</linearGradient>
-		<linearGradient id="v" x1="28.665" x2="32.34" y1="46.368" y2="51.914" gradientTransform="translate(15.635 -12.161)" gradientUnits="userSpaceOnUse">
-			<stop stop-color="#bbe1c4" offset="0"/>
-			<stop stop-opacity=".89669" offset="1"/>
-		</linearGradient>
-		<linearGradient id="w" x1="25.691" x2="35.647" y1="49.559" y2="49.559" gradientTransform="translate(15.635 -12.161)" gradientUnits="userSpaceOnUse">
-			<stop offset="0"/>
-			<stop stop-opacity="0" offset="1"/>
-		</linearGradient>
-		<linearGradient id="ab" x1="29.097" x2="33.556" y1="47.188" y2="49.894" gradientTransform="translate(15.635 -12.161)" gradientUnits="userSpaceOnUse">
-			<stop stop-color="#bbe119" offset="0"/>
-			<stop stop-color="#bbe1da" stop-opacity=".6281" offset="1"/>
-		</linearGradient>
-		<linearGradient id="x" x1="38.62" x2="34.645" y1="46.034" y2="42.693" gradientTransform="translate(15.635 -12.161)" gradientUnits="userSpaceOnUse">
-			<stop stop-color="#2b2242" offset="0"/>
-			<stop stop-color="#000106" offset="1"/>
-		</linearGradient>
-		<linearGradient id="u" x1="31.371" x2="35.714" y1="45.065" y2="47.47" gradientTransform="translate(15.635 -12.161)" gradientUnits="userSpaceOnUse">
-			<stop stop-color="#2b2200" offset="0"/>
-			<stop stop-color="#bbe1da" stop-opacity=".62397" offset="1"/>
-		</linearGradient>
-		<linearGradient id="t" x1="32.139" x2="38.554" y1="44.33" y2="46.067" gradientTransform="translate(15.635 -12.161)" gradientUnits="userSpaceOnUse">
-			<stop stop-color="#353939" offset="0"/>
-			<stop stop-opacity=".79339" offset="1"/>
-		</linearGradient>
-		<linearGradient id="aa" x1="33.141" x2="35.881" y1="44.664" y2="46.435" gradientTransform="translate(15.635 -12.161)" gradientUnits="userSpaceOnUse">
-			<stop stop-color="#e7ff00" offset="0"/>
-			<stop stop-color="#bbe1da" offset="1"/>
-		</linearGradient>
-		<linearGradient id="z" x1="36.75" x2="39.957" y1="41.29" y2="43.963" gradientTransform="translate(15.635 -12.161)" gradientUnits="userSpaceOnUse" xlink:href="#b"/>
-		<linearGradient id="b">
-			<stop stop-color="#e7ff00" offset="0"/>
-			<stop stop-color="#e7ff00" stop-opacity="0" offset="1"/>
-		</linearGradient>
-		<linearGradient id="y" x1="40.09" x2="43.164" y1="38.25" y2="39.853" gradientTransform="translate(15.635 -12.161)" gradientUnits="userSpaceOnUse" xlink:href="#b"/>
-		<linearGradient id="s" x1="32.707" x2="37.585" y1="43.862" y2="46.702" gradientTransform="translate(15.635 -12.161)" gradientUnits="userSpaceOnUse">
-			<stop stop-opacity=".54132" offset="0"/>
-			<stop stop-opacity="0" offset="1"/>
-		</linearGradient>
-		<linearGradient id="r" x1="28.644" x2="32.695" y1="46.307" y2="51.528" gradientTransform="translate(15.635 -12.161)" gradientUnits="userSpaceOnUse">
-			<stop stop-color="#02290d" stop-opacity=".8843" offset="0"/>
-			<stop stop-color="#bbe1da" stop-opacity="0" offset="1"/>
-		</linearGradient>
-		<linearGradient id="q" x1="-2.9766" x2="-1.5828" y1="51.764" y2="53.276" gradientTransform="translate(15.635 -12.161)" gradientUnits="userSpaceOnUse">
-			<stop stop-color="#aabfcc" stop-opacity=".43388" offset="0"/>
-			<stop stop-color="#e7e0e6" stop-opacity=".71488" offset="1"/>
-		</linearGradient>
-		<linearGradient id="p" x1=".70871" x2="-1.5119" y1="55.095" y2="53.394" gradientTransform="translate(15.635 -12.161)" gradientUnits="userSpaceOnUse">
-			<stop stop-color="#323536" stop-opacity=".34298" offset="0"/>
-			<stop stop-color="#c0ccd9" stop-opacity=".69421" offset="1"/>
-		</linearGradient>
-		<linearGradient id="o" x1=".66146" x2="6.2366" y1="56.678" y2="56.678" gradientTransform="translate(15.635 -12.161)" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
-		<linearGradient id="a">
-			<stop stop-color="#aabfcc" offset="0"/>
-			<stop stop-color="#aabfcc" stop-opacity="0" offset="1"/>
-		</linearGradient>
-		<linearGradient id="n" x1="4.394" x2="8.5517" y1="57.812" y2="57.812" gradientTransform="translate(15.635 -12.161)" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
-		<linearGradient id="m" x1="6.9453" x2="11.009" y1="58.969" y2="58.969" gradientTransform="translate(15.635 -12.161)" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
-		<path id="l" d="m73.299 43.027c2.6443 3.103 3.6647 8.9348 3.0736 13.029" fill="none"/>
-		<path id="k" d="m76.3 58.526c-0.31095 4.8023-1.1169 8.064-2.3623 11.717" fill="none"/>
-		<filter id="an" x="-.0444" y="-.0444" width="1.0888" height="1.0888" color-interpolation-filters="sRGB">
-			<feGaussianBlur stdDeviation="0.084531083"/>
-		</filter>
-		<filter id="am" x="-.0444" y="-.0444" width="1.0888" height="1.0888" color-interpolation-filters="sRGB">
-			<feGaussianBlur stdDeviation="0.084531083"/>
-		</filter>
-	</defs>
-	<g transform="translate(-9.7869 -105.7)">
-		<g transform="matrix(1.9303 0 0 1.9303 -.23762 69.525)">
-			<path d="m72.947 43.64-8.2352 3.8754 2.6226 8.2854 9.5785 0.51567 0.17683-6.5292-2.5391-6.0804z" filter="url(#az)"/>
-			<path d="m72.43 43.094-8.2352 3.8754 2.6226 8.2854 9.5785 0.51567 0.17683-6.5292-2.5391-6.0804z" fill="#c9c6e7"/>
-			<path d="m73.702 55.738 2.5041 2.5041" fill="none" stroke="#5956b4" stroke-width=".26458px"/>
-			<g fill="#2b1100">
-				<circle cx="16.036" cy="55.906" r="2.2846" filter="url(#ap)"/>
-				<circle cx="16.579" cy="50.051" r="2.2846" filter="url(#ag)"/>
-				<circle cx="41.051" cy="29.188" r="2.2846" filter="url(#ah)"/>
-				<circle cx="36.173" cy="30.123" r="2.2846" filter="url(#ak)"/>
-				<circle cx="31.496" cy="31.86" r="2.2846" filter="url(#ao)"/>
-				<circle cx="49.122" cy="84.961" r="2.2846" filter="url(#al)"/>
-				<circle cx="43.96" cy="85.126" r="2.2846" filter="url(#ai)"/>
-				<circle cx="38.916" cy="84.406" r="2.2846" filter="url(#aj)"/>
-				<circle cx="33.849" cy="83" r="2.2846" filter="url(#aq)"/>
-			</g>
-			<circle cx="44.031" cy="56.4" r="31.048" fill="url(#c)"/>
-			<circle cx="44.55" cy="57.439" r="24.054" fill="#280b0b" filter="url(#ax)" stroke="#18161a" stroke-width=".965"/>
-			<circle cx="43.966" cy="56.925" r="25.792" fill="none"/>
-			<g>
-				<circle cx="43.899" cy="56.792" r="24.054" fill="url(#af)" stroke="#339a5b" stroke-width=".465"/>
-				<circle cx="39.731" cy="52.384" r="14.326" fill="#280b0b" filter="url(#ay)"/>
-				<circle cx="39.637" cy="52.195" r="14.326" fill="#483737"/>
-				<circle cx="38.692" cy="51.722" r="14.326" fill="#6c5353"/>
-				<circle cx="37.512" cy="51.072" r="14.326" fill="url(#ae)"/>
-			</g>
-			<path d="m30.244 38.788c7.1148 3.3747 21.503 10.699 21.503 10.699s-0.53647-7.697-8.1364-11.415c-4.5108-1.9133-9.6351-1.7151-13.366 0.7167z" fill="#800000" fill-opacity=".28099"/>
-			<g>
-				<circle cx="35.668" cy="48.557" r="7.2625" fill="#280b0b" filter="url(#aw)"/>
-				<circle cx="35.574" cy="48.321" r="7.2625" fill="#916f6f"/>
-				<circle cx="34.629" cy="47.565" r="7.2625" fill="#ac9393"/>
-				<circle cx="33.613" cy="47.163" r="7.2625" fill="url(#ad)"/>
-			</g>
-			<path d="m30.736 75.701c6.8963 4.7405 18.012 5.4861 24.656-0.3341" fill="none"/>
-			<text fill="#1f241c" font-family="'Open Sans Condensed'" font-size="2.9858px" letter-spacing="0px" stroke-width=".37323" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><textPath xlink:href="#h"><tspan fill="#1f241c" font-family="'Open Sans Condensed'" stroke-width=".37323">struct lws</tspan></textPath></text>
-			<path d="m29.857 40.903c3.6364 1.7248 10.99 5.4681 10.99 5.4681s-0.2742-3.934-4.1586-5.8344c-2.3055-0.97792-4.9246-0.87659-6.8317 0.36631z" fill="#a00" fill-opacity=".4876"/>
-			<text transform="rotate(28.489)" x="50.696777" y="20.985275" fill="#ffffff" font-family="'Open Sans Condensed'" font-size="3.4176px" letter-spacing="0px" stroke-width=".42721" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><tspan x="50.696777" y="20.985275" fill="#ffffff" font-family="'Open Sans Condensed'" stroke-width=".42721">tls</tspan></text>
-			<text transform="rotate(28.489)" x="53.057144" y="17.30608" fill="#ffffff" fill-opacity=".5124" font-family="'Open Sans Condensed'" font-size="4.0055px" letter-spacing="0px" stroke-width=".50068" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><tspan x="53.057144" y="17.30608" fill="#ffffff" fill-opacity=".5124" font-family="'Open Sans Condensed'" stroke-width=".50068">tls ctx</tspan></text>
-			<g>
-				<circle cx="69.591" cy="45.368" r="2.2846" fill="#04a" filter="url(#av)"/>
-				<circle cx="71.316" cy="49.88" r="2.2846" fill="#04a" filter="url(#at)"/>
-				<circle cx="69.457" cy="45.266" r="2.2846" fill="#5f8dd3"/>
-				<text x="68.064011" y="45.808071" fill="#000000" font-family="'Open Sans Condensed'" font-size="1.63px" letter-spacing="0px" stroke-width=".20375" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><tspan x="68.064011" y="45.808071" fill="#ffffff" font-family="'Open Sans Condensed'" stroke-width=".20375">http1</tspan></text>
-				<circle cx="71.161" cy="49.776" r="2.2846" fill="#5f8dd3"/>
-				<text x="69.767853" y="50.318241" fill="#000000" font-family="'Open Sans Condensed'" font-size="1.63px" letter-spacing="0px" stroke-width=".20375" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><tspan x="69.767853" y="50.318241" fill="#ffffff" font-family="'Open Sans Condensed'" stroke-width=".20375">http2</tspan></text>
-				<circle cx="72.19" cy="54.652" r="2.2846" fill="#04a" filter="url(#au)"/>
-				<circle cx="72.029" cy="54.587" r="2.2846" fill="#5f8dd3"/>
-				<text x="71.179817" y="55.129093" fill="#000000" font-family="'Open Sans Condensed'" font-size="1.63px" letter-spacing="0px" stroke-width=".20375" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><tspan x="71.179817" y="55.129093" fill="#ffffff" font-family="'Open Sans Condensed'" stroke-width=".20375">ws</tspan></text>
-				<circle cx="71.198" cy="64.408" r="2.2846" fill="#04a" filter="url(#ar)"/>
-				<circle cx="72.119" cy="59.565" r="2.2846" fill="#04a" filter="url(#as)"/>
-				<circle cx="71.962" cy="59.464" r="2.2846" fill="#5f8dd3"/>
-				<text x="70.876762" y="59.983143" fill="#000000" font-family="'Open Sans Condensed'" font-size="1.63px" letter-spacing="0px" stroke-width=".20375" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><tspan x="70.876762" y="59.983143" fill="#ffffff" font-family="'Open Sans Condensed'" stroke-width=".20375">raw</tspan></text>
-				<circle cx="71.094" cy="64.275" r="2.2846" fill="#5f8dd3"/>
-				<text x="70.149879" y="64.746742" fill="#000000" font-family="'Open Sans Condensed'" font-size="1.63px" letter-spacing="0px" stroke-width=".20375" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><tspan x="70.149879" y="64.746742" fill="#ffffff" font-family="'Open Sans Condensed'" stroke-width=".20375">cgi</tspan></text>
-			</g>
-			<g fill="#08a">
-				<circle cx="69.774" cy="67.9" r=".40476"/>
-				<circle cx="69.323" cy="69.086" r=".40476"/>
-				<circle cx="68.755" cy="70.222" r=".40476"/>
-			</g>
-			<path d="m59.668 35.811c3.8865 2.9737 3.4332 2.9031 6.7486 6.8822" fill="none"/>
-			<g>
-				<text transform="translate(.4009 -.46772)" fill="#0055d4" font-family="'Open Sans Condensed'" font-size="3.4176px" letter-spacing="0px" stroke-width=".42721" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><textPath xlink:href="#j"><tspan fill="#0055d4" font-family="'Open Sans Condensed'" stroke-width=".42721">lws_role</tspan></textPath></text>
-				<text transform="rotate(-90 29.678 55.996)" x="-44.194904" y="-46.217644" fill="#008000" font-family="'Open Sans Condensed'" font-size="3.4176px" letter-spacing="0px" stroke-width=".42721" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><textPath xlink:href="#i">protocol</textPath></text>
-				<circle cx="31.337" cy="31.668" r="2.2846" fill="#008000"/>
-				<circle cx="37.217" cy="48.907" r="2.2846" fill="#5f8dd3" stroke="#000" stroke-width=".125"/>
-				<text transform="rotate(25.543)" x="53.502361" y="28.587774" fill="#000000" font-family="'Open Sans Condensed'" font-size="1.63px" letter-spacing="0px" stroke-width=".20375" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><tspan x="53.502361" y="28.587774" fill="#ffffff" font-family="'Open Sans Condensed'" stroke-width=".20375">role</tspan></text>
-				<circle cx="36.046" cy="29.894" r="2.2846" fill="#008000"/>
-				<circle cx="40.96" cy="28.902" r="2.2846" fill="#008000"/>
-			</g>
-			<g fill="#677821">
-				<circle transform="rotate(164.42)" cx="-37.837" cy="-40.708" r=".40476"/>
-				<circle transform="rotate(164.42)" cx="-36.564" cy="-40.198" r=".40476"/>
-				<circle transform="rotate(164.42)" cx="-35.294" cy="-39.801" r=".40476"/>
-			</g>
-			<path d="m27.596 49.575c1.8633 3.3048 5.5925 4.7703 9.7554 3.1404" fill="none"/>
-			<text fill="#ffeeaa" font-family="'Open Sans Condensed'" font-size="2.9858px" letter-spacing="0px" stroke-width=".37323" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><textPath xlink:href="#g"><tspan fill="#ffeeaa" font-family="'Open Sans Condensed'" stroke-width=".37323">struct lws_vhost</tspan></textPath></text>
-			<text fill="#fff6d5" font-family="'Open Sans Condensed'" font-size="2.9858px" letter-spacing="0px" stroke-width=".37323" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><textPath xlink:href="#f"><tspan fill="#fff6d5" font-family="'Open Sans Condensed'" stroke-width=".37323">struct lws_context</tspan></textPath></text>
-			<path d="m26.88 58.809c5.249 5.4788 9.83 5.7421 15.639 4.5358" fill="none"/>
-			<path d="m28.723 73.22c5.1014 4.5559 13.146 7.2579 20.222 5.0554" fill="none"/>
-			<circle cx="30.23" cy="45.491" r="2.2846" fill="#008000" stroke="#000" stroke-width=".125"/>
-			<text transform="rotate(25.543)" x="45.184494" y="28.32321" fill="#000000" font-family="'Open Sans Condensed'" font-size="1.1975px" letter-spacing="0px" stroke-width=".14968" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><tspan x="45.184494" y="28.32321" fill="#ffffff" font-family="'Open Sans Condensed'" stroke-width=".14968">protocol</tspan></text>
-			<g fill="#ff2a2a">
-				<circle cx="43.799" cy="84.872" r="2.2846"/>
-				<circle cx="48.977" cy="84.654" r="2.2846"/>
-				<circle cx="38.754" cy="84.187" r="2.2846"/>
-				<circle cx="33.743" cy="82.783" r="2.2846"/>
-			</g>
-			<text fill="#d40000" font-family="'Open Sans Condensed'" font-size="3.4176px" letter-spacing="0px" stroke-width="1.6146" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><textPath xlink:href="#e">event loops<tspan fill="#d40000" font-family="'Open Sans Condensed'"/></textPath></text>
-			<path d="m53.387 84.721c4.7064-0.87913 10.462-4.6776 13.831-9.7554" fill="none"/>
-			<g fill="#c83737">
-				<circle cx="30.034" cy="80.913" r=".40476"/>
-				<circle cx="28.798" cy="80.278" r=".40476"/>
-				<circle cx="27.629" cy="79.576" r=".40476"/>
-			</g>
-			<g fill="#000000" font-family="'Open Sans Condensed'" font-size="1.63px" letter-spacing="0px" stroke-width=".20375" word-spacing="0px">
-				<text x="32.110046" y="83.315392" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><tspan x="32.110046" y="83.315392" fill="#ffffff" font-family="'Open Sans Condensed'" stroke-width=".20375">event</tspan></text>
-				<text x="37.968678" y="84.685555" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><tspan x="37.968678" y="84.685555" fill="#ffffff" font-family="'Open Sans Condensed'" stroke-width=".20375">uv</tspan></text>
-				<text x="47.890556" y="85.158028" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><tspan x="47.890556" y="85.158028" fill="#ffffff" font-family="'Open Sans Condensed'" stroke-width=".20375">poll</tspan></text>
-				<text x="43.118603" y="85.299767" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><tspan x="43.118603" y="85.299767" fill="#ffffff" font-family="'Open Sans Condensed'" stroke-width=".20375">ev</tspan></text>
-			</g>
-			<text transform="translate(2.3624 1.4174)" fill="#483e37" font-family="'Open Sans Condensed'" font-size="3.4176px" letter-spacing="0px" stroke-width=".42721" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><textPath xlink:href="#d">TLS backend</textPath></text>
-			<path d="m12.328 58.62c0.62888 6.7681 3.7381 14.383 7.9375 18.899" fill="none"/>
-			<g>
-				<circle cx="15.919" cy="55.691" r="2.2846" fill="#483e37"/>
-				<circle cx="16.486" cy="49.833" r="2.2846" fill="#483e37"/>
-				<text x="16.4466" y="49.484085" fill="#ffffff" font-family="'Open Sans Condensed'" font-size="1.63px" letter-spacing="0px" stroke-width=".20375" text-align="center" text-anchor="middle" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1" xml:space="preserve"><tspan x="16.4466" y="49.484085" text-align="center" style="line-height:1">open</tspan><tspan x="16.4466" y="51.114063" text-align="center" style="line-height:1">SSL</tspan></text>
-				<text x="15.812221" y="55.505154" fill="#ffffff" font-family="'Open Sans Condensed'" font-size="1.63px" letter-spacing="0px" stroke-width=".20375" text-align="center" text-anchor="middle" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1" xml:space="preserve"><tspan x="15.812221" y="55.505154" text-align="center" style="line-height:1">mbed</tspan><tspan x="15.812221" y="57.135132" text-align="center" style="line-height:1">TLS</tspan></text>
-			</g>
-			<path d="m50.315 42.462 2.1734-4.0632 0.85045-3.1183-0.56697-0.47247-3.0238 1.9844-1.8899 3.7798 1.6064 1.0394z" fill-opacity=".30579"/>
-			<g>
-				<path d="m41.314 37.17 2.6695-3.4018 2.5513-1.6064 2.2679-0.75595 1.5119-1.0394 4.3467-5.3862 2.9448 0.95507-0.16022 1.3153 1.6653-0.82716 2.5426 0.82464-4.2522 5.6696-1.6064 0.94494-2.5513 1.0394-1.8899 1.5119-1.0394 1.4174-2.3624 3.3073-0.76182-0.73407-0.93907-0.77783-1.2258-0.81128-1.3255-0.70062-1.1593-0.52777z" fill="url(#ac)" stroke="#000" stroke-width=".26458px"/>
-				<path d="m51.282 36.412-3.2406 4.744-1.0023-0.86863-1.2027-1.0023-0.90204-0.60136-1.3363-0.66817-1.0357-0.4009-1.2361-0.4009 2.7729-3.5747z" fill="url(#v)" stroke="url(#w)" stroke-width=".26458px"/>
-				<path d="m44.133 38.216-0.06682-4.1761 1.9377 0.96885-0.3675 3.1738 2.6393-2.205 2.1382 1.1693-4.2429 2.205-0.83522-0.50113z" fill="url(#ab)"/>
-				<path d="m50.347 30.298 6.9824 2.6059-1.7373 1.0691-6.8822-2.6059z" fill="url(#x)"/>
-				<path d="m53.354 34.842-2.1047 1.637-7.1495-2.8731 2.5057-1.47z" fill="url(#u)"/>
-				<path d="m55.625 33.907-6.7151-2.5057-2.372 0.7684 6.782 2.7395z" fill="url(#t)"/>
-				<path d="m47.808 34.875 0.03341-1.9377 0.60136-1.3363 1.8709 0.80181-0.66817 0.93544-0.13363 0.83522 0.96885-0.3675 1.1693-0.70158 2.7395 1.1693-2.372 0.50113-2.4388 0.26727z" fill="url(#aa)"/>
-				<path d="m54.657 24.92 3.0902 1.0442-0.13775 1.1403 1.2343-0.76322 2.8624 0.98418-4.3097 5.5792-7.0492-2.5391z"/>
-				<path d="m51.984 31.367-0.16704-0.50113 0.3675-2.6059 2.0045 0.73499-0.56795 1.9377 3.0402-1.2361 2.2384 0.66817-3.7084 1.7373z" fill="url(#z)"/>
-				<path d="m56.026 28.294-0.86862-3.0068 2.1716 0.66817-0.13364 1.637 1.8375-1.0023 2.205 0.66817-5.2118 1.2027z" fill="url(#y)"/>
-				<path d="m46.572 32.136 6.9156 2.7395 2.205-0.83522-6.8154-2.7061z" fill="url(#s)"/>
-				<path d="m44.066 33.65-2.7758 3.5435 1.2048 0.38979 1.2166 0.53153 0.76776 0.48428 1.2048 0.59059 0.81501 0.57878 0.75595 0.73233 0.74414 0.67327 3.2837-4.5711-2.6104-1.1576-2.764-1.0158z" fill="url(#r)"/>
-				<text transform="rotate(18.076)" x="63.807125" y="1.2534895" fill="#000000" font-family="'Open Sans Condensed'" font-size="2.1167px" letter-spacing="0px" stroke-width=".26458" text-align="center" text-anchor="middle" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1" xml:space="preserve"><tspan x="63.807125" y="1.2534895" text-align="center" style="line-height:1">tcp, udp,</tspan><tspan x="63.807125" y="3.370156" text-align="center" style="line-height:1">unix listen</tspan><tspan x="63.807125" y="5.4868226" text-align="center" style="line-height:1">socket(s)</tspan></text>
-			</g>
-			<g stroke="#000" stroke-width=".26458px">
-				<path d="m26.66 45.165-2.7395-0.46772-1.9377-1.2695-3.5413-1.0691-3.0946-2.2914-3.0526-0.71542 0.53454 3.2072 3.2741 2.8063 3.8754 1.1359 2.94 1.6036 3.5413 0.80181-0.06682-1.9377z" fill="#2b2200"/>
-				<path d="m26.526 45.8-1.6036 0.63476 1.5368 1.4366v-1.2027z" fill="#a80"/>
-				<path d="m23.987 44.831-1.7373-0.45102-2.2718 0.21716 0.70158 0.50113 2.0045 2.7061 1.6203 0.48443-1.6537-2.4221 2.9734-0.75169z" fill="#d4aa00"/>
-				<path d="m20.012 42.994-2.372-0.23386-1.8041-0.30068 0.56795 2.1716 2.0045 1.3029 1.3698 0.53454-1.9711-2.6393 4.0759-0.50113-1.7038-0.33409z" fill="#fc0"/>
-				<path d="m15.168 44.497-0.63476-3.1738 3.3075 0.56795-1.6661-1.2581-3.2784-0.67964 0.93544 3.5079z" fill="#ffe680"/>
-			</g>
-			<g>
-				<path d="m12.709 42.576 2.7122-2.5652-3.2569-0.78101z" fill="url(#q)"/>
-				<path d="m15.399 40.005-2.6931 2.5513 3.5908 3.0238 2.3151-3.3073z" fill="url(#p)"/>
-				<path d="m18.659 42.368 3.2128 0.99219-1.8426 3.3073-3.7325-1.3229z" fill="url(#o)"/>
-				<path d="m21.825 43.36 2.3624 1.3702-1.5592 3.2128-2.5986-1.3702z" fill="url(#n)"/>
-				<path d="m24.281 44.635 2.3624 0.61421-0.10564 0.6713-0.08335 0.60437-0.01957 0.9022-0.09187 1.0537 0.15869 0.50099-3.9215-0.99219z" fill="url(#m)"/>
-				<text transform="rotate(-48.141)" x="-21.20005" y="30.030567" fill="#000000" font-family="'Open Sans Condensed'" font-size="2.1167px" letter-spacing="0px" stroke-width=".26458" text-align="center" text-anchor="middle" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1" xml:space="preserve"><tspan x="-21.20005" y="30.030567" text-align="center" style="line-height:1">tcp, udp,</tspan><tspan x="-21.20005" y="32.147232" text-align="center" style="line-height:1">http1,h2, ws</tspan><tspan x="-21.20005" y="34.263901" text-align="center" style="line-height:1">tls client(s)</tspan></text>
-				<path d="m72.143 42.462 1.5119 2.7403 0.88562 2.0172 0.68164 2.1911 0.37274 2.0367 0.13887 1.787-0.0945 3.0711 3.3383 0.20855-0.05374-1.0854 0.05612-1.2574-0.03536-2.4677-0.32879-2.8159-0.67926-2.5875-1.3051-2.9876-1.6789-2.5051z" fill="#e7e0e6"/>
-			</g>
-			<g fill="#050">
-				<circle cx="31.304" cy="31.668" r="1.6499"/>
-				<circle cx="36.048" cy="29.864" r="1.6499"/>
-				<circle cx="40.959" cy="28.862" r="1.6499"/>
-			</g>
-			<text transform="rotate(33.374)" x="71.540237" y="5.0364399" fill="#ffffff" font-family="'Open Sans Condensed'" font-size="3.2488px" letter-spacing="0px" stroke-width=".40609" text-align="center" text-anchor="middle" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1" xml:space="preserve"><tspan x="71.540237" y="5.0364399" text-align="center" style="line-height:1">ALPN</tspan><tspan x="71.540237" y="8.2851915" text-align="center" style="line-height:1">SNI</tspan></text>
-			<text transform="translate(.26727 .46772)" fill="#000000" font-family="'Open Sans Condensed'" font-size="2.417px" letter-spacing="0px" stroke-width=".30212" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><textPath xlink:href="#l"><tspan font-family="'Open Sans Condensed'" stroke-width=".30212">ah http headers</tspan></textPath></text>
-			<path d="m73.299 43.027c2.6443 3.103 3.6647 8.9348 3.0736 13.029" fill="none"/>
-			<g>
-				<circle cx="55.247" cy="64.799" r="7.6227" fill="#4b4046"/>
-				<circle cx="55.035" cy="63.845" r="7.6227" fill="#6f5b55"/>
-				<circle cx="54.369" cy="63.049" r="7.6227" fill="#ac9393"/>
-				<g font-family="'Open Sans Condensed'" letter-spacing="0px" text-anchor="middle" word-spacing="0px">
-					<text transform="rotate(26.555)" x="76.934166" y="31.127186" fill="#000000" font-size="2.5688px" stroke-width=".3211" text-align="center" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1" xml:space="preserve"><tspan x="76.934166" y="31.127186" font-family="'Open Sans Condensed'" stroke-width=".3211" text-align="center" text-anchor="middle" style="line-height:1">event loop</tspan></text>
-					<text transform="rotate(29.003)" x="75.430794" y="40.665337" fill="#cccccc" font-size="2.5688px" stroke-width=".3211" text-align="center" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1" xml:space="preserve"><tspan x="75.430794" y="40.665337" text-align="center" style="line-height:1">peer tracking</tspan><tspan x="75.430794" y="43.234123" text-align="center" style="line-height:1">basic auth</tspan></text>
-					<text transform="rotate(38.032)" x="61.58363" y="36.673119" fill="#cccccc" font-size="2.4588px" stroke-width=".30735" text-align="center" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1" xml:space="preserve"><tspan x="61.58363" y="36.673119" fill="#cccccc" font-family="'Open Sans Condensed'" stroke-width=".30735" text-align="center" text-anchor="middle" style="line-height:1">logging</tspan></text>
-				</g>
-			</g>
-			<path d="m76.3 58.526c-0.31095 4.8023-1.1169 8.064-2.3623 11.717" fill="none"/>
-			<g>
-				<text fill="#000000" font-family="'Open Sans Condensed'" font-size="2.2084px" letter-spacing="0px" stroke-width=".27605" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><textPath xlink:href="#k"><tspan font-family="'Open Sans Condensed'" stroke-width=".27605">ws ext: pm-def</tspan></textPath></text>
-				<circle cx="32.072" cy="26.49" r="2.2846" fill="#2b1100" filter="url(#an)"/>
-				<circle cx="31.914" cy="26.298" r="2.2846" fill="#008000"/>
-				<circle cx="31.88" cy="26.298" r="1.6499" fill="#050"/>
-				<circle cx="37.618" cy="24.986" r="2.2846" fill="#2b1100" filter="url(#am)"/>
-				<circle cx="37.459" cy="24.794" r="2.2846" fill="#008000"/>
-				<circle cx="37.426" cy="24.794" r="1.6499" fill="#050"/>
-				<g font-family="'Open Sans Condensed'" letter-spacing="0px" text-anchor="middle" word-spacing="0px">
-					<text transform="rotate(-21.452)" x="20.092173" y="36.830799" fill="#ffffff" font-size="2.1167px" stroke-width=".26458" text-align="center" style="font-feature-settings:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><tspan x="20.092173" y="36.830799" fill="#ffffff" font-family="'Open Sans Condensed'" stroke-width=".26458">ssh</tspan></text>
-					<text transform="rotate(-15.946)" x="29.145987" y="34.664425" fill="#ffffff" font-size="1.6275px" stroke-width=".20343" text-align="center" style="font-feature-settings:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1.25" xml:space="preserve"><tspan x="29.145987" y="34.664425" fill="#ffffff" font-family="'Open Sans Condensed'" stroke-width=".20343">ACME</tspan></text>
-					<text transform="rotate(32.893)" x="79.83622" y="9.3089314" fill="#cccccc" font-size="2.5688px" stroke-width=".3211" text-align="center" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1" xml:space="preserve"><tspan x="79.83622" y="9.3089314" text-align="center" style="line-height:1">lws_ring</tspan><tspan x="79.83622" y="11.877718" text-align="center" style="line-height:1">VFS</tspan><tspan x="79.83622" y="14.446506" text-align="center" style="line-height:1">zip_fops</tspan></text>
-				</g>
-			</g>
-			<path d="m60.073 68.304c-5.1565-2.4458-13.364-6.5727-13.364-6.5727s-1.1231 5.484 4.385 8.1788c3.2693 1.3867 5.991 0.86504 8.9787-1.6061z" fill="#06f" fill-opacity=".4876"/>
-			<text transform="rotate(26.859)" x="77.195198" y="36.191971" fill="#e9ddaf" font-family="'Open Sans Condensed'" font-size="1.8247px" letter-spacing="0px" stroke-width=".22809" text-align="center" text-anchor="middle" word-spacing="0px" style="font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;line-height:1" xml:space="preserve"><tspan x="77.195198" y="36.191971" fill="#e9ddaf" font-family="'Open Sans Condensed'" stroke-width=".22809" text-align="center" text-anchor="middle" style="line-height:1">service thread(s)</tspan></text>
-			<g transform="matrix(2.4352 0 0 2.4352 154.23 -92.854)">
-				<path d="m-53.889 51.059c-0.2293-0.20876-0.45859-0.41752-0.68788-0.62628h-2.0842c-0.41073-0.4478-0.80598-0.91066-1.2269-1.3486-0.15635-0.18661-0.4411-0.26749-0.65538-0.13157-0.2532 0.13273-0.37597 0.41669-0.39448 0.69074-0.04758 0.31909 0.05354 0.68674 0.35175 0.85254 0.18832 0.10808 0.49386 0.04671 0.5437-0.19062 0.06699-0.21357-0.06488-0.51518-0.31343-0.50948-0.16072 3e-3 -0.26391 0.28316-0.07717 0.33226 0.08893 0.01617 0.10978-0.27326 0.17002-0.07939 0.0638 0.17507-0.16528 0.31938-0.28293 0.16402-0.213-0.21052-0.14192-0.60391 0.10406-0.75718 0.23529-0.07437 0.39199 0.16171 0.52824 0.31112 0.3873 0.42849 0.77336 0.85822 1.1601 1.2873 0.95481 0.0017 1.9097 0.0034 2.8645 0.0051z"/>
-				<path d="m-56.225 50.077c0.07138-0.08712 0.14278-0.17424 0.21416-0.26135 0.10648 0.11858 0.21295 0.23715 0.31943 0.35573 0.19118 0.0012 0.38235 0.0025 0.57352 0.0036-0.2069-0.22868-0.41381-0.45737-0.62072-0.68605 0.10043-0.11374 0.20086-0.22747 0.30128-0.34121 0.19601 0.22868 0.39203 0.45737 0.58804 0.68605-0.0012-0.219-0.0025-0.43801-0.0036-0.65701-0.10043-0.11252-0.20085-0.22505-0.30128-0.33758 0.07198-0.10615 0.24907-0.21551 0.08668-0.31451-0.36406-0.40214-0.72811-0.80428-1.0922-1.2064-0.76543-0.0026-1.5317 0.01021-2.2966-0.0021-0.1821-0.01604-0.40898-0.07372-0.45071-0.28286-0.088-0.27195 0.21101-0.59285 0.48564-0.46528 0.18982 0.03674 0.11004 0.42003-0.05779 0.29297 0.17429-0.25602-0.31955-0.22697-0.17976 0.02451 0.09575 0.22004 0.44485 0.25635 0.58255 0.05617 0.14323-0.2308-0.05154-0.4937-0.2705-0.58497-0.21915-0.10466-0.49117-0.07771-0.67434 0.08567-0.27378 0.20864-0.40621 0.61643-0.22752 0.92795 0.104 0.233 0.33446 0.38219 0.58455 0.41121 0.33507 0.04187 0.67431 0.01608 1.0114 0.02326h1.3407c0.25409 0.28192 0.50818 0.56384 0.76228 0.84577-0.22868 0.25288-0.45736 0.50576-0.68605 0.75865-0.16572-0.21381-0.41577-0.37628-0.51666-0.63121-0.08161-0.29871 0.35413-0.53156 0.5618-0.30555 0.19943 0.11035-0.01178 0.46291-0.15577 0.26978 0.1166-0.03951 0.16904-0.22582-0.01437-0.21638-0.21499 0.08183-0.12303 0.40655 0.0643 0.46926 0.17871 0.08651 0.40261-0.07556 0.3799-0.27118 0.01826-0.28278-0.18842-0.5907-0.48713-0.60388-0.31967-0.06227-0.68039 0.12472-0.75854 0.45263-0.10766 0.28228 0.06955 0.56541 0.26324 0.75966 0.22723 0.24585 0.44911 0.49691 0.67408 0.74475z" fill="#f00"/>
-				<path d="m-54.464 50.361c0.0017-0.54757 0.0034-1.0951 0.0051-1.6427-0.33832-0.38748-0.69457-0.75998-1.021-1.1574-0.10913-0.13496-0.19252-0.29467-0.18614-0.47289-0.0086-0.33136 0.19731-0.65612 0.50556-0.78212 0.23741-0.10513 0.52154-0.11525 0.754 0.0094 0.3243 0.16516 0.47791 0.61109 0.30157 0.93353-0.13519 0.19951-0.48216 0.19542-0.59404-0.0265-0.1079-0.14135-0.10151-0.43084 0.10373-0.47103 0.16696-0.0034 0.20764 0.24106 0.02397 0.25083-0.04085 0.15882 0.28306 0.12232 0.27255-0.04546 0.04138-0.23154-0.21514-0.42013-0.4314-0.37653-0.24357 0.02414-0.45758 0.28096-0.37332 0.52553 0.08871 0.24037 0.30285 0.40102 0.46218 0.59282 0.25613 0.27896 0.51148 0.55865 0.76757 0.83766-0.0017 0.61002-0.0034 1.22-0.0051 1.8301-0.19509-0.0017-0.3902-0.0035-0.58527-0.0051z"/>
-			</g>
-		</g>
-	</g>
-</svg>
diff --git a/include/libwebsockets.h b/include/libwebsockets.h
index 78491a76..e5f23469 100644
--- a/include/libwebsockets.h
+++ b/include/libwebsockets.h
@@ -367,6 +367,9 @@ typedef unsigned long long lws_filepos_t;
 typedef long long lws_fileofs_t;
 typedef uint32_t lws_fop_flags_t;
 
+#define lws_concat_temp(_t, _l) (_t + sizeof(_t) - _l)
+#define lws_concat_used(_t, _l) (sizeof(_t) - _l)
+
 /** struct lws_pollargs - argument structure for all external poll related calls
  * passed in via 'in' */
 struct lws_pollargs {
@@ -427,8 +430,8 @@ struct lws;
 #include <libwebsockets/lws-genaes.h>
 #include <libwebsockets/lws-genec.h>
 
-#include <libwebsockets/lws-jose.h>
 #include <libwebsockets/lws-jwk.h>
+#include <libwebsockets/lws-jose.h>
 #include <libwebsockets/lws-jws.h>
 #include <libwebsockets/lws-jwe.h>
 
diff --git a/include/libwebsockets/lws-genaes.h b/include/libwebsockets/lws-genaes.h
index 1e7c3cdc..aecb68d3 100644
--- a/include/libwebsockets/lws-genaes.h
+++ b/include/libwebsockets/lws-genaes.h
@@ -46,6 +46,7 @@ enum enum_aes_modes {
 	LWS_GAESM_OFB,
 	LWS_GAESM_XTS,		/* care... requires double-length key */
 	LWS_GAESM_GCM,
+	LWS_GAESM_KW,
 };
 
 enum enum_aes_operation {
@@ -53,6 +54,11 @@ enum enum_aes_operation {
 	LWS_GAESO_DEC
 };
 
+enum enum_aes_padding {
+	LWS_GAESP_NO_PADDING,
+	LWS_GAESP_WITH_PADDING
+};
+
 /* include/libwebsockets/lws-jwk.h must be included before this */
 
 #define LWS_AES_BLOCKSIZE 128
@@ -99,7 +105,7 @@ struct lws_genaes_ctx {
 LWS_VISIBLE LWS_EXTERN int
 lws_genaes_create(struct lws_genaes_ctx *ctx, enum enum_aes_operation op,
 		  enum enum_aes_modes mode, struct lws_gencrypto_keyelem *el,
-		  int padding, void *engine);
+		  enum enum_aes_padding padding, void *engine);
 
 /** lws_genaes_destroy() - Destroy genaes AES context
  *
@@ -119,21 +125,22 @@ lws_genaes_destroy(struct lws_genaes_ctx *ctx, unsigned char *tag, size_t tlen);
 /** lws_genaes_crypt() - Encrypt or decrypt
  *
  * \param ctx: your struct lws_genaes_ctx
+ * \param in: input plaintext or ciphertext
+ * \param len: length of input (which is always length of output)
+ * \param out: output plaintext or ciphertext
  * \param op: LWS_GAESO_ENC or LWS_GAESO_DEC
  * \param iv_or_nonce_ctr_or_data_unit_16: NULL, iv, nonce_ctr16, or data_unit16
  * \param stream_block_16: pointer to 16-byte stream block for CTR mode only
  * \param nc_or_iv_off: NULL or pointer to nc, or iv_off
- * \param in: input plaintext or ciphertext
- * \param len: length of input (which is always length of output)
- * \param out: output plaintext or ciphertext
+ * \param taglen: length of tag
  *
  * Encrypts or decrypts using the AES mode set when the ctx was created.
  * The last three arguments have different meanings depending on the mode:
  *
- * 				     CBC  CFB128 CFB8 CTR    ECB  OFB    XTS
- * iv_or_nonce_ctr_or_data_unit_16 : iv   iv     iv   nonce  NULL iv     dataunt
- * stream_block_16		   : NULL NULL   NULL stream NULL NULL   NULL
- * nc_or_iv_off			   : NULL iv_off NULL nc_off NULL iv_off NULL
+ * 			      KW   CBC  CFB128 CFB8 CTR    ECB  OFB    XTS
+ * iv_or_nonce_ct.._unit_16 : iv   iv   iv     iv   nonce  NULL iv     dataunt
+ * stream_block_16	    : NULL NULL NULL   NULL stream NULL NULL   NULL
+ * nc_or_iv_off		    : NULL NULL iv_off NULL nc_off NULL iv_off NULL
  *
  * For GCM:
  *
diff --git a/include/libwebsockets/lws-gencrypto.h b/include/libwebsockets/lws-gencrypto.h
index ab47ca15..7a0b4d2a 100644
--- a/include/libwebsockets/lws-gencrypto.h
+++ b/include/libwebsockets/lws-gencrypto.h
@@ -27,12 +27,12 @@
  * no dependency at all on any JOSE type.
  */
 
-enum lws_gencrypto_kyt {
-	LWS_GENCRYPTO_KYT_UNKNOWN,
+enum lws_gencrypto_kty {
+	LWS_GENCRYPTO_KTY_UNKNOWN,
 
-	LWS_GENCRYPTO_KYT_OCT,
-	LWS_GENCRYPTO_KYT_RSA,
-	LWS_GENCRYPTO_KYT_EC
+	LWS_GENCRYPTO_KTY_OCT,
+	LWS_GENCRYPTO_KTY_RSA,
+	LWS_GENCRYPTO_KTY_EC
 };
 
 /*
@@ -92,3 +92,26 @@ struct lws_gencrypto_keyelem {
 	uint8_t *buf;
 	uint16_t len;
 };
+
+
+/**
+ * lws_gencrypto_bits_to_bytes() - returns rounded up bytes needed for bits
+ *
+ * \param bits
+ *
+ * Returns the number of bytes needed to store the given number of bits.  If
+ * a byte is partially used, the byte count is rounded up.
+ */
+LWS_VISIBLE LWS_EXTERN int
+lws_gencrypto_bits_to_bytes(int bits);
+
+/**
+ * lws_base64_size() - returns estimated size of base64 encoding
+ *
+ * \param bytes
+ *
+ * Returns a slightly oversize estimate of the size of a base64 encoded version
+ * of the given amount of unencoded data.
+ */
+LWS_VISIBLE LWS_EXTERN int
+lws_base64_size(int bytes);
diff --git a/include/libwebsockets/lws-genec.h b/include/libwebsockets/lws-genec.h
index cd4fb0ac..75e9243e 100644
--- a/include/libwebsockets/lws-genec.h
+++ b/include/libwebsockets/lws-genec.h
@@ -143,11 +143,12 @@ LWS_VISIBLE LWS_EXTERN int
 lws_genecdsa_set_key(struct lws_genec_ctx *ctx,
 		     struct lws_gencrypto_keyelem *el);
 
-/** lws_genecdsa_hash_sig_verify() - Verifies ECDSA signature on a given hash
+/** lws_genecdsa_hash_sig_verify_jws() - Verifies a JWS ECDSA signature on a given hash
  *
  * \param ctx: your struct lws_genrsa_ctx
  * \param in: unencrypted payload (usually a recomputed hash)
  * \param hash_type: one of LWS_GENHASH_TYPE_
+ * \param keybits: number of bits in the crypto key
  * \param sig: pointer to the signature we received with the payload
  * \param sig_len: length of the signature we are checking in bytes
  *
@@ -158,31 +159,38 @@ lws_genecdsa_set_key(struct lws_genec_ctx *ctx,
  *
  * Returns <0 for error, or 0 if signature matches the hash + key..
  *
+ * The JWS ECDSA signature verification algorithm differs to generic ECDSA
+ * signatures and they're not interoperable.
+ *
  * This and related APIs operate identically with OpenSSL or mbedTLS backends.
  */
 LWS_VISIBLE LWS_EXTERN int
-lws_genecdsa_hash_sig_verify(struct lws_genec_ctx *ctx, const uint8_t *in,
-			   enum lws_genhash_types hash_type,
-			   const uint8_t *sig, size_t sig_len);
+lws_genecdsa_hash_sig_verify_jws(struct lws_genec_ctx *ctx, const uint8_t *in,
+				 enum lws_genhash_types hash_type, int keybits,
+				 const uint8_t *sig, size_t sig_len);
 
-/** lws_genecdsa_hash_sign() - Creates an ECDSA signature for a hash you provide
+/** lws_genecdsa_hash_sign_jws() - Creates a JWS ECDSA signature for a hash you provide
  *
  * \param ctx: your struct lws_genrsa_ctx
  * \param in: precomputed hash
  * \param hash_type: one of LWS_GENHASH_TYPE_
+ * \param keybits: number of bits in the crypto key
  * \param sig: pointer to buffer to take signature
  * \param sig_len: length of the buffer (must be >= length of key N)
  *
  * Returns <0 for error, or 0 for success.
  *
- * This creates an ECDSA signature for a hash you already computed and provide.
+ * This creates a JWS ECDSA signature for a hash you already computed and provide.
+ *
+ * The JWS ECDSA signature generation algorithm differs to generic ECDSA
+ * signatures and they're not interoperable.
  *
  * This and related APIs operate identically with OpenSSL or mbedTLS backends.
  */
 LWS_VISIBLE LWS_EXTERN int
-lws_genecdsa_hash_sign(struct lws_genec_ctx *ctx, const uint8_t *in,
-		       enum lws_genhash_types hash_type, uint8_t *sig,
-		       size_t sig_len);
+lws_genecdsa_hash_sign_jws(struct lws_genec_ctx *ctx, const uint8_t *in,
+			   enum lws_genhash_types hash_type, int keybits,
+			   uint8_t *sig, size_t sig_len);
 
 
 /* Apis that apply to both ECDH and ECDSA */
diff --git a/include/libwebsockets/lws-genrsa.h b/include/libwebsockets/lws-genrsa.h
index 0f233791..24343939 100644
--- a/include/libwebsockets/lws-genrsa.h
+++ b/include/libwebsockets/lws-genrsa.h
@@ -53,26 +53,14 @@ struct lws_genrsa_ctx {
 	enum enum_genrsa_mode mode;
 };
 
-/** lws_genrsa_destroy_elements() - Free allocations in genrsa_elements
- *
- * \param el: your struct lws_gencrypto_keyelem
- *
- * This is a helper for user code making use of struct lws_gencrypto_keyelem
- * where the elements are allocated on the heap, it frees any non-NULL
- * buf element and sets the buf to NULL.
- *
- * NB: lws_genrsa_public_... apis do not need this as they take care of the key
- * creation and destruction themselves.
- */
-LWS_VISIBLE LWS_EXTERN void
-lws_genrsa_destroy_elements(struct lws_gencrypto_keyelem *el);
-
 /** lws_genrsa_public_decrypt_create() - Create RSA public decrypt context
  *
  * \param ctx: your struct lws_genrsa_ctx
  * \param el: struct prepared with key element data
  * \param context: lws_context for RNG
  * \param mode: RSA mode, one of LGRSAM_ constants
+ * \param oaep_hashid: the lws genhash id for the hash used in MFG1 hash
+ *			used in OAEP mode - normally, SHA1
  *
  * Creates an RSA context with a public key associated with it, formed from
  * the key elements in \p el.
@@ -86,7 +74,22 @@ lws_genrsa_destroy_elements(struct lws_gencrypto_keyelem *el);
  */
 LWS_VISIBLE LWS_EXTERN int
 lws_genrsa_create(struct lws_genrsa_ctx *ctx, struct lws_gencrypto_keyelem *el,
-		  struct lws_context *context, enum enum_genrsa_mode mode);
+		  struct lws_context *context, enum enum_genrsa_mode mode,
+		  enum lws_genhash_types oaep_hashid);
+
+/** lws_genrsa_destroy_elements() - Free allocations in genrsa_elements
+ *
+ * \param el: your struct lws_gencrypto_keyelem
+ *
+ * This is a helper for user code making use of struct lws_gencrypto_keyelem
+ * where the elements are allocated on the heap, it frees any non-NULL
+ * buf element and sets the buf to NULL.
+ *
+ * NB: lws_genrsa_public_... apis do not need this as they take care of the key
+ * creation and destruction themselves.
+ */
+LWS_VISIBLE LWS_EXTERN void
+lws_genrsa_destroy_elements(struct lws_gencrypto_keyelem *el);
 
 /** lws_genrsa_new_keypair() - Create new RSA keypair
  *
@@ -111,7 +114,7 @@ lws_genrsa_new_keypair(struct lws_context *context, struct lws_genrsa_ctx *ctx,
 		       enum enum_genrsa_mode mode, struct lws_gencrypto_keyelem *el,
 		       int bits);
 
-/** lws_genrsa_public_encrypt() - Perform RSA public encryption
+/** lws_genrsa_public_encrypt() - Perform RSA public key encryption
  *
  * \param ctx: your struct lws_genrsa_ctx
  * \param in: plaintext input
@@ -128,7 +131,24 @@ LWS_VISIBLE LWS_EXTERN int
 lws_genrsa_public_encrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in,
 			  size_t in_len, uint8_t *out);
 
-/** lws_genrsa_public_decrypt() - Perform RSA public decryption
+/** lws_genrsa_private_encrypt() - Perform RSA private key encryption
+ *
+ * \param ctx: your struct lws_genrsa_ctx
+ * \param in: plaintext input
+ * \param in_len: length of plaintext input
+ * \param out: encrypted output
+ *
+ * Performs PKCS1 v1.5 Encryption
+ *
+ * Returns <0 for error, or length of decrypted data.
+ *
+ * This and related APIs operate identically with OpenSSL or mbedTLS backends.
+ */
+LWS_VISIBLE LWS_EXTERN int
+lws_genrsa_private_encrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in,
+			   size_t in_len, uint8_t *out);
+
+/** lws_genrsa_public_decrypt() - Perform RSA public key decryption
  *
  * \param ctx: your struct lws_genrsa_ctx
  * \param in: encrypted input
@@ -146,6 +166,24 @@ LWS_VISIBLE LWS_EXTERN int
 lws_genrsa_public_decrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in,
 			  size_t in_len, uint8_t *out, size_t out_max);
 
+/** lws_genrsa_private_decrypt() - Perform RSA private key decryption
+ *
+ * \param ctx: your struct lws_genrsa_ctx
+ * \param in: encrypted input
+ * \param in_len: length of encrypted input
+ * \param out: decrypted output
+ * \param out_max: size of output buffer
+ *
+ * Performs PKCS1 v1.5 Decryption
+ *
+ * Returns <0 for error, or length of decrypted data.
+ *
+ * This and related APIs operate identically with OpenSSL or mbedTLS backends.
+ */
+LWS_VISIBLE LWS_EXTERN int
+lws_genrsa_private_decrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in,
+			   size_t in_len, uint8_t *out, size_t out_max);
+
 /** lws_genrsa_hash_sig_verify() - Verifies RSA signature on a given hash
  *
  * \param ctx: your struct lws_genrsa_ctx
diff --git a/include/libwebsockets/lws-jose.h b/include/libwebsockets/lws-jose.h
index 370afeae..d0e6dea9 100644
--- a/include/libwebsockets/lws-jose.h
+++ b/include/libwebsockets/lws-jose.h
@@ -49,11 +49,6 @@ enum lws_jws_jose_hdr_indexes {
 	LWS_COUNT_JOSE_HDR_ELEMENTS
 };
 
-struct lws_jose {
-	/* jose header elements */
-	struct lws_gencrypto_keyelem e[LWS_COUNT_JOSE_HDR_ELEMENTS];
-};
-
 enum lws_jose_algtype {
 	LWS_JOSE_ENCTYPE_NONE,
 
@@ -62,6 +57,7 @@ enum lws_jose_algtype {
 	LWS_JOSE_ENCTYPE_RSASSA_PKCS1_PSS,
 
 	LWS_JOSE_ENCTYPE_ECDSA,
+	LWS_JOSE_ENCTYPE_ECDHES,
 
 	LWS_JOSE_ENCTYPE_AES_CBC,
 	LWS_JOSE_ENCTYPE_AES_CFB128,
@@ -69,10 +65,12 @@ enum lws_jose_algtype {
 	LWS_JOSE_ENCTYPE_AES_CTR,
 	LWS_JOSE_ENCTYPE_AES_ECB,
 	LWS_JOSE_ENCTYPE_AES_OFB,
-	LWS_JOSE_ENCTYPE_AES_XTS,	/* care... requires double-length key */
+	LWS_JOSE_ENCTYPE_AES_XTS,	/* care: requires double-length key */
 	LWS_JOSE_ENCTYPE_AES_GCM,
 };
 
+/* there's a table of these defined in lws-gencrypto-common.c */
+
 struct lws_jose_jwe_alg {
 	enum lws_genhash_types hash_type;
 	enum lws_genhmac_types hmac_type;
@@ -80,16 +78,97 @@ struct lws_jose_jwe_alg {
 	enum lws_jose_algtype algtype_crypto; /* the encryption cipher */
 	const char *alg; /* the JWA enc alg name, eg "ES512" */
 	const char *curve_name; /* NULL, or, eg, "P-256" */
+	unsigned short keybits_min, keybits_fixed;
+	unsigned short ivbits;
 };
 
+struct lws_jose {
+	/* jose header elements */
+	struct lws_gencrypto_keyelem e[LWS_COUNT_JOSE_HDR_ELEMENTS];
+	struct lws_jwk jwk_ephemeral;
+	const struct lws_jose_jwe_alg *alg;
+	const struct lws_jose_jwe_alg *enc_alg;
+};
+
+/**
+ * lws_jose_init() - prepare a struct lws_jose for use
+ *
+ * \param jose: the jose header struct to prepare
+ */
+LWS_VISIBLE LWS_EXTERN void
+lws_jose_init(struct lws_jose *jose);
+
+/**
+ * lws_jose_destroy() - retire a struct lws_jose from use
+ *
+ * \param jose: the jose header struct to destroy
+ */
+LWS_VISIBLE LWS_EXTERN void
+lws_jose_destroy(struct lws_jose *jose);
+
+/**
+ * lws_gencrypto_jws_alg_to_definition() - look up a jws alg name
+ *
+ * \param alg: the jws alg name
+ * \param jose: pointer to the pointer to the info struct to set on success
+ *
+ * Returns 0 if *jose set, else nonzero for failure
+ */
 LWS_VISIBLE LWS_EXTERN int
 lws_gencrypto_jws_alg_to_definition(const char *alg,
 				    const struct lws_jose_jwe_alg **jose);
 
+/**
+ * lws_gencrypto_jwe_alg_to_definition() - look up a jwe alg name
+ *
+ * \param alg: the jwe alg name
+ * \param jose: pointer to the pointer to the info struct to set on success
+ *
+ * Returns 0 if *jose set, else nonzero for failure
+ */
 LWS_VISIBLE LWS_EXTERN int
 lws_gencrypto_jwe_alg_to_definition(const char *alg,
 				    const struct lws_jose_jwe_alg **jose);
 
+/**
+ * lws_gencrypto_jwe_enc_to_definition() - look up a jwe enc name
+ *
+ * \param alg: the jwe enc name
+ * \param jose: pointer to the pointer to the info struct to set on success
+ *
+ * Returns 0 if *jose set, else nonzero for failure
+ */
 LWS_VISIBLE LWS_EXTERN int
 lws_gencrypto_jwe_enc_to_definition(const char *enc,
 				    const struct lws_jose_jwe_alg **jose);
+
+/**
+ * lws_jws_parse_jose() - parse a JWS JOSE header
+ *
+ * \param jose: the jose struct to set to parsing results
+ * \param buf: the raw JOSE header
+ * \param len: the length of the raw JOSE header
+ * \param temp: parent-owned buffer to "allocate" elements into
+ * \param temp_len: amount of space available in temp
+ *
+ * returns the amount of temp used, or -1 for error
+ */
+LWS_VISIBLE LWS_EXTERN int
+lws_jws_parse_jose(struct lws_jose *jose,
+		   const char *buf, int len, char *temp, int *temp_len);
+
+/**
+ * lws_jwe_parse_jose() - parse a JWE JOSE header
+ *
+ * \param jose: the jose struct to set to parsing results
+ * \param buf: the raw JOSE header
+ * \param len: the length of the raw JOSE header
+ * \param temp: parent-owned buffer to "allocate" elements into
+ * \param temp_len: amount of space available in temp
+ *
+ * returns the amount of temp used, or -1 for error
+ */
+LWS_VISIBLE LWS_EXTERN int
+lws_jwe_parse_jose(struct lws_jose *jose,
+		   const char *buf, int len, char *temp, int *temp_len);
+
diff --git a/include/libwebsockets/lws-jwe.h b/include/libwebsockets/lws-jwe.h
index 1422a27b..3e568be8 100644
--- a/include/libwebsockets/lws-jwe.h
+++ b/include/libwebsockets/lws-jwe.h
@@ -19,8 +19,27 @@
  *  MA  02110-1301  USA
  *
  * included from libwebsockets.h
+ *
+ * JWE Compact Serialization consists of
+ *
+ *     BASE64URL(UTF8(JWE Protected Header)) || '.' ||
+ *     BASE64URL(JWE Encrypted Key)	     || '.' ||
+ *     BASE64URL(JWE Initialization Vector)  || '.' ||
+ *     BASE64URL(JWE Ciphertext)	     || '.' ||
+ *     BASE64URL(JWE Authentication Tag)
  */
 
+#define LWS_JWE_RFC3394_OVERHEAD_BYTES 8
+#define LWS_JWE_AES_IV_BYTES 16
+
+#define LWS_JWE_LIMIT_RSA_KEY_BITS 4096
+#define LWS_JWE_LIMIT_AES_KEY_BITS (512 + 64) /* RFC3394 Key Wrap adds 64b */
+#define LWS_JWE_LIMIT_EC_KEY_BITS  528 /* 521 rounded to byte boundary */
+#define LWS_JWE_LIMIT_HASH_BITS    (LWS_GENHASH_LARGEST * 8)
+
+/* the largest key element for any cipher */
+#define LWS_JWE_LIMIT_KEY_ELEMENT_BYTES (LWS_JWE_LIMIT_RSA_KEY_BITS / 8)
+
 /**
  * lws_jwe_create_packet() - add b64 sig to b64 hdr + payload
  *
@@ -43,7 +62,78 @@
  * Returns the length written to \p out, or -1.
  */
 LWS_VISIBLE LWS_EXTERN int
-lws_jwe_create_packet(struct lws_jwk *jwk,
-		      const struct lws_jose_jwe_alg *jose_alg,
+lws_jwe_create_packet(struct lws_jose *jose, struct lws_jwk *jwk,
 		      const char *payload, size_t len, const char *nonce,
 		      char *out, size_t out_len, struct lws_context *context);
+
+LWS_VISIBLE LWS_EXTERN void
+lws_jwe_be64(uint64_t c, uint8_t *p8);
+
+/*
+ * JWE Compact Serialization consists of
+ *
+ *     BASE64URL(UTF8(JWE Protected Header)) || '.' ||
+ *     BASE64URL(JWE Encrypted Key)	     || '.' ||
+ *     BASE64URL(JWE Initialization Vector)  || '.' ||
+ *     BASE64URL(JWE Ciphertext)	     || '.' ||
+ *     BASE64URL(JWE Authentication Tag)
+ */
+
+LWS_VISIBLE LWS_EXTERN int
+lws_jwe_write_compact(struct lws_jose *jose, struct lws_jws *jws,
+		      char *out, size_t out_len);
+
+
+/**
+ * lws_jwe_auth_and_decrypt() - confirm and decrypt JWE
+ *
+ * \param jose: jose context
+ * \param jws: jws / jwe context... .map and .map_b64 must be filled already
+ *
+ * This is a high level JWE decrypt api that takes a jws with the maps
+ * already processed, and if the authentication passes, returns the decrypted
+ * plaintext in jws.map.buf[LJWE_CTXT] and its length in jws.map.len[LJWE_CTXT].
+ *
+ * In the jws, the following fields must have been set by the caller
+ *
+ * .context
+ * .jwk (the key encryption key)
+ * .map
+ * .map_b64
+ *
+ * Having the b64 and decoded maps filled externally makes it flexible where
+ * the data was picked from, eg, from a Complete JWE JSON serialization, a
+ * flattened one, or a Compact Serialization.
+ *
+ * Returns decrypt length, or -1 for failure.
+ */
+LWS_VISIBLE LWS_EXTERN int
+lws_jwe_auth_and_decrypt(struct lws_jose *jose, struct lws_jws *jws);
+
+
+
+/* only exposed because we have test vectors that need it */
+LWS_VISIBLE LWS_EXTERN int
+lws_jwe_auth_and_decrypt_cbc_hs(struct lws_jose *jose,
+					struct lws_jws *jws, uint8_t *enc_cek,
+					uint8_t *aad, int aad_len);
+
+/* only exposed because we have test vectors that need it */
+LWS_VISIBLE LWS_EXTERN int
+lws_jwa_concat_kdf(struct lws_jose *jose, struct lws_jws *jws, int direct,
+		   uint8_t *out, const uint8_t *shared_secret, int sslen);
+
+
+/**
+ * lws_jwe_encrypt() - perform JWE encryption
+ *
+ * \param jose: the JOSE header information (encryption types, etc)
+ * \param jws: the JWE elements, pointer to jwk etc
+ * \param temp: parent-owned buffer to "allocate" elements into
+ * \param temp_len: amount of space available in temp
+ *
+ * returns the amount of temp used, or -1 for error
+ */
+LWS_VISIBLE LWS_EXTERN int
+lws_jwe_encrypt(struct lws_jose *jose, struct lws_jws *jws,
+		char *temp, int *temp_len);
diff --git a/include/libwebsockets/lws-jwk.h b/include/libwebsockets/lws-jwk.h
index 6cf15964..e2a001ca 100644
--- a/include/libwebsockets/lws-jwk.h
+++ b/include/libwebsockets/lws-jwk.h
@@ -52,13 +52,23 @@ struct lws_jwk {
 	/* generic meta key elements, like KID */
 	struct lws_gencrypto_keyelem meta[LWS_COUNT_JWK_ELEMENTS];
 	int kty;			/**< one of LWS_JWK_ */
+	char private_key; /* nonzero = has private key elements */
 };
 
 typedef int (*lws_jwk_key_import_callback)(struct lws_jwk *s, void *user);
 
+struct lws_jwk_parse_state {
+	struct lws_jwk *jwk;
+	char b64[(((8192 / 8) * 4) / 3) + 1]; /* enough for 8Kb key */
+	lws_jwk_key_import_callback per_key_cb;
+	void *user;
+	int pos;
+	unsigned short possible;
+};
+
 /** lws_jwk_import() - Create a JSON Web key from the textual representation
  *
- * \param s: the JWK object to create
+ * \param jwk: the JWK object to create
  * \param cb: callback for each jwk-processed key, or NULL if importing a single
  *	      key with no parent "keys" JSON
  * \param user: pointer to be passed to the callback, otherwise ignored by lws.
@@ -80,21 +90,21 @@ typedef int (*lws_jwk_key_import_callback)(struct lws_jwk *s, void *user);
  * iteration through any further keys).
  */
 LWS_VISIBLE LWS_EXTERN int
-lws_jwk_import(struct lws_jwk *s, lws_jwk_key_import_callback cb, void *user,
+lws_jwk_import(struct lws_jwk *jwk, lws_jwk_key_import_callback cb, void *user,
 	       const char *in, size_t len);
 
 /** lws_jwk_destroy() - Destroy a JSON Web key
  *
- * \param s: the JWK object to destroy
+ * \param jwk: the JWK object to destroy
  *
  * All allocations in the lws_jwk are destroyed
  */
 LWS_VISIBLE LWS_EXTERN void
-lws_jwk_destroy(struct lws_jwk *s);
+lws_jwk_destroy(struct lws_jwk *jwk);
 
 /** lws_jwk_export() - Export a JSON Web key to a textual representation
  *
- * \param s: the JWK object to export
+ * \param jwk: the JWK object to export
  * \param _private: 0 = just export public parts, 1 = export everything
  * \param p: the buffer to write the exported JWK to
  * \param len: the length of the buffer \p p in bytes
@@ -104,11 +114,11 @@ lws_jwk_destroy(struct lws_jwk *s);
  * Serializes the content of the JWK into a char buffer.
  */
 LWS_VISIBLE LWS_EXTERN int
-lws_jwk_export(struct lws_jwk *s, int _private, char *p, size_t len);
+lws_jwk_export(struct lws_jwk *jwk, int _private, char *p, size_t len);
 
 /** lws_jwk_load() - Import a JSON Web key from a file
  *
- * \param s: the JWK object to load into
+ * \param jwk: the JWK object to load into
  * \param filename: filename to load from
  *
  * Returns 0 for OK or -1 for failure
@@ -125,29 +135,58 @@ lws_jwk_export(struct lws_jwk *s, int _private, char *p, size_t len);
  * iteration through any further keys, leaving the last one in s).
  */
 LWS_VISIBLE LWS_EXTERN int
-lws_jwk_load(struct lws_jwk *s, const char *filename,
+lws_jwk_load(struct lws_jwk *jwk, const char *filename,
 	     lws_jwk_key_import_callback cb, void *user);
 
 /** lws_jwk_save() - Export a JSON Web key to a file
  *
- * \param s: the JWK object to save from
+ * \param jwk: the JWK object to save from
  * \param filename: filename to save to
  *
  * Returns 0 for OK or -1 for failure
  */
 LWS_VISIBLE LWS_EXTERN int
-lws_jwk_save(struct lws_jwk *s, const char *filename);
+lws_jwk_save(struct lws_jwk *jwk, const char *filename);
 
 /** lws_jwk_rfc7638_fingerprint() - jwk to RFC7638 compliant fingerprint
  *
- * \param s: the JWK object to fingerprint
+ * \param jwk: the JWK object to fingerprint
  * \param digest32: buffer to take 32-byte digest
  *
  * Returns 0 for OK or -1 for failure
  */
 LWS_VISIBLE LWS_EXTERN int
-lws_jwk_rfc7638_fingerprint(struct lws_jwk *s, char *digest32);
+lws_jwk_rfc7638_fingerprint(struct lws_jwk *jwk, char *digest32);
 
+/** lws_jwk_strdup_meta() - allocate a duplicated string meta element
+ *
+ * \param jwk: the JWK object to fingerprint
+ * \param idx: JWK_META_ element index
+ * \param in: string to copy
+ * \param len: length of string to copy
+ *
+ * Returns 0 for OK or -1 for failure
+ */
 LWS_VISIBLE LWS_EXTERN int
-lws_jwk_dump(struct lws_jwk *s);
+lws_jwk_strdup_meta(struct lws_jwk *jwk, enum enum_jwk_meta_tok idx,
+		    const char *in, int len);
+
+
+LWS_VISIBLE LWS_EXTERN int
+lws_jwk_dump(struct lws_jwk *jwk);
+
+/** lws_jwk_generate() - create a new key of given type and characteristics
+ *
+ * \param context: the struct lws_context used for RNG
+ * \param jwk: the JWK object to fingerprint
+ * \param kty: One of the LWS_GENCRYPTO_KTY_ key types
+ * \param bits: for OCT and RSA keys, the number of bits
+ * \param curve: for EC keys, the name of the curve
+ *
+ * Returns 0 for OK or -1 for failure
+ */
+LWS_VISIBLE int
+lws_jwk_generate(struct lws_context *context, struct lws_jwk *jwk,
+	         enum lws_gencrypto_kty kty, int bits, const char *curve);
+
 ///@}
diff --git a/include/libwebsockets/lws-jws.h b/include/libwebsockets/lws-jws.h
index f7d0c13a..9e2db521 100644
--- a/include/libwebsockets/lws-jws.h
+++ b/include/libwebsockets/lws-jws.h
@@ -29,26 +29,144 @@
  * SHA256/384/512 HMAC, and RSA 256/384/512 are supported.
  *
  * The API uses your TLS library crypto, but works exactly the same no matter
- * what you TLS backend is.
+ * what your TLS backend is.
  */
 ///@{
 
+/*
+ * The maps are built to work with both JWS (LJWS_) and JWE (LJWE_), and are
+ * sized to the slightly larger JWE case.
+ */
+
+enum enum_jws_sig_elements {
+
+	/* JWS block namespace */
+	LJWS_JOSE,
+	LJWS_PYLD,
+	LJWS_SIG,
+	LJWS_UHDR,
+
+	/* JWE block namespace */
+	LJWE_JOSE = 0,
+	LJWE_EKEY,
+	LJWE_IV,
+	LJWE_CTXT,
+	LJWE_ATAG,
+
+	LWS_JWS_MAX_COMPACT_BLOCKS
+};
+
+struct lws_jws_compact_map {
+	const char *buf[LWS_JWS_MAX_COMPACT_BLOCKS];
+	uint16_t len[LWS_JWS_MAX_COMPACT_BLOCKS];
+};
+
+struct lws_jws {
+	struct lws_jwk *jwk; /* the struct lws_jwk containing the signing key */
+	struct lws_context *context; /* the lws context (used to get random) */
+	struct lws_jws_compact_map map, map_b64;
+};
+
+/* jws EC signatures do not have ASN.1 in them, meaning they're incompatible
+ * with generic signatures.
+ */
+
+/**
+ * lws_jws_init() - initialize a jws for use
+ *
+ * \param jws: pointer to the jws to initialize
+ */
+LWS_VISIBLE LWS_EXTERN void
+lws_jws_init(struct lws_jws *jws, struct lws_jwk *jwk,
+	     struct lws_context *context);
+
+/**
+ * lws_jws_destroy() - scrub a jws
+ *
+ * \param jws: pointer to the jws to destroy
+ *
+ * Call before the jws goes out of scope.
+ *
+ * Elements defined in the jws are zeroed.
+ */
+LWS_VISIBLE LWS_EXTERN void
+lws_jws_destroy(struct lws_jws *jws);
+
+/**
+ * lws_jws_sig_confirm_compact() - check signature
+ *
+ * \param map: pointers and lengths for each of the unencoded JWS elements
+ * \param jwk: public key
+ * \param content: lws_context
+ *
+ * Confirms the signature on a JWS.  Use if you have non-b64 plain JWS elements
+ * in a map... it'll make a temp b64 version needed for comparison.  See below
+ * for other variants.
+ *
+ * Returns 0 on match.
+ */
+LWS_VISIBLE LWS_EXTERN int
+lws_jws_sig_confirm_compact(struct lws_jws_compact_map *map, struct lws_jwk *jwk,
+			    struct lws_context *context,
+			    char *temp, int *temp_len);
+
+LWS_VISIBLE LWS_EXTERN int
+lws_jws_sig_confirm_compact_b64_map(struct lws_jws_compact_map *map_b64,
+				    struct lws_jwk *jwk,
+			            struct lws_context *context,
+			            char *temp, int *temp_len);
+
+/**
+ * lws_jws_sig_confirm_compact_b64() - check signature on b64 compact JWS
+ *
+ * \param in: pointer to b64 jose.payload[.hdr].sig
+ * \param len: bytes available at \p in
+ * \param map: map to take decoded non-b64 content
+ * \param jwk: public key
+ * \param content: lws_context
+ *
+ * Confirms the signature on a JWS.  Use if you have you have b64 compact layout
+ * (jose.payload.hdr.sig) as an aggregated string... it'll make a temp plain
+ * version needed for comparison.
+ *
+ * Returns 0 on match.
+ */
 LWS_VISIBLE LWS_EXTERN int
-lws_jws_confirm_sig(const char *in, size_t len, struct lws_jwk *jwk,
-		    struct lws_context *context);
+lws_jws_sig_confirm_compact_b64(const char *in, size_t len,
+				struct lws_jws_compact_map *map,
+				struct lws_jwk *jwk,
+				struct lws_context *context,
+				char *temp, int *temp_len);
+
+/**
+ * lws_jws_sig_confirm() - check signature on plain + b64 JWS elements
+ *
+ * \param map_b64: pointers and lengths for each of the b64-encoded JWS elements
+ * \param map: pointers and lengths for each of the unencoded JWS elements
+ * \param jwk: public key
+ * \param content: lws_context
+ *
+ * Confirms the signature on a JWS.  Use if you have you already have both b64
+ * compact layout (jose.payload.hdr.sig) and decoded JWS elements in maps.
+ *
+ * If you had the b64 string and called lws_jws_compact_decode() on it, you
+ * will end up with both maps, and can use this api version, saving needlessly
+ * regenerating any temp map.
+ *
+ * Returns 0 on match.
+ */
+LWS_VISIBLE LWS_EXTERN int
+lws_jws_sig_confirm(struct lws_jws_compact_map *map_b64, /* b64-encoded */
+		    struct lws_jws_compact_map *map,	/* non-b64 */
+		    struct lws_jwk *jwk, struct lws_context *context);
 
 /**
  * lws_jws_sign_from_b64() - add b64 sig to b64 hdr + payload
  *
- * \param b64_hdr: protected header encoded in b64, may be NULL
- * \param hdr_len: bytes in b64 coding of protected header
- * \param b64_pay: payload encoded in b64
- * \param pay_len: bytes in b64 coding of payload
- * \param b64_sig: buffer to write the b64 encoded signature into
- * \param sig_len: max bytes we can write at b64_sig
- * \param hash_type: one of LWS_GENHASH_TYPE_SHA[256|384|512]
- * \param jwk: the struct lws_jwk containing the signing key
- * \param context: the lws context (used to get random)
+ * \param jose: jose header information
+ * \param jws: information to include in the signature
+ * \param b64_sig: output buffer for b64 signature
+ * \param sig_len: size of \p b64_sig output buffer
  *
  * This adds a b64-coded JWS signature of the b64-encoded protected header
  * and b64-encoded payload, at \p b64_sig.  The signature will be as large
@@ -62,11 +180,181 @@ lws_jws_confirm_sig(const char *in, size_t len, struct lws_jwk *jwk,
  * Returns the length of the encoded signature written to \p b64_sig, or -1.
  */
 LWS_VISIBLE LWS_EXTERN int
-lws_jws_sign_from_b64(const char *b64_hdr, size_t hdr_len, const char *b64_pay,
-		      size_t pay_len, char *b64_sig, size_t sig_len,
-		      const struct lws_jose_jwe_alg *args,
-		      struct lws_jwk *jwk,
-		      struct lws_context *context);
+lws_jws_sign_from_b64(struct lws_jose *jose, struct lws_jws *jws, char *b64_sig,
+			size_t sig_len);
+
+/**
+ * lws_jws_compact_decode() - converts and maps compact serialization b64 sections
+ *
+ * \param in: the incoming compact serialized b64
+ * \param len: the length of the incoming compact serialized b64
+ * \param map: pointer to the results structure
+ * \param map_b64: NULL, or pointer to a second results structure taking block
+ *		   information about the undecoded b64
+ * \param out: buffer to hold decoded results
+ * \param out_len: size of out in bytes
+ *
+ * Returns number of sections (2 if "none", else 3), or -1 if illegal.
+ *
+ * map is set to point to the start and hold the length of each decoded block.
+ * If map_b64 is non-NULL, then it's set with information about the input b64
+ * blocks.
+ */
+LWS_VISIBLE LWS_EXTERN int
+lws_jws_compact_decode(const char *in, int len, struct lws_jws_compact_map *map,
+		struct lws_jws_compact_map *map_b64, char *out, int *out_len);
+
+LWS_VISIBLE int
+lws_jws_compact_encode(struct lws_jws_compact_map *map_b64, /* b64-encoded */
+		       const struct lws_jws_compact_map *map,	/* non-b64 */
+		       char *buf, int *out_len);
+
+/**
+ * lws_jws_write_flattened_json() - create flattened JSON sig
+ *
+ * \param jws: information to include in the signature
+ * \param flattened: output buffer for JSON
+ * \param len: size of \p flattened output buffer
+ *
+ */
+LWS_VISIBLE LWS_EXTERN int
+lws_jws_write_flattened_json(struct lws_jws *jws, char *flattened, size_t len);
+
+/**
+ * lws_jws_write_compact() - create flattened JSON sig
+ *
+ * \param jws: information to include in the signature
+ * \param compact: output buffer for compact format
+ * \param len: size of \p flattened output buffer
+ *
+ */
+LWS_VISIBLE LWS_EXTERN int
+lws_jws_write_compact(struct lws_jws *jws, char *compact, size_t len);
+
+
+
+/*
+ * below apis are not normally needed if dealing with whole JWS... they're
+ * useful for creating from scratch
+ */
+
+
+/**
+ * lws_jws_dup_element() - allocate space for an element and copy data into it
+ *
+ * \param map: map to create the element in
+ * \param idx: index of element in the map to create
+ * \param temp: space to allocate in
+ * \param temp_len: available space at temp
+ * \param in: data to duplicate into element
+ * \param in_len: length of data to duplicate
+ * \param actual_alloc: 0 for same as in_len, else actual allocation size
+ *
+ * Copies in_len from in to temp, if temp_len is sufficient.
+ *
+ * Returns 0 or -1 if not enough space in temp / temp_len.
+ *
+ * Over-allocation can be acheived by setting actual_alloc to the real
+ * allocation desired... in_len will be copied into it.
+ *
+ * *temp_len is reduced by actual_alloc if successful.
+ */
+LWS_VISIBLE LWS_EXTERN int
+lws_jws_dup_element(struct lws_jws_compact_map *map, int idx,
+		    char *temp, int *temp_len, const void *in, size_t in_len,
+		    size_t actual_alloc);
+
+/**
+ * lws_jws_randomize_element() - create an element and fill with random
+ *
+ * \param context: lws_context used for random
+ * \param map: map to create the element in
+ * \param idx: index of element in the map to create
+ * \param temp: space to allocate in
+ * \param temp_len: available space at temp
+ * \param random_len: length of data to fill with random
+ * \param actual_alloc: 0 for same as random_len, else actual allocation size
+ *
+ * Randomize random_len bytes at temp, if temp_len is sufficient.
+ *
+ * Returns 0 or -1 if not enough space in temp / temp_len.
+ *
+ * Over-allocation can be acheived by setting actual_alloc to the real
+ * allocation desired... the first random_len will be filled with random.
+ *
+ * *temp_len is reduced by actual_alloc if successful.
+ */
+LWS_VISIBLE LWS_EXTERN int
+lws_jws_randomize_element(struct lws_context *context,
+			  struct lws_jws_compact_map *map,
+			  int idx, char *temp, int *temp_len, size_t random_len,
+			  size_t actual_alloc);
+
+/**
+ * lws_jws_alloc_element() - create an element and reserve space for content
+ *
+ * \param map: map to create the element in
+ * \param idx: index of element in the map to create
+ * \param temp: space to allocate in
+ * \param temp_len: available space at temp
+ * \param len: logical length of element
+ * \param actual_alloc: 0 for same as len, else actual allocation size
+ *
+ * Allocate len bytes at temp, if temp_len is sufficient.
+ *
+ * Returns 0 or -1 if not enough space in temp / temp_len.
+ *
+ * Over-allocation can be acheived by setting actual_alloc to the real
+ * allocation desired... the element logical length will be set to len.
+ *
+ * *temp_len is reduced by actual_alloc if successful.
+ */
+LWS_VISIBLE LWS_EXTERN int
+lws_jws_alloc_element(struct lws_jws_compact_map *map, int idx, char *temp,
+		      int *temp_len, size_t len, size_t actual_alloc);
+
+/**
+ * lws_jws_encode_b64_element() - create an b64-encoded element
+ *
+ * \param map: map to create the element in
+ * \param idx: index of element in the map to create
+ * \param temp: space to allocate in
+ * \param temp_len: available space at temp
+ * \param in: pointer to unencoded input
+ * \param in_len: length of unencoded input
+ *
+ * Allocate len bytes at temp, if temp_len is sufficient.
+ *
+ * Returns 0 or -1 if not enough space in temp / temp_len.
+ *
+ * Over-allocation can be acheived by setting actual_alloc to the real
+ * allocation desired... the element logical length will be set to len.
+ *
+ * *temp_len is reduced by actual_alloc if successful.
+ */
+LWS_VISIBLE LWS_EXTERN int
+lws_jws_encode_b64_element(struct lws_jws_compact_map *map, int idx,
+			   char *temp, int *temp_len, const void *in,
+			   size_t in_len);
+
+
+/**
+ * lws_jws_b64_compact_map() - find block starts and lengths in compact b64
+ *
+ * \param in: pointer to b64 jose.payload[.hdr].sig
+ * \param len: bytes available at \p in
+ * \param map: output struct with pointers and lengths for each JWS element
+ *
+ * Scans a jose.payload[.hdr].sig b64 string and notes where the blocks start
+ * and their length into \p map.
+ *
+ * Returns number of blocks if OK.  May return <0 if malformed.
+ * May not fill all map entries.
+ */
+
+LWS_VISIBLE LWS_EXTERN int
+lws_jws_b64_compact_map(const char *in, int len, struct lws_jws_compact_map *map);
+
 
 /**
  * lws_jws_base64_enc() - encode input data into b64url data
@@ -82,7 +370,8 @@ LWS_VISIBLE LWS_EXTERN int
 lws_jws_base64_enc(const char *in, size_t in_len, char *out, size_t out_max);
 
 /**
- * lws_jws_encode_section() - encode input data into b64url data, prepending . if not first
+ * lws_jws_encode_section() - encode input data into b64url data,
+ *				prepending . if not first
  *
  * \param in: the incoming plaintext
  * \param in_len: the length of the incoming plaintext in bytes
diff --git a/include/libwebsockets/lws-lejp.h b/include/libwebsockets/lws-lejp.h
index f3f7e59a..faa44abc 100644
--- a/include/libwebsockets/lws-lejp.h
+++ b/include/libwebsockets/lws-lejp.h
@@ -257,6 +257,10 @@ LWS_VISIBLE LWS_EXTERN void
 lejp_change_callback(struct lejp_ctx *ctx,
 		     signed char (*callback)(struct lejp_ctx *ctx, char reason));
 
+/* exported for use when reevaluating a path for use with a subcontext */
+LWS_VISIBLE LWS_EXTERN void
+lejp_check_path_match(struct lejp_ctx *ctx);
+
 LWS_VISIBLE LWS_EXTERN int
 lejp_get_wildcard(struct lejp_ctx *ctx, int wildcard, char *dest, int len);
 //@}
diff --git a/include/libwebsockets/lws-misc.h b/include/libwebsockets/lws-misc.h
index 6bb44619..9d0729b6 100644
--- a/include/libwebsockets/lws-misc.h
+++ b/include/libwebsockets/lws-misc.h
@@ -330,6 +330,22 @@ lws_snprintf(char *str, size_t size, const char *format, ...) LWS_FORMAT(3);
 LWS_VISIBLE LWS_EXTERN char *
 lws_strncpy(char *dest, const char *src, size_t size);
 
+/*
+ * lws_timingsafe_bcmp(): constant time memcmp
+ *
+ * \param a: first buffer
+ * \param b: second buffer
+ * \param len: count of bytes to compare
+ *
+ * Return 0 if the two buffers are the same, else nonzero.
+ *
+ * Always compares all of the buffer before returning, so it can't be used as
+ * a timing oracle.
+ */
+
+LWS_VISIBLE LWS_EXTERN int
+lws_timingsafe_bcmp(const void *a, const void *b, uint32_t len);
+
 /**
  * lws_get_random(): fill a buffer with platform random data
  *
diff --git a/lib/core/libwebsockets.c b/lib/core/libwebsockets.c
index 91dc77a4..e9d85ba2 100644
--- a/lib/core/libwebsockets.c
+++ b/lib/core/libwebsockets.c
@@ -1064,7 +1064,11 @@ lws_buflist_append_segment(struct lws_buflist **head, const uint8_t *buf,
 
 	/* append at the tail */
 	while (*head) {
-		if (!--sanity || head == &((*head)->next)) {
+		if (!--sanity) {
+			lwsl_err("%s: buflist reached sanity limit\n", __func__);
+			return -1;
+		}
+		if (*head == (*head)->next) {
 			lwsl_err("%s: corrupt list points to self\n", __func__);
 			return -1;
 		}
@@ -1097,7 +1101,7 @@ lws_buflist_destroy_segment(struct lws_buflist **head)
 	struct lws_buflist *old = *head;
 
 	assert(*head);
-	*head = (*head)->next;
+	*head = old->next;
 	old->next = NULL;
 	lws_free(old);
 
@@ -3142,6 +3146,18 @@ lws_strncpy(char *dest, const char *src, size_t size)
 	return dest;
 }
 
+int
+lws_timingsafe_bcmp(const void *a, const void *b, uint32_t len)
+{
+	const uint8_t *pa = a, *pb = b;
+	uint8_t sum = 0;
+
+	while (len--)
+		sum |= (*pa++ ^ *pb++);
+
+	return sum;
+}
+
 
 typedef enum {
 	LWS_TOKZS_LEADING_WHITESPACE,
diff --git a/lib/core/output.c b/lib/core/output.c
index e58aa45b..aef2d7b9 100644
--- a/lib/core/output.c
+++ b/lib/core/output.c
@@ -70,7 +70,8 @@ int lws_issue_raw(struct lws *wsi, unsigned char *buf, size_t len)
 		 * the buflist...
 		 */
 
-		lws_buflist_append_segment(&wsi->buflist_out, buf, len);
+		if (lws_buflist_append_segment(&wsi->buflist_out, buf, len))
+			return -1;
 
 		buf = NULL;
 		len = 0;
diff --git a/lib/jose/README.md b/lib/jose/README.md
index 7473c5b8..b9fd5389 100644
--- a/lib/jose/README.md
+++ b/lib/jose/README.md
@@ -28,26 +28,33 @@ useful implementations of JWS, JWE and JWK.
 
 ### Symmetric ciphers
 
- - All common AES varaiants: CBC, CFB128, CFB8, CTR, EVB, OFB and XTS
+ - All common AES varaiants: CBC, CFB128, CFB8, CTR, EVB, OFB, KW and XTS
 
 ### Asymmetric ciphers
 
  - RSA
 
- - EC (P-256, P-384 and P521 JWA curves)
+ - EC (P-256, P-384 and P-521 JWA curves)
+
+### Payload auth and crypt
+
+ - AES_128_CBC_HMAC_SHA_256
+ - AES_192_CBC_HMAC_SHA_384
+ - AES_256_CBC_HMAC_SHA_512
+ - AES_128_GCM
 
 For the required and recommended asymmetric algorithms, support currently
 looks like this
 
 |JWK kty|JWA|lws|
 |---|---|---|
-|EC|Recommended+|no|
+|EC|Recommended+|yes|
 |RSA|Required|yes|
 |oct|Required|yes|
 
 |JWE alg|JWA|lws|
 |---|---|---|
-|RSA1_5|Recommended-|yes (no JWE yet but lws_genrsa supports)|
+|RSA1_5|Recommended-|yes|
 |RSA-OAEP|Recommended+|no|
 |ECDH-ES|Recommended+|no|
 
@@ -55,7 +62,15 @@ looks like this
 |---|---|---|
 |HS256|Required|yes|
 |RS256|Recommended+|yes|
-|ES256|Recommended|no|
+|ES256|Recommended|yes|
+
+## Minimal Example tools
+
+[JWK](https://libwebsockets.org/git/libwebsockets/tree/minimal-examples/crypto/minimal-crypto-jwk)
+
+[JWS](https://libwebsockets.org/git/libwebsockets/tree/minimal-examples/crypto/minimal-crypto-jws)
+
+[JWE](https://libwebsockets.org/git/libwebsockets/tree/minimal-examples/crypto/minimal-crypto-jwe)
 
 ## API tests
 
diff --git a/lib/jose/jwe/jwe-aeskw.c b/lib/jose/jwe/jwe-aeskw.c
new file mode 100644
index 00000000..adb0df7a
--- /dev/null
+++ b/lib/jose/jwe/jwe-aeskw.c
@@ -0,0 +1,192 @@
+/*
+ * libwebsockets - JSON Web Encryption support
+ *
+ * Copyright (C) 2018 Andy Green <andy@warmcat.com>
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation:
+ *  version 2.1 of the License.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA  02110-1301  USA
+ *
+ *
+ * JWE code related to aeskw cbc
+ *
+ */
+#include "core/private.h"
+#include "jose/jwe/private.h"
+
+
+/*
+ * RFC3394 Key Wrap uses a 128-bit key, and bloats what it is wrapping by
+ * one 8-byte block.  So, if you had a 32 byte plaintext CEK to wrap, after
+ * wrapping it becomes a 40 byte wrapped, enciphered, key.
+ *
+ * The CEK comes in from and goes out in LJWE_EKEY.  So LJWE_EKEY length
+ * increases by 8 from calling this.
+ */
+
+int
+lws_jwe_encrypt_aeskw_cbc_hs(struct lws_jose *jose, struct lws_jws *jws,
+				char *temp, int *temp_len)
+{
+	struct lws_genaes_ctx aesctx;
+	/* we are wrapping a key, so size for the worst case after wrap */
+	uint8_t enc_cek[LWS_JWE_LIMIT_KEY_ELEMENT_BYTES +
+	                LWS_JWE_RFC3394_OVERHEAD_BYTES];
+	int n, m, hlen = lws_genhmac_size(jose->enc_alg->hmac_type);
+
+	if (jws->jwk->kty != LWS_GENCRYPTO_KTY_OCT) {
+		lwsl_err("%s: unexpected kty %d\n", __func__, jws->jwk->kty);
+
+		return -1;
+	}
+
+	jws->map_b64.len[LJWE_JOSE] = ((jws->map.len[LJWE_JOSE] * 4) / 3) + 10;
+	if (*temp_len < jws->map_b64.len[LJWE_JOSE])
+		return -1;
+	jws->map_b64.buf[LJWE_JOSE] = (char *)temp;
+	temp += jws->map_b64.len[LJWE_JOSE];
+	*temp_len -= jws->map_b64.len[LJWE_JOSE];
+
+	n = lws_jws_base64_enc(jws->map.buf[LJWE_JOSE], jws->map.len[LJWE_JOSE],
+			       (char *)jws->map_b64.buf[LJWE_JOSE],
+			       jws->map_b64.len[LJWE_JOSE]);
+	if (n < 0) {
+		lwsl_notice("%s: failed to encode JOSE hdr\n", __func__);
+
+		return -1;
+	}
+	jws->map_b64.len[LJWE_JOSE] = n;
+
+	jws->map.buf[LJWE_ATAG] = (char *)temp;
+	jws->map.len[LJWE_ATAG] = hlen / 2;
+	if (*temp_len < jws->map.len[LJWE_ATAG])
+		return -1;
+	temp += hlen / 2;
+	*temp_len -= hlen / 2;
+
+	jws->map.buf[LJWE_IV] = (char *)temp;
+	jws->map.len[LJWE_IV] = LWS_JWE_AES_IV_BYTES;
+	if (*temp_len < jws->map.len[LJWE_IV])
+		return -1;
+	temp += LWS_JWE_AES_IV_BYTES;
+	*temp_len -= LWS_JWE_AES_IV_BYTES;
+
+	/* 1) Encrypt the payload...  */
+
+	/* the CEK is 256-bit in the example encrypted with a 128-bit key */
+
+	n = lws_jwe_encrypt_cbc_hs(jose, jws, (uint8_t *)jws->map.buf[LJWE_EKEY],
+			     (uint8_t *)jws->map_b64.buf[LJWE_JOSE],
+			     jws->map_b64.len[LJWE_JOSE]);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_encrypt_cbc_hs failed\n", __func__);
+		return -1;
+	}
+
+	/* 2) Encrypt the JWE Encrypted Key: RFC3394 Key Wrap uses 64 bit blocks
+	 *    and 128-bit input key*/
+
+	if (lws_genaes_create(&aesctx, LWS_GAESO_ENC, LWS_GAESM_KW,
+			      jws->jwk->e, 1, NULL)) {
+
+		lwsl_notice("%s: lws_genaes_create\n", __func__);
+		return -1;
+	}
+
+	/* tag size is determined by enc cipher key length */
+
+	n = lws_genaes_crypt(&aesctx, (uint8_t *)jws->map.buf[LJWE_EKEY],
+			     jws->map.len[LJWE_EKEY], enc_cek, NULL, NULL, NULL,
+			     lws_gencrypto_bits_to_bytes(
+					     jose->enc_alg->keybits_fixed));
+	m = lws_genaes_destroy(&aesctx, NULL, 0);
+	if (n < 0) {
+		lwsl_err("%s: encrypt cek fail\n", __func__);
+		return -1;
+	}
+	if (m < 0) {
+		lwsl_err("%s: lws_genaes_destroy fail\n", __func__);
+		return -1;
+	}
+
+	jws->map.len[LJWE_EKEY] += LWS_JWE_RFC3394_OVERHEAD_BYTES;
+	memcpy((uint8_t *)jws->map.buf[LJWE_EKEY], enc_cek,
+	       jws->map.len[LJWE_EKEY]);
+
+	return jws->map.len[LJWE_CTXT];
+}
+
+
+int
+lws_jwe_auth_and_decrypt_aeskw_cbc_hs(struct lws_jose *jose,
+					      struct lws_jws *jws)
+{
+	struct lws_genaes_ctx aesctx;
+	uint8_t enc_cek[LWS_JWE_LIMIT_KEY_ELEMENT_BYTES +
+	                LWS_JWE_RFC3394_OVERHEAD_BYTES];
+	int n, m;
+
+	if (jws->jwk->kty != LWS_GENCRYPTO_KTY_OCT) {
+		lwsl_err("%s: unexpected kty %d\n", __func__, jws->jwk->kty);
+
+		return -1;
+	}
+
+	/* the CEK is 256-bit in the example encrypted with a 128-bit key */
+
+	if (jws->map.len[LJWE_EKEY] > sizeof(enc_cek))
+		return -1;
+
+	/* 1) Decrypt the JWE Encrypted Key to get the raw MAC / CEK */
+
+	if (lws_genaes_create(&aesctx, LWS_GAESO_DEC, LWS_GAESM_KW,
+			      jws->jwk->e, 1, NULL)) {
+
+		lwsl_notice("%s: lws_genaes_create\n", __func__);
+		return -1;
+	}
+
+	/*
+	 * Decrypt the CEK into enc_cek
+	 * tag size is determined by enc cipher key length */
+
+	n = lws_genaes_crypt(&aesctx, (uint8_t *)jws->map.buf[LJWE_EKEY],
+			     jws->map.len[LJWE_EKEY], enc_cek, NULL, NULL, NULL,
+			     lws_gencrypto_bits_to_bytes(
+					     jose->enc_alg->keybits_fixed));
+	m = lws_genaes_destroy(&aesctx, NULL, 0);
+	if (n < 0) {
+		lwsl_err("%s: decrypt CEK fail\n", __func__);
+		return -1;
+	}
+	if (m < 0) {
+		lwsl_err("%s: lws_genaes_destroy fail\n", __func__);
+		return -1;
+	}
+
+	/* 2) Decrypt the payload */
+
+	n = lws_jwe_auth_and_decrypt_cbc_hs(jose, jws, enc_cek,
+			     (uint8_t *)jws->map_b64.buf[LJWE_JOSE],
+			     jws->map_b64.len[LJWE_JOSE]);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_auth_and_decrypt_cbc_hs failed\n",
+				__func__);
+		return -1;
+	}
+
+	return jws->map.len[LJWE_CTXT];
+}
+
+
diff --git a/lib/jose/jwe/jwe-rsa-aescbc.c b/lib/jose/jwe/jwe-rsa-aescbc.c
new file mode 100644
index 00000000..dc93b219
--- /dev/null
+++ b/lib/jose/jwe/jwe-rsa-aescbc.c
@@ -0,0 +1,437 @@
+/*
+ * libwebsockets - JSON Web Encryption support
+ *
+ * Copyright (C) 2018 Andy Green <andy@warmcat.com>
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation:
+ *  version 2.1 of the License.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA  02110-1301  USA
+ *
+ *
+ * JWE code related to rsa + aescbc
+ *
+ */
+#include "core/private.h"
+#include "jose/jwe/private.h"
+
+int
+lws_jwe_encrypt_cbc_hs(struct lws_jose *jose, struct lws_jws *jws,
+			 uint8_t *cek, uint8_t *aad, int aad_len)
+{
+	int n, hlen = lws_genhmac_size(jose->enc_alg->hmac_type);
+	uint8_t digest[LWS_GENHASH_LARGEST];
+	struct lws_gencrypto_keyelem el;
+	struct lws_genhmac_ctx hmacctx;
+	struct lws_genaes_ctx aesctx;
+	uint8_t al[8];
+
+	/* Caller must have prepared space for the results */
+
+	if (jws->map.len[LJWE_ATAG] != hlen / 2) {
+		lwsl_notice("%s: expected tag len %d, got %d\n", __func__,
+			    hlen / 2, jws->map.len[LJWE_ATAG]);
+		return -1;
+	}
+
+	if (jws->map.len[LJWE_IV] != 16) {
+		lwsl_notice("expected iv len %d, got %d\n", 16,
+				jws->map.len[LJWE_IV]);
+		return -1;
+	}
+
+	/* first create the authentication hmac */
+
+	/* JWA Section 5.2.2.1
+	 *
+	 * 1.  The secondary keys MAC_KEY and ENC_KEY are generated from the
+	 *     input key K as follows.  Each of these two keys is an octet
+	 *     string.
+	 *
+	 *       MAC_KEY consists of the initial MAC_KEY_LEN octets of K, in
+	 *        order.
+	 *       ENC_KEY consists of the final ENC_KEY_LEN octets of K, in
+	 *        order.
+	 */
+
+	/*
+	 *    2.  The IV used is a 128-bit value generated randomly or
+	 *        pseudorandomly for use in the cipher.
+	 */
+	lws_get_random(jws->context, (void *)jws->map.buf[LJWE_IV], 16);
+
+	/*
+	 *  3.  The plaintext is CBC encrypted using PKCS #7 padding using
+	 *      ENC_KEY as the key and the IV.  We denote the ciphertext output
+	 *      from this step as E.
+	 */
+
+	/* second half is the AES ENC_KEY */
+	el.buf = (uint8_t *)jws->map.buf[LJWE_EKEY] + (hlen / 2);
+	el.len = hlen / 2;
+
+	if (lws_genaes_create(&aesctx, LWS_GAESO_ENC, LWS_GAESM_CBC, &el,
+			      LWS_GAESP_NO_PADDING, NULL)) {
+		lwsl_err("%s: lws_genaes_create failed\n", __func__);
+
+		return -1;
+	}
+
+	/*
+	 * the plaintext gets delivered to us in LJWE_CTXT, this replaces
+	 * the plaintext there with the same amount of ciphertext
+	 */
+	n = lws_genaes_crypt(&aesctx, (uint8_t *)jws->map.buf[LJWE_CTXT],
+			     jws->map.len[LJWE_CTXT],
+			     (uint8_t *)jws->map.buf[LJWE_CTXT],
+			     (uint8_t *)jws->map.buf[LJWE_IV], NULL, NULL, 16);
+	lws_genaes_destroy(&aesctx, NULL, 0);
+	if (n) {
+		lwsl_err("%s: lws_genaes_crypt failed\n", __func__);
+		return -1;
+	}
+
+	/*
+	 * 4.  The octet string AL is equal to the number of bits in the
+	 *     Additional Authenticated Data A expressed as a 64-bit unsigned
+	 *     big-endian integer.
+	 */
+	lws_jwe_be64(aad_len * 8, al);
+
+	/* first half of the CEK is the MAC key */
+	if (lws_genhmac_init(&hmacctx, jose->enc_alg->hmac_type,
+			     (uint8_t *)jws->map.buf[LJWE_EKEY], hlen / 2))
+		return -1;
+
+	/*
+	 *    5.  A message Authentication Tag T is computed by applying HMAC
+	 *    [RFC2104] to the following data, in order:
+	 *
+	 *     - the Additional Authenticated Data A,
+	 *     - the Initialization Vector IV,
+	 *     - the ciphertext E computed in the previous step, and
+	 *     - the octet string AL defined above.
+	 *
+	 *    The string MAC_KEY is used as the MAC key.  We denote the output
+	 *    of the MAC computed in this step as M.  The first T_LEN octets of
+	 *    M are used as T.
+	 */
+
+	if (lws_genhmac_update(&hmacctx, aad, aad_len) ||
+	    lws_genhmac_update(&hmacctx, jws->map.buf[LJWE_IV],
+			       LWS_JWE_AES_IV_BYTES) ||
+	    /* since we encrypted it, this is the ciphertext */
+	    lws_genhmac_update(&hmacctx, (uint8_t *)jws->map.buf[LJWE_CTXT],
+				         jws->map.len[LJWE_CTXT]) ||
+	    lws_genhmac_update(&hmacctx, al, 8)) {
+		lwsl_err("%s: hmac computation failed\n", __func__);
+		lws_genhmac_destroy(&hmacctx, NULL);
+		return -1;
+	}
+
+	if (lws_genhmac_destroy(&hmacctx, digest)) {
+		lwsl_err("%s: problem destroying hmac\n", __func__);
+		return -1;
+	}
+
+	/* create tag */
+	memcpy((void *)jws->map.buf[LJWE_ATAG], digest, hlen / 2);
+
+	return jws->map.len[LJWE_CTXT];
+}
+
+/*
+ * Requirements on entry:
+ *
+ *  - jws->map LJWE_JOSE contains the ASCII JOSE header
+ *  - jws->map LJWE_EKEY contains cek of enc_alg hmac length
+ *  - jws->map LJWE_CTXT contains the plaintext
+ *
+ * On successful exit:
+ *
+ *  - jws->map LJWE_ATAG contains the tag
+ *  - jws->map LJWE_IV contains the new random IV that was used
+ *  - jws->map LJWE_EKEY contains the encrypted CEK
+ *  - jws->map LJWE_CTXT contains the ciphertext
+ *
+ *  Return the amount of temp used, or -1
+ */
+
+int
+lws_jwe_encrypt_rsa_aes_cbc_hs(struct lws_jose *jose, struct lws_jws *jws,
+			       char *temp, int *temp_len)
+{
+	int n, hlen = lws_genhmac_size(jose->enc_alg->hmac_type), want;
+	char ekey[LWS_GENHASH_LARGEST];
+	struct lws_genrsa_ctx rsactx;
+
+	if (jws->jwk->kty != LWS_GENCRYPTO_KTY_RSA) {
+		lwsl_err("%s: unexpected kty %d\n", __func__, jws->jwk->kty);
+
+		return -1;
+	}
+
+	/*
+	 * Reserve space in caller temp for extra JWE elements and b64 version
+	 * of the JOSE hdr needed for computation... notice that the
+	 * unencrypted EKEY coming in is smaller than the RSA-encrypted EKEY
+	 * going out, which is going to be the RSA key size
+	 */
+
+	want = lws_base64_size(jws->map.len[LJWE_JOSE]) +
+		jws->jwk->e[LWS_GENCRYPTO_RSA_KEYEL_N].len +
+		(hlen / 2) + LWS_JWE_AES_IV_BYTES;
+	if (*temp_len < want) {
+		lwsl_notice("%s: more temp space needed: want %d, got %d\n",
+			    __func__, want, *temp_len);
+		return -1;
+	}
+
+	jws->map_b64.buf[LJWE_JOSE] = (char *)temp;
+	jws->map_b64.len[LJWE_JOSE] = lws_base64_size(jws->map.len[LJWE_JOSE]);
+	if (*temp_len < jws->map_b64.len[LJWE_JOSE])
+		return -1;
+	temp += jws->map_b64.len[LJWE_JOSE];
+	*temp_len -= jws->map_b64.len[LJWE_JOSE];
+
+	jws->map.buf[LJWE_ATAG] = (char *)temp;
+	jws->map.len[LJWE_ATAG] = hlen / 2;
+	if (*temp_len < jws->map.len[LJWE_ATAG])
+		return -1;
+	temp += hlen / 2;
+	*temp_len -= hlen / 2;
+
+	jws->map.buf[LJWE_IV] = (char *)temp;
+	jws->map.len[LJWE_IV] = LWS_JWE_AES_IV_BYTES;
+	if (*temp_len < jws->map.len[LJWE_IV])
+		return -1;
+	temp += jws->map.len[LJWE_IV];
+	*temp_len -= jws->map.len[LJWE_IV];
+
+	if (*temp_len < jws->jwk->e[LWS_GENCRYPTO_RSA_KEYEL_N].len)
+		return -1;
+
+	memcpy(temp, jws->map.buf[LJWE_EKEY], jws->map.len[LJWE_EKEY]);
+	jws->map.buf[LJWE_EKEY] = (char *)temp;
+	/*
+	 * don't change jws->map.len[LJWE_EKEY]... it has allocation for up to
+	 * jws->jwk->e[LWS_GENCRYPTO_RSA_KEYEL_N].len bytes now and the length
+	 * will be set after the plaintext version is encrypted in-situ
+	 */
+	temp += jws->jwk->e[LWS_GENCRYPTO_RSA_KEYEL_N].len;
+	*temp_len -= jws->jwk->e[LWS_GENCRYPTO_RSA_KEYEL_N].len;
+
+	/* we need a b64u encode of the JOSE header as AAD */
+
+	n = lws_jws_base64_enc(jws->map.buf[LJWE_JOSE], jws->map.len[LJWE_JOSE],
+			       (char *)jws->map_b64.buf[LJWE_JOSE],
+			       jws->map_b64.len[LJWE_JOSE]);
+	if (n < 0) {
+		lwsl_notice("%s: failed to encode JOSE hdr\n", __func__);
+
+		return -1;
+	}
+	jws->map_b64.len[LJWE_JOSE] = n;
+
+	/* Encrypt using the raw CEK (treated as MAC KEY | ENC KEY) */
+
+	n = lws_jwe_encrypt_cbc_hs(jose, jws,
+				     (uint8_t *)jws->map.buf[LJWE_EKEY],
+				     (uint8_t *)jws->map_b64.buf[LJWE_JOSE],
+				     jws->map_b64.len[LJWE_JOSE]);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_encrypt_cbc_hs failed\n", __func__);
+		return -1;
+	}
+
+	if (lws_genrsa_create(&rsactx, jws->jwk->e, jws->context,
+			!strcmp(jose->alg->alg,   "RSA-OAEP") ?
+					LGRSAM_PKCS1_OAEP_PSS : LGRSAM_PKCS1_1_5,
+					LWS_GENHASH_TYPE_UNKNOWN)) {
+		lwsl_notice("%s: lws_genrsa_public_decrypt_create\n",
+			    __func__);
+		return -1;
+	}
+
+	/* encrypt the CEK using RSA, mbedtls can't handle both in and out are
+	 * the EKEY, so copy the unencrypted ekey out temporarily */
+
+	memcpy(ekey, jws->map.buf[LJWE_EKEY], hlen);
+
+	n = lws_genrsa_public_encrypt(&rsactx, (uint8_t *)ekey, hlen,
+				      (uint8_t *)jws->map.buf[LJWE_EKEY]);
+	lws_genrsa_destroy(&rsactx);
+	lws_explicit_bzero(ekey, hlen);
+	if (n < 0) {
+		lwsl_err("%s: decrypt cek fail\n", __func__);
+		return -1;
+	}
+	jws->map.len[LJWE_EKEY] = n; /* update to encrypted EKEY size */
+
+	/*
+	 * We end up with IV, ATAG, set, EKEY encrypted and CTXT is ciphertext,
+	 * and b64u version of ATAG in map_b64.
+	 */
+
+	return 0;
+}
+
+int
+lws_jwe_auth_and_decrypt_cbc_hs(struct lws_jose *jose,
+					struct lws_jws *jws, uint8_t *enc_cek,
+					uint8_t *aad, int aad_len)
+{
+	int n, hlen = lws_genhmac_size(jose->enc_alg->hmac_type);
+	uint8_t digest[LWS_GENHASH_LARGEST];
+	struct lws_gencrypto_keyelem el;
+	struct lws_genhmac_ctx hmacctx;
+	struct lws_genaes_ctx aesctx;
+	uint8_t al[8];
+
+	/* Some sanity checks on what came in */
+
+	if (jws->map.len[LJWE_ATAG] != hlen / 2) {
+		lwsl_notice("%s: expected tag len %d, got %d\n", __func__,
+				hlen / 2, jws->map.len[LJWE_ATAG]);
+		return -1;
+	}
+
+	if (jws->map.len[LJWE_IV] != 16) {
+		lwsl_notice("expected iv len %d, got %d\n", 16,
+				jws->map.len[LJWE_IV]);
+		return -1;
+	}
+
+	/* Prepare to check authentication
+	 *
+	 * AAD is the b64 JOSE header.
+	 *
+	 * The octet string AL, which is the number of bits in AAD expressed as
+	 * a big-endian 64-bit unsigned integer is:
+	 *
+	 * [0, 0, 0, 0, 0, 0, 1, 152]
+	 *
+	 * Concatenate the AAD, the Initialization Vector, the ciphertext, and
+	 * the AL value.
+	 *
+	 */
+
+	lws_jwe_be64(aad_len * 8, al);
+
+	/* first half of enc_cek is the MAC key */
+	if (lws_genhmac_init(&hmacctx, jose->enc_alg->hmac_type, enc_cek,
+			     hlen / 2))
+		return -1;
+
+	if (lws_genhmac_update(&hmacctx, aad, aad_len) ||
+	    lws_genhmac_update(&hmacctx, (uint8_t *)jws->map.buf[LJWE_IV],
+					 jws->map.len[LJWE_IV]) ||
+	    lws_genhmac_update(&hmacctx, (uint8_t *)jws->map.buf[LJWE_CTXT],
+				         jws->map.len[LJWE_CTXT]) ||
+	    lws_genhmac_update(&hmacctx, al, 8)) {
+		lwsl_err("%s: hmac computation failed\n", __func__);
+		lws_genhmac_destroy(&hmacctx, NULL);
+		return -1;
+	}
+
+	if (lws_genhmac_destroy(&hmacctx, digest)) {
+		lwsl_err("%s: problem destroying hmac\n", __func__);
+		return -1;
+	}
+
+	/* first half of digest is the auth tag */
+
+	if (lws_timingsafe_bcmp(digest, jws->map.buf[LJWE_ATAG], hlen / 2)) {
+		lwsl_err("%s: auth failed: hmac tag != ATAG\n", __func__);
+		lwsl_hexdump_notice(jws->map.buf[LJWE_ATAG], hlen / 2);
+		lwsl_hexdump_notice(digest, 16);
+		return -1;
+	}
+
+	/* second half of enc cek is the CEK KEY */
+	el.buf = enc_cek + (hlen / 2);
+	el.len = hlen / 2;
+
+	if (lws_genaes_create(&aesctx, LWS_GAESO_DEC, LWS_GAESM_CBC,
+			      &el, LWS_GAESP_NO_PADDING, NULL)) {
+		lwsl_err("%s: lws_genaes_create failed\n", __func__);
+
+		return -1;
+	}
+
+	n = lws_genaes_crypt(&aesctx, (uint8_t *)jws->map.buf[LJWE_CTXT],
+			     jws->map.len[LJWE_CTXT],
+			     (uint8_t *)jws->map.buf[LJWE_CTXT],
+			     (uint8_t *)jws->map.buf[LJWE_IV], NULL, NULL, 16);
+	n |= lws_genaes_destroy(&aesctx, NULL, 0);
+	if (n) {
+		lwsl_err("%s: lws_genaes_crypt failed\n", __func__);
+		return -1;
+	}
+
+	return jws->map.len[LJWE_CTXT];
+}
+
+int
+lws_jwe_auth_and_decrypt_rsa_aes_cbc_hs(struct lws_jose *jose,
+						struct lws_jws *jws)
+{
+	int n;
+	struct lws_genrsa_ctx rsactx;
+	uint8_t enc_cek[512];
+
+	if (jws->jwk->kty != LWS_GENCRYPTO_KTY_RSA) {
+		lwsl_err("%s: unexpected kty %d\n", __func__, jws->jwk->kty);
+
+		return -1;
+	}
+
+	if (jws->map.len[LJWE_EKEY] < 40) {
+		lwsl_err("%s: EKEY length too short %d\n", __func__,
+				jws->map.len[LJWE_EKEY]);
+
+		return -1;
+	}
+
+	/* Decrypt the JWE Encrypted Key to get the raw MAC || CEK */
+
+	if (lws_genrsa_create(&rsactx, jws->jwk->e, jws->context,
+			!strcmp(jose->alg->alg,   "RSA-OAEP") ?
+				LGRSAM_PKCS1_OAEP_PSS : LGRSAM_PKCS1_1_5,
+				LWS_GENHASH_TYPE_UNKNOWN)) {
+		lwsl_notice("%s: lws_genrsa_public_decrypt_create\n",
+			    __func__);
+		return -1;
+	}
+
+	n = lws_genrsa_private_decrypt(&rsactx,
+				       (uint8_t *)jws->map.buf[LJWE_EKEY],
+				       jws->map.len[LJWE_EKEY], enc_cek,
+				       sizeof(enc_cek));
+	lws_genrsa_destroy(&rsactx);
+	if (n < 0) {
+		lwsl_err("%s: decrypt cek fail: \n", __func__);
+		return -1;
+	}
+
+	n = lws_jwe_auth_and_decrypt_cbc_hs(jose, jws, enc_cek,
+			     (uint8_t *)jws->map_b64.buf[LJWE_JOSE],
+			     jws->map_b64.len[LJWE_JOSE]);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_auth_and_decrypt_cbc_hs failed\n",
+			 __func__);
+		return -1;
+	}
+
+	return jws->map.len[LJWE_CTXT];
+}
diff --git a/lib/jose/jwe/jwe-rsa-aesgcm.c b/lib/jose/jwe/jwe-rsa-aesgcm.c
new file mode 100644
index 00000000..ac865f6f
--- /dev/null
+++ b/lib/jose/jwe/jwe-rsa-aesgcm.c
@@ -0,0 +1,349 @@
+/*
+ * libwebsockets - JSON Web Encryption support
+ *
+ * Copyright (C) 2018 Andy Green <andy@warmcat.com>
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation:
+ *  version 2.1 of the License.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA  02110-1301  USA
+ *
+ *
+ * JWE code related to aes gcm
+ *
+ */
+#include "core/private.h"
+#include "jose/jwe/private.h"
+
+#define LWS_AESGCM_IV 12
+#define LWS_AESGCM_TAG 16
+
+/*
+ * NOTICE this is AESGCM content encryption, it's not AES GCM key wrapping
+ *
+ *
+ * This section defines the specifics of performing authenticated
+ * encryption with AES in Galois/Counter Mode (GCM) ([AES] and
+ * [NIST.800-38D]).
+ *
+ * The CEK is used as the encryption key.
+ *
+ * Use of an IV of size 96 bits is REQUIRED with this algorithm.
+ *
+ * The requested size of the Authentication Tag output MUST be 128 bits,
+ * regardless of the key size.
+ *
+ * For decrypt: decrypt the KEK, then decrypt the payload
+ *
+ * For encrypt: encrypt the payload, then encrypt the KEK
+ */
+
+/*
+ * encrypting... enc_cek is unencrypted
+ */
+
+int
+lws_jwe_encrypt_gcm(struct lws_jose *jose, struct lws_jws *jws,
+		    uint8_t *enc_cek, uint8_t *aad, int aad_len)
+{
+	struct lws_gencrypto_keyelem el;
+	struct lws_genaes_ctx aesctx;
+	size_t ivs = LWS_AESGCM_IV;
+	int n;
+
+	/* Some sanity checks on what came in */
+
+	/* MUST be 128-bit for all sizes */
+	if (jws->map.len[LJWE_ATAG] != LWS_AESGCM_TAG) {
+		lwsl_notice("%s: AESGCM tag size must be 128b, got %d\n",
+				__func__, jws->map.len[LJWE_ATAG]);
+		return -1;
+	}
+
+	if (jws->map.len[LJWE_IV] != LWS_AESGCM_IV) { /* MUST be 96-bit */
+		lwsl_notice("%s: AESGCM IV must be 128b, got %d\n", __func__,
+				jws->map.len[LJWE_IV]);
+		return -1;
+	}
+
+	/* EKEY is directly the CEK KEY */
+	el.buf = enc_cek;
+	el.len = jose->enc_alg->keybits_fixed / 8;
+
+	if (lws_genaes_create(&aesctx, LWS_GAESO_ENC, LWS_GAESM_GCM,
+			      &el, LWS_GAESP_NO_PADDING, NULL)) {
+		lwsl_err("%s: lws_genaes_create failed\n", __func__);
+
+		return -1;
+	}
+
+	/* aad */
+
+	n = lws_genaes_crypt(&aesctx, aad, aad_len, NULL,
+			     (uint8_t *)jws->map.buf[LJWE_IV],
+			     (uint8_t *)jws->map.buf[LJWE_ATAG], &ivs,
+			     LWS_AESGCM_TAG);
+	if (n) {
+		lwsl_err("%s: lws_genaes_crypt aad failed\n", __func__);
+		return -1;
+	}
+
+	/* payload */
+	n = lws_genaes_crypt(&aesctx, (uint8_t *)jws->map.buf[LJWE_CTXT],
+			     jws->map.len[LJWE_CTXT],
+			     (uint8_t *)jws->map.buf[LJWE_CTXT],
+			     (uint8_t *)jws->map.buf[LJWE_IV],
+			     NULL, &ivs,
+			     LWS_AESGCM_TAG);
+
+	n |= lws_genaes_destroy(&aesctx, (uint8_t *)jws->map.buf[LJWE_ATAG],
+				LWS_AESGCM_TAG);
+	if (n) {
+		lwsl_err("%s: lws_genaes_crypt failed\n", __func__);
+		return -1;
+	}
+
+	return jws->map.len[LJWE_CTXT];
+}
+
+
+
+int
+lws_jwe_encrypt_rsa_aes_gcm(struct lws_jose *jose, struct lws_jws *jws,
+		char *temp, int *temp_len)
+{
+	int n, ret = -1, used = 0;
+	struct lws_genrsa_ctx rsactx;
+	uint8_t enc_cek[LWS_JWE_LIMIT_KEY_ELEMENT_BYTES];
+	int ekbytes = jose->enc_alg->keybits_fixed / 8;
+
+	if (jws->jwk->kty != LWS_GENCRYPTO_KTY_RSA) {
+		lwsl_err("%s: unexpected kty %d\n", __func__, jws->jwk->kty);
+
+		return -1;
+	}
+
+	if (jws->map.len[LJWE_EKEY] < 32) {
+		lwsl_err("%s: EKEY length too short %d\n", __func__,
+				jws->map.len[LJWE_EKEY]);
+
+		return -1;
+	}
+
+	/* create the IV + CEK */
+
+	jws->map_b64.len[LJWE_JOSE] = lws_base64_size(jws->map.len[LJWE_JOSE]);
+
+	if (*temp_len < LWS_AESGCM_IV + LWS_AESGCM_TAG + ekbytes +
+			jws->map_b64.len[LJWE_JOSE])
+		return -1;
+
+	*temp_len -= LWS_AESGCM_IV + LWS_AESGCM_TAG +
+		     jws->map_b64.len[LJWE_JOSE] +
+		     (jose->enc_alg->keybits_fixed / 8);
+
+	if (lws_get_random(jws->context, temp, LWS_AESGCM_IV) != LWS_AESGCM_IV)
+		return -1;
+	jws->map.buf[LJWE_IV] = temp;
+	jws->map.len[LJWE_IV] = LWS_AESGCM_IV;
+	temp += LWS_AESGCM_IV;
+
+	jws->map.buf[LJWE_ATAG] = temp;
+	jws->map.len[LJWE_ATAG] = LWS_AESGCM_TAG;
+	temp += LWS_AESGCM_TAG;
+
+	/* we create the CEK into EKEY, it'll be cleansed by jws destroy */
+
+	if (lws_get_random(jws->context, temp, ekbytes) != ekbytes)
+		return -1;
+	jws->map.buf[LJWE_EKEY] = temp;
+	jws->map.len[LJWE_EKEY] = ekbytes;
+	temp += ekbytes;
+
+	jws->map_b64.buf[LJWE_JOSE] = temp;
+	temp += jws->map_b64.len[LJWE_JOSE];
+	/* we need a b64u encode of the JOSE header as AAD */
+
+	n = lws_jws_base64_enc(jws->map.buf[LJWE_JOSE], jws->map.len[LJWE_JOSE],
+			       (char *)jws->map_b64.buf[LJWE_JOSE],
+			       jws->map_b64.len[LJWE_JOSE]);
+	if (n < 0) {
+		lwsl_notice("%s: failed to encode JOSE hdr\n", __func__);
+
+		return -1;
+	}
+	jws->map_b64.len[LJWE_JOSE] = n;
+
+	/* we must cleanse enc_cek */
+	used = jws->map.len[LJWE_EKEY];
+	memcpy(enc_cek, jws->map.buf[LJWE_EKEY], jws->map.len[LJWE_EKEY]);
+
+	/* encrypt the payload */
+
+	n = lws_jwe_encrypt_gcm(jose, jws, (uint8_t *)jws->map.buf[LJWE_EKEY],
+				(uint8_t *)jws->map_b64.buf[LJWE_JOSE],
+				jws->map_b64.len[LJWE_JOSE]);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_encrypt_gcm failed\n",
+			 __func__);
+		goto bail;
+	}
+
+	/* Encrypt the CEK to make the JWE Encrypted Key */
+
+	if (lws_genrsa_create(&rsactx, jws->jwk->e, jws->context,
+			!strcmp(jose->alg->alg,   "RSA-OAEP") ?
+				LGRSAM_PKCS1_OAEP_PSS : LGRSAM_PKCS1_1_5,
+			LWS_GENHASH_TYPE_SHA1 /* !!! */)) {
+		lwsl_notice("%s: lws_genrsa_public_decrypt_create\n",
+			    __func__);
+		goto bail;
+	}
+
+	n = lws_genrsa_public_encrypt(&rsactx,
+				       (uint8_t *)jws->map.buf[LJWE_EKEY],
+				       jws->map.len[LJWE_EKEY], enc_cek);
+	lws_genrsa_destroy(&rsactx);
+	if (n < 0) {
+		lwsl_err("%s: encrypt cek fail: \n", __func__);
+		goto bail;
+	}
+	jws->map.len[LJWE_EKEY] = n;
+
+	/* overwrite the CEK in EKEY with the encrypted version */
+
+	memcpy((void *)jws->map.buf[LJWE_EKEY], enc_cek,
+	       jws->map.len[LJWE_EKEY]);
+
+	ret = jws->map.len[LJWE_CTXT];
+
+bail:
+	/* cleanse enc_cek on stack that contained the unencrypted CEK */
+	lws_explicit_bzero(enc_cek, used);
+
+	return ret;
+}
+
+int
+lws_jwe_auth_and_decrypt_gcm(struct lws_jose *jose, struct lws_jws *jws,
+			     uint8_t *enc_cek, uint8_t *aad, int aad_len)
+{
+	struct lws_gencrypto_keyelem el;
+	struct lws_genaes_ctx aesctx;
+	size_t ivs = LWS_AESGCM_IV;
+	uint8_t tag[LWS_AESGCM_TAG];
+	int n;
+
+	/* Some sanity checks on what came in */
+
+	/* Tag MUST be 128-bit for all sizes */
+	if (jws->map.len[LJWE_ATAG] != LWS_AESGCM_TAG) {
+		lwsl_notice("%s: AESGCM tag size must be 128b, got %d\n",
+				__func__, jws->map.len[LJWE_ATAG]);
+		return -1;
+	}
+
+	if (jws->map.len[LJWE_IV] != LWS_AESGCM_IV) { /* MUST be 96-bit */
+		lwsl_notice("%s: AESGCM IV must be 128b, got %d\n", __func__,
+				jws->map.len[LJWE_IV]);
+		return -1;
+	}
+
+	/* EKEY is directly the CEK KEY */
+	el.buf = enc_cek;
+	el.len = jose->enc_alg->keybits_fixed / 8;
+
+	if (lws_genaes_create(&aesctx, LWS_GAESO_DEC, LWS_GAESM_GCM,
+			      &el, LWS_GAESP_NO_PADDING, NULL)) {
+		lwsl_err("%s: lws_genaes_create failed\n", __func__);
+
+		return -1;
+	}
+
+	n = lws_genaes_crypt(&aesctx, aad, aad_len,
+			     NULL,
+			     (uint8_t *)jws->map.buf[LJWE_IV],
+			     (uint8_t *)jws->map.buf[LJWE_ATAG], &ivs, 16);
+	if (n) {
+		lwsl_err("%s: lws_genaes_crypt aad failed\n", __func__);
+		return -1;
+	}
+	n = lws_genaes_crypt(&aesctx, (uint8_t *)jws->map.buf[LJWE_CTXT],
+			     jws->map.len[LJWE_CTXT],
+			     (uint8_t *)jws->map.buf[LJWE_CTXT],
+			     (uint8_t *)jws->map.buf[LJWE_IV],
+			     (uint8_t *)jws->map.buf[LJWE_ATAG], &ivs, 16);
+
+	n |= lws_genaes_destroy(&aesctx, tag, sizeof(tag));
+	if (n) {
+		lwsl_err("%s: lws_genaes_crypt failed\n", __func__);
+		return -1;
+	}
+
+	return jws->map.len[LJWE_CTXT];
+}
+
+
+
+int
+lws_jwe_auth_and_decrypt_rsa_aes_gcm(struct lws_jose *jose, struct lws_jws *jws)
+{
+	int n;
+	struct lws_genrsa_ctx rsactx;
+	uint8_t enc_cek[LWS_JWE_LIMIT_KEY_ELEMENT_BYTES];
+
+	if (jws->jwk->kty != LWS_GENCRYPTO_KTY_RSA) {
+		lwsl_err("%s: unexpected kty %d\n", __func__, jws->jwk->kty);
+
+		return -1;
+	}
+
+	if (jws->map.len[LJWE_EKEY] < 32) {
+		lwsl_err("%s: EKEY length too short %d\n", __func__,
+				jws->map.len[LJWE_EKEY]);
+
+		return -1;
+	}
+
+	/* Decrypt the JWE Encrypted Key to get the direct CEK */
+
+	if (lws_genrsa_create(&rsactx, jws->jwk->e, jws->context,
+			!strcmp(jose->alg->alg,   "RSA-OAEP") ?
+				LGRSAM_PKCS1_OAEP_PSS : LGRSAM_PKCS1_1_5,
+			LWS_GENHASH_TYPE_SHA1 /* !!! */)) {
+		lwsl_notice("%s: lws_genrsa_public_decrypt_create\n",
+			    __func__);
+		return -1;
+	}
+
+	n = lws_genrsa_private_decrypt(&rsactx,
+				       (uint8_t *)jws->map.buf[LJWE_EKEY],
+				       jws->map.len[LJWE_EKEY], enc_cek,
+				       sizeof(enc_cek));
+	lws_genrsa_destroy(&rsactx);
+	if (n < 0) {
+		lwsl_err("%s: decrypt cek fail: \n", __func__);
+		return -1;
+	}
+
+	n = lws_jwe_auth_and_decrypt_gcm(jose, jws, enc_cek,
+			(uint8_t *)jws->map_b64.buf[LJWE_JOSE],
+				jws->map_b64.len[LJWE_JOSE]);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_auth_and_decrypt_gcm_hs failed\n",
+			 __func__);
+		return -1;
+	}
+
+	return jws->map.len[LJWE_CTXT];
+}
diff --git a/lib/jose/jwe/jwe.c b/lib/jose/jwe/jwe.c
index ec0510b3..5cf95a11 100644
--- a/lib/jose/jwe/jwe.c
+++ b/lib/jose/jwe/jwe.c
@@ -21,24 +21,418 @@
  *
  * This supports RFC7516 JSON Web Encryption
  *
- *
  */
 #include "core/private.h"
+#include "jose/jwe/private.h"
+
+#if 0
+static const char * const jwe_complete_tokens[] = {
+	"protected",
+	"recipients[].header",
+	"recipients[].header.alg",
+	"recipients[].header.kid",
+	"recipients[].encrypted_key",
+	"iv",
+	"ciphertext",
+	"tag",
+};
+
+enum enum_jwe_complete_tokens {
+	LWS_EJCT_PROTECTED,
+	LWS_EJCT_HEADER,
+	LWS_EJCT_HEADER_ALG,
+	LWS_EJCT_HEADER_KID,
+	LWS_EJCT_RECIP_ENC_KEY,
+	LWS_EJCT_IV,
+	LWS_EJCT_CIPHERTEXT,
+	LWS_EJCT_TAG,
+};
+
+struct complete_cb_args {
+	struct lws_jws_compact_map *map;
+	struct lws_jws_compact_map *map_b64;
+	char *out;
+	int out_len;
+};
+
+
+static int
+do_map(struct complete_cb_args *args, int index, char *b64, int len)
+{
+	return 0;
+}
 
+static signed char
+lws_jwe_parse_complete_cb(struct lejp_ctx *ctx, char reason)
+{
+	struct complete_cb_args *args = (struct complete_cb_args *)ctx->user;
+
+	if (!(reason & LEJP_FLAG_CB_IS_VALUE) || !ctx->path_match)
+		return 0;
+
+	switch (ctx->path_match - 1) {
+
+	/* strings */
+
+	case LWS_EJCT_PROTECTED:
+	case LWS_EJCT_HEADER:
+	case LWS_EJCT_HEADER_ALG:
+	case LWS_EJCT_HEADER_KID:
+	case LWS_EJCT_RECIP_ENC_KEY:
+	case LWS_EJCT_IV:
+	case LWS_EJCT_CIPHERTEXT:
+	case LWS_EJCT_TAG:
+	}
+
+	return 0;
+}
 
 LWS_VISIBLE int
-lws_jwe_create_packet(struct lws_jwk *jwk,
-		      const struct lws_jose_jwe_alg *jose_alg,
+lws_jws_complete_decode(const char *json_in, int len,
+			struct lws_jws_compact_map *map,
+			struct lws_jws_compact_map *map_b64, char *out,
+			int out_len)
+{
+
+	struct complete_cb_args args;
+	struct lejp_ctx jctx;
+	int blocks, n, m = 0;
+
+	if (!map_b64)
+		map_b64 = map;
+
+	memset(map_b64, 0, sizeof(*map_b64));
+	memset(map, 0, sizeof(*map));
+
+	args.map = map;
+	args.map_b64 = map_b64;
+	args.out = out;
+	args.out_len = out_len;
+
+	lejp_construct(&jctx, lws_jwe_parse_complete_cb, &args,
+		       jwe_complete_tokens,
+		       LWS_ARRAY_SIZE(jwe_complete_tokens));
+
+	m = (int)(signed char)lejp_parse(&jctx, (uint8_t *)json_in, len);
+	lejp_destruct(&jctx);
+}
+#endif
+
+static uint8_t *
+be32(uint32_t i, uint32_t *p32)
+{
+	uint8_t *p = (uint8_t *)p32;
+
+	*p++ = (i >> 24) & 0xff;
+	*p++ = (i >> 16) & 0xff;
+	*p++ = (i >> 8) & 0xff;
+	*p++ = i & 0xff;
+
+	return (uint8_t *)p32;
+}
+
+/*
+ * The key derivation process derives the agreed-upon key from the
+ * shared secret Z established through the ECDH algorithm, per
+ * Section 6.2.2.2 of [NIST.800-56A].
+ *
+ * out must be prepared to take at least 32 bytes or the encrypted key size,
+ * whichever is larger.
+ */
+
+int
+lws_jwa_concat_kdf(struct lws_jose *jose, struct lws_jws *jws, int direct,
+		   uint8_t *out, const uint8_t *shared_secret, int sslen)
+{
+	int hlen = lws_genhash_size(LWS_GENHASH_TYPE_SHA256), aidlen;
+	struct lws_genhash_ctx hash_ctx;
+	uint32_t ctr = 1, t;
+	const char *aid;
+
+	/*
+	 * Hash
+	 *
+	 * AlgorithmID || PartyUInfo || PartyVInfo
+	 * 	{|| SuppPubInfo }{|| SuppPrivInfo }
+	 *
+	 * AlgorithmID
+	 *
+	 * The AlgorithmID value is of the form Datalen || Data, where Data
+	 * is a variable-length string of zero or more octets, and Datalen is
+	 * a fixed-length, big-endian 32-bit counter that indicates the
+	 * length (in octets) of Data.  In the Direct Key Agreement case,
+	 * Data is set to the octets of the ASCII representation of the "enc"
+	 * Header Parameter value.  In the Key Agreement with Key Wrapping
+	 * case, Data is set to the octets of the ASCII representation of the
+	 * "alg" (algorithm) Header Parameter value.
+	 */
+
+	aid = direct ? jose->enc_alg->alg : jose->alg->alg;
+	aidlen = strlen(aid);
+
+	/*
+	 *   PartyUInfo (PartyVInfo is the same deal)
+	 *
+	 *    The PartyUInfo value is of the form Datalen || Data, where Data is
+	 *    a variable-length string of zero or more octets, and Datalen is a
+	 *    fixed-length, big-endian 32-bit counter that indicates the length
+	 *    (in octets) of Data.  If an "apu" (agreement PartyUInfo) Header
+	 *    Parameter is present, Data is set to the result of base64url
+	 *    decoding the "apu" value and Datalen is set to the number of
+	 *    octets in Data.  Otherwise, Datalen is set to 0 and Data is set to
+	 *    the empty octet sequence
+	 *
+	 *   SuppPubInfo
+	 *
+	 *    This is set to the keydatalen represented as a 32-bit big-endian
+	 *    integer.
+	 *
+	 *   keydatalen
+	 *
+	 *    This is set to the number of bits in the desired output key.  For
+	 *    "ECDH-ES", this is length of the key used by the "enc" algorithm.
+	 *    For "ECDH-ES+A128KW", "ECDH-ES+A192KW", and "ECDH-ES+A256KW", this
+	 *    is 128, 192, and 256, respectively.
+	 *
+	 *    Compute Hash i = H(counter || Z || OtherInfo).
+	 *
+	 *    We must iteratively hash over key material that's larger than
+	 *    one hash output size (256b for SHA-256)
+	 */
+
+	while (ctr <= (uint32_t)(jose->enc_alg->keybits_fixed / hlen)) {
+
+		/*
+		 * Key derivation is performed using the Concat KDF, as defined
+		 * in Section 5.8.1 of [NIST.800-56A], where the Digest Method
+		 * is SHA-256.
+		 */
+
+		if (lws_genhash_init(&hash_ctx, LWS_GENHASH_TYPE_SHA256))
+			return -1;
+
+		if (/* counter */
+		    lws_genhash_update(&hash_ctx, be32(ctr++, &t), 4) ||
+		    /* Z */
+		    lws_genhash_update(&hash_ctx, shared_secret, sslen) ||
+		    /* other info */
+		    lws_genhash_update(&hash_ctx, be32(strlen(aid), &t), 4) ||
+		    lws_genhash_update(&hash_ctx, aid, aidlen) ||
+		    lws_genhash_update(&hash_ctx,
+				       be32(jose->e[LJJHI_APU].len, &t), 4) ||
+		    lws_genhash_update(&hash_ctx, jose->e[LJJHI_APU].buf,
+						  jose->e[LJJHI_APU].len) ||
+		    lws_genhash_update(&hash_ctx,
+				       be32(jose->e[LJJHI_APV].len, &t), 4) ||
+		    lws_genhash_update(&hash_ctx, jose->e[LJJHI_APV].buf,
+						  jose->e[LJJHI_APV].len) ||
+		    lws_genhash_update(&hash_ctx,
+				       be32(jose->enc_alg->keybits_fixed, &t),
+					    4) ||
+		    lws_genhash_destroy(&hash_ctx, out)) {
+			lws_genhash_destroy(&hash_ctx, NULL);
+
+			return -1;
+		}
+
+		out += hlen;
+	}
+
+	return 0;
+}
+
+LWS_VISIBLE void
+lws_jwe_be64(uint64_t c, uint8_t *p8)
+{
+	int n;
+
+	for (n = 56; n >= 0; n -= 8)
+		*p8++ = (uint8_t)((c >> n) & 0xff);
+}
+
+LWS_VISIBLE int
+lws_jwe_auth_and_decrypt(struct lws_jose *jose, struct lws_jws *jws)
+{
+	int valid_aescbc_hmac, valid_aesgcm;
+	char temp[512];
+	int temp_len = sizeof(temp);
+
+	if (lws_jwe_parse_jose(jose, jws->map.buf[LJWS_JOSE],
+			       jws->map.len[LJWS_JOSE],
+			       temp, &temp_len) < 0) {
+		lwsl_err("%s: JOSE parse failed\n", __func__);
+		return -1;
+	}
+
+	valid_aescbc_hmac = jose->enc_alg &&
+		jose->enc_alg->algtype_crypto == LWS_JOSE_ENCTYPE_AES_CBC &&
+		(jose->enc_alg->hmac_type == LWS_GENHMAC_TYPE_SHA256 ||
+		 jose->enc_alg->hmac_type == LWS_GENHMAC_TYPE_SHA384 ||
+		 jose->enc_alg->hmac_type == LWS_GENHMAC_TYPE_SHA512);
+
+	valid_aesgcm = jose->enc_alg &&
+		jose->enc_alg->algtype_crypto == LWS_JOSE_ENCTYPE_AES_GCM;
+
+	/* RSA + AESCBC */
+
+	if ((!strcmp(jose->alg->alg,     "RSA1_5") ||
+	     !strcmp(jose->alg->alg,   "RSA-OAEP")) && valid_aescbc_hmac)
+		return lws_jwe_auth_and_decrypt_rsa_aes_cbc_hs(jose, jws);
+
+	/* RSA + AESGCM */
+
+	if ((!strcmp(jose->alg->alg,     "RSA1_5") ||
+	     !strcmp(jose->alg->alg,   "RSA-OAEP")) && valid_aesgcm)
+		return lws_jwe_auth_and_decrypt_rsa_aes_gcm(jose, jws);
+
+	/* AESKW */
+
+	if ((!strcmp(jose->alg->alg,    "A128KW") ||
+	     !strcmp(jose->alg->alg,    "A192KW") ||
+	     !strcmp(jose->alg->alg,    "A256KW")) && valid_aescbc_hmac)
+		return lws_jwe_auth_and_decrypt_aeskw_cbc_hs(jose, jws);
+
+	lwsl_err("%s: unknown cipher alg combo %s / %s\n", __func__,
+			jose->alg->alg, jose->enc_alg ?
+					jose->enc_alg->alg : "NULL");
+
+	return -1;
+}
+LWS_VISIBLE int
+lws_jwe_encrypt(struct lws_jose *jose, struct lws_jws *jws,
+		char *temp, int *temp_len)
+{
+	int valid_aescbc_hmac, valid_aesgcm;
+
+	valid_aesgcm = jose->enc_alg &&
+		jose->enc_alg->algtype_crypto == LWS_JOSE_ENCTYPE_AES_GCM;
+
+	if (lws_jwe_parse_jose(jose, jws->map.buf[LJWS_JOSE],
+			       jws->map.len[LJWS_JOSE], temp, temp_len) < 0) {
+		lwsl_err("%s: JOSE parse failed\n", __func__);
+		return -1;
+	}
+
+	valid_aescbc_hmac = jose->enc_alg &&
+		jose->enc_alg->algtype_crypto == LWS_JOSE_ENCTYPE_AES_CBC &&
+		(jose->enc_alg->hmac_type == LWS_GENHMAC_TYPE_SHA256 ||
+		 jose->enc_alg->hmac_type == LWS_GENHMAC_TYPE_SHA384 ||
+		 jose->enc_alg->hmac_type == LWS_GENHMAC_TYPE_SHA512);
+
+	/* RSA + AESCBC */
+
+	if ((!strcmp(jose->alg->alg,     "RSA1_5") ||
+	     !strcmp(jose->alg->alg,   "RSA-OAEP")) && valid_aescbc_hmac)
+		return lws_jwe_encrypt_rsa_aes_cbc_hs(jose, jws, temp, temp_len);
+
+	/* RSA + AESGCM */
+
+	if ((!strcmp(jose->alg->alg,     "RSA1_5") ||
+	     !strcmp(jose->alg->alg,   "RSA-OAEP")) && valid_aesgcm)
+		return lws_jwe_encrypt_rsa_aes_gcm(jose, jws, temp, temp_len);
+
+	/* AESKW */
+
+	if ((!strcmp(jose->alg->alg,    "A128KW") ||
+	     !strcmp(jose->alg->alg,    "A192KW") ||
+	     !strcmp(jose->alg->alg,    "A256KW")) && valid_aescbc_hmac)
+		return lws_jwe_encrypt_aeskw_cbc_hs(jose, jws, temp, temp_len);
+
+	lwsl_err("%s: unknown cipher alg combo %s / %s\n", __func__,
+			jose->alg->alg, jose->enc_alg ?
+					jose->enc_alg->alg : "NULL");
+
+	return -1;
+}
+
+/*
+ * JWE Compact Serialization consists of
+ *
+ *     BASE64URL(UTF8(JWE Protected Header)) || '.' ||
+ *     BASE64URL(JWE Encrypted Key)	     || '.' ||
+ *     BASE64URL(JWE Initialization Vector)  || '.' ||
+ *     BASE64URL(JWE Ciphertext)	     || '.' ||
+ *     BASE64URL(JWE Authentication Tag)
+ */
+
+LWS_VISIBLE int
+lws_jwe_write_compact(struct lws_jose *jose, struct lws_jws *jws,
+		      char *out, size_t out_len)
+{
+	size_t orig = out_len;
+	int n;
+
+	n = lws_jws_base64_enc(jws->map.buf[LJWS_JOSE],
+			       jws->map.len[LJWS_JOSE], out, out_len);
+	if (n < 0 || (int)out_len == n) {
+		lwsl_info("%s: unable to encode JOSE\n", __func__);
+		return n;
+	}
+
+	out += n;
+	*out++ = '.';
+	out_len -= n + 1;
+
+	n = lws_jws_base64_enc(jws->map.buf[LJWE_EKEY],
+			       jws->map.len[LJWE_EKEY], out, out_len);
+	if (n < 0 || (int)out_len == n) {
+		lwsl_info("%s: unable to encode EKEY\n", __func__);
+		return n;
+	}
+
+	out += n;
+	*out++ = '.';
+	out_len -= n + 1;
+	n = lws_jws_base64_enc(jws->map.buf[LJWE_IV],
+			       jws->map.len[LJWE_IV], out, out_len);
+	if (n < 0 || (int)out_len == n) {
+		lwsl_info("%s: unable to encode IV\n", __func__);
+		return n;
+	}
+
+	out += n;
+	*out++ = '.';
+	out_len -= n + 1;
+
+	n = lws_jws_base64_enc(jws->map.buf[LJWE_CTXT],
+			       jws->map.len[LJWE_CTXT], out, out_len);
+	if (n < 0 || (int)out_len == n) {
+		lwsl_info("%s: unable to encode CTXT\n", __func__);
+		return n;
+	}
+
+	out += n;
+	*out++ = '.';
+	out_len -= n + 1;
+	n = lws_jws_base64_enc(jws->map.buf[LJWE_ATAG],
+			       jws->map.len[LJWE_ATAG], out, out_len);
+	if (n < 0 || (int)out_len == n) {
+		lwsl_info("%s: unable to encode ATAG\n", __func__);
+		return n;
+	}
+
+	out += n;
+	*out++ = '\0';
+	out_len -= n;
+
+	return orig - out_len;
+}
+
+LWS_VISIBLE int
+lws_jwe_create_packet(struct lws_jose *jose, struct lws_jwk *jwk,
 		      const char *payload, size_t len,
 		      const char *nonce, char *out, size_t out_len,
 		      struct lws_context *context)
 {
-	char *buf, *start, *p, *end, *p1, *end1, *b64_hdr, *b64_pay;
-	int n, b64_hdr_len, b64_pay_len;
+	char *buf, *start, *p, *end, *p1, *end1;
+	struct lws_jws jws;
+	int n;
+
+	lws_jws_init(&jws, jwk, context);
 
 	/*
-	 * This buffer is local to the function, the actual output
-	 * is prepared into vhd->buf.  Only the plaintext protected header
+	 * This buffer is local to the function, the actual output is prepared
+	 * into vhd->buf.  Only the plaintext protected header
 	 * (which contains the public key, 512 bytes for 4096b) goes in
 	 * here temporarily.
 	 */
@@ -56,7 +450,11 @@ lws_jwe_create_packet(struct lws_jwk *jwk,
 	 * temporary JWS protected header plaintext
 	 */
 
-	p += lws_snprintf(p, end - p, "{\"alg\":\"RS256\",\"jwk\":");
+	if (!jose->alg || !jose->alg->alg)
+		goto bail;
+
+	p += lws_snprintf(p, end - p, "{\"alg\":\"%s\",\"jwk\":",
+			  jose->alg->alg);
 	n = lws_jwk_export(jwk, 0, p, end - p);
 	if (n < 0) {
 		lwsl_notice("failed to export jwk\n");
@@ -74,23 +472,33 @@ lws_jwe_create_packet(struct lws_jwk *jwk,
 	end1 = out + out_len - 1;
 
 	p1 += lws_snprintf(p1, end1 - p1, "{\"protected\":\"");
-	b64_hdr = p1;
+	jws.map_b64.buf[LJWS_JOSE] = p1;
 	n = lws_jws_base64_enc(start, p - start, p1, end1 - p1);
 	if (n < 0) {
 		lwsl_notice("%s: failed to encode protected\n", __func__);
 		goto bail;
 	}
-	b64_hdr_len = n;
+	jws.map_b64.len[LJWS_JOSE] = n;
 	p1 += n;
 
 	p1 += lws_snprintf(p1, end1 - p1, "\",\"payload\":\"");
-	b64_pay = p1;
+	jws.map_b64.buf[LJWS_PYLD] = p1;
 	n = lws_jws_base64_enc(payload, len, p1, end1 - p1);
 	if (n < 0) {
 		lwsl_notice("%s: failed to encode payload\n", __func__);
 		goto bail;
 	}
-	b64_pay_len = n;
+	jws.map_b64.len[LJWS_PYLD] = n;
+	p1 += n;
+
+	p1 += lws_snprintf(p1, end1 - p1, "\",\"header\":\"");
+	jws.map_b64.buf[LJWS_UHDR] = p1;
+	n = lws_jws_base64_enc(payload, len, p1, end1 - p1);
+	if (n < 0) {
+		lwsl_notice("%s: failed to encode payload\n", __func__);
+		goto bail;
+	}
+	jws.map_b64.len[LJWS_UHDR] = n;
 
 	p1 += n;
 	p1 += lws_snprintf(p1, end1 - p1, "\",\"signature\":\"");
@@ -99,13 +507,15 @@ lws_jwe_create_packet(struct lws_jwk *jwk,
 	 * taking the b64 protected header and the b64 payload, sign them
 	 * and place the signature into the packet
 	 */
-	n = lws_jws_sign_from_b64(b64_hdr, b64_hdr_len, b64_pay, b64_pay_len,
-				  p1, end1 - p1, jose_alg, jwk, context);
+	n = lws_jws_sign_from_b64(jose, &jws, p1, end1 - p1);
 	if (n < 0) {
 		lwsl_notice("sig gen failed\n");
 
 		goto bail;
 	}
+	jws.map_b64.buf[LJWS_SIG] = p1;
+	jws.map_b64.len[LJWS_SIG] = n;
+
 	p1 += n;
 	p1 += lws_snprintf(p1, end1 - p1, "\"}");
 
@@ -114,6 +524,7 @@ lws_jwe_create_packet(struct lws_jwk *jwk,
 	return p1 - out;
 
 bail:
+	lws_jws_destroy(&jws);
 	free(buf);
 
 	return -1;
diff --git a/lib/jose/jwe/private.h b/lib/jose/jwe/private.h
new file mode 100644
index 00000000..e4f02b26
--- /dev/null
+++ b/lib/jose/jwe/private.h
@@ -0,0 +1,50 @@
+
+/* jwe-rsa-aescbc.c */
+
+int
+lws_jwe_encrypt_rsa_aes_cbc_hs(struct lws_jose *jose, struct lws_jws *jws,
+			       char *temp, int *temp_len);
+
+int
+lws_jwe_auth_and_decrypt_cbc_hs(struct lws_jose *jose,
+				struct lws_jws *jws, uint8_t *enc_cek,
+				uint8_t *aad, int aad_len);
+
+int
+lws_jwe_auth_and_decrypt_rsa_aes_cbc_hs(struct lws_jose *jose,
+					struct lws_jws *jws);
+
+int
+lws_jwe_encrypt_cbc_hs(struct lws_jose *jose, struct lws_jws *jws,
+		       uint8_t *cek, uint8_t *aad, int aad_len);
+
+
+/* jws-rsa-aesgcm.c */
+
+int
+lws_jwe_auth_and_decrypt_gcm(struct lws_jose *jose,
+			     struct lws_jws *jws, uint8_t *enc_cek,
+			     uint8_t *aad, int aad_len);
+
+int
+lws_jwe_auth_and_decrypt_rsa_aes_gcm(struct lws_jose *jose,
+				     struct lws_jws *jws);
+
+int
+lws_jwe_encrypt_gcm(struct lws_jose *jose, struct lws_jws *jws,
+		    uint8_t *enc_cek, uint8_t *aad, int aad_len);
+
+int
+lws_jwe_encrypt_rsa_aes_gcm(struct lws_jose *jose, struct lws_jws *jws,
+			    char *temp, int *temp_len);
+
+
+/* jwe-rsa-aeskw.c */
+
+int
+lws_jwe_encrypt_aeskw_cbc_hs(struct lws_jose *jose, struct lws_jws *jws,
+			     char *temp, int *temp_len);
+
+int
+lws_jwe_auth_and_decrypt_aeskw_cbc_hs(struct lws_jose *jose,
+				      struct lws_jws *jws);
diff --git a/lib/jose/jwk/jwk.c b/lib/jose/jwk/jwk.c
index 8ef7494e..879cff12 100644
--- a/lib/jose/jwk/jwk.c
+++ b/lib/jose/jwk/jwk.c
@@ -20,15 +20,16 @@
  */
 
 #include "core/private.h"
+#include "jose/private.h"
 
 #include <fcntl.h>
 #include <unistd.h>
 
-static const char * const kyt_names[] = {
-	"unknown",	/* LWS_GENCRYPTO_KYT_UNKNOWN */
-	"oct",		/* LWS_GENCRYPTO_KYT_OCT */
-	"RSA",		/* LWS_GENCRYPTO_KYT_RSA */
-	"EC"		/* LWS_GENCRYPTO_KYT_EC */
+static const char * const kty_names[] = {
+	"unknown",	/* LWS_GENCRYPTO_KTY_UNKNOWN */
+	"oct",		/* LWS_GENCRYPTO_KTY_OCT */
+	"RSA",		/* LWS_GENCRYPTO_KTY_RSA */
+	"EC"		/* LWS_GENCRYPTO_KTY_EC */
 };
 
 /*
@@ -64,42 +65,84 @@ static const char * const jwk_tok[] = {
 
 /* information about each token declared above */
 
-#define F_B64	(1 << 10)
-#define F_B64U	(1 << 11)
-#define F_META	(1 << 12)
-#define F_RSA	(1 << 13)
-#define F_EC	(1 << 14)
-#define F_OCT	(1 << 15)
+#define F_M	(1 <<  9)	/* Mandatory for key type */
+#define F_B64	(1 << 10)	/* Base64 coded octets */
+#define F_B64U	(1 << 11)	/* Base64 Url coded octets */
+#define F_META	(1 << 12)	/* JWK key metainformation */
+#define F_RSA	(1 << 13)	/* RSA key */
+#define F_EC	(1 << 14)	/* Elliptic curve key */
+#define F_OCT	(1 << 15)	/* octet key */
 
-unsigned short tok_map[] = {
+static unsigned short tok_map[] = {
 	F_RSA | F_EC | F_OCT | F_META |		 0xff,
-	F_RSA |				F_B64U | LWS_GENCRYPTO_RSA_KEYEL_E,
-	F_RSA |				F_B64U | LWS_GENCRYPTO_RSA_KEYEL_N,
-	F_RSA | F_EC |			F_B64U | LWS_GENCRYPTO_RSA_KEYEL_D,
-	F_RSA |				F_B64U | LWS_GENCRYPTO_RSA_KEYEL_P,
-	F_RSA |				F_B64U | LWS_GENCRYPTO_RSA_KEYEL_Q,
-	F_RSA |				F_B64U | LWS_GENCRYPTO_RSA_KEYEL_DP,
-	F_RSA |				F_B64U | LWS_GENCRYPTO_RSA_KEYEL_DQ,
-	F_RSA |				F_B64U | LWS_GENCRYPTO_RSA_KEYEL_QI,
-
-	F_RSA | F_EC | F_OCT | F_META |		 JWK_META_KTY,
-		       F_OCT |		F_B64U | LWS_GENCRYPTO_OCT_KEYEL_K,
-
-		F_EC |				 LWS_GENCRYPTO_EC_KEYEL_CRV,
-		F_EC |			F_B64U | LWS_GENCRYPTO_EC_KEYEL_X,
-		F_EC |			F_B64U | LWS_GENCRYPTO_EC_KEYEL_Y,
-
-	F_RSA | F_EC | F_OCT | F_META |		 JWK_META_KID,
-	F_RSA | F_EC | F_OCT | F_META |		 JWK_META_USE,
-
-	F_RSA | F_EC | F_OCT | F_META |		 JWK_META_KEY_OPS,
-	F_RSA | F_EC | F_OCT | F_META | F_B64 |	 JWK_META_X5C,
-	F_RSA | F_EC | F_OCT | F_META |		 JWK_META_ALG,
+	F_RSA |				F_B64U | F_M | LWS_GENCRYPTO_RSA_KEYEL_E,
+	F_RSA |				F_B64U | F_M | LWS_GENCRYPTO_RSA_KEYEL_N,
+	F_RSA | F_EC |			F_B64U |       LWS_GENCRYPTO_RSA_KEYEL_D,
+	F_RSA |				F_B64U |       LWS_GENCRYPTO_RSA_KEYEL_P,
+	F_RSA |				F_B64U |       LWS_GENCRYPTO_RSA_KEYEL_Q,
+	F_RSA |				F_B64U |       LWS_GENCRYPTO_RSA_KEYEL_DP,
+	F_RSA |				F_B64U |       LWS_GENCRYPTO_RSA_KEYEL_DQ,
+	F_RSA |				F_B64U |       LWS_GENCRYPTO_RSA_KEYEL_QI,
+
+	F_RSA | F_EC | F_OCT | F_META |		 F_M | JWK_META_KTY,
+		       F_OCT |		F_B64U | F_M | LWS_GENCRYPTO_OCT_KEYEL_K,
+
+		F_EC |				 F_M | LWS_GENCRYPTO_EC_KEYEL_CRV,
+		F_EC |			F_B64U | F_M | LWS_GENCRYPTO_EC_KEYEL_X,
+		F_EC |			F_B64U | F_M | LWS_GENCRYPTO_EC_KEYEL_Y,
+
+	F_RSA | F_EC | F_OCT | F_META |		       JWK_META_KID,
+	F_RSA | F_EC | F_OCT | F_META |		       JWK_META_USE,
+
+	F_RSA | F_EC | F_OCT | F_META |		       JWK_META_KEY_OPS,
+	F_RSA | F_EC | F_OCT | F_META | F_B64 |	       JWK_META_X5C,
+	F_RSA | F_EC | F_OCT | F_META |		       JWK_META_ALG,
 };
 
 static const char *meta_names[] = {
 	"kty", "kid", "use", "key_ops", "x5c", "alg"
 };
+
+struct lexico {
+	const char *name;
+	int idx;
+	char meta;
+} lexico_ec[] =  {
+	{ "alg",	JWK_META_ALG,			1 },
+	{ "crv",	LWS_GENCRYPTO_EC_KEYEL_CRV,	0 },
+	{ "d",		LWS_GENCRYPTO_EC_KEYEL_D,	2 | 0 },
+	{ "key_ops",	JWK_META_KEY_OPS,		1 },
+	{ "kid",	JWK_META_KID,			1 },
+	{ "kty",	JWK_META_KTY,			1 },
+	{ "use",	JWK_META_USE,			1 },
+	{ "x",		LWS_GENCRYPTO_EC_KEYEL_X,	0 },
+	{ "x5c",	JWK_META_X5C,			1 },
+	{ "y",		LWS_GENCRYPTO_EC_KEYEL_Y,	0 }
+}, lexico_oct[] =  {
+	{ "alg",	JWK_META_ALG,			1 },
+	{ "k",		LWS_GENCRYPTO_OCT_KEYEL_K,	0 },
+	{ "key_ops",	JWK_META_KEY_OPS,		1 },
+	{ "kid",	JWK_META_KID,			1 },
+	{ "kty",	JWK_META_KTY,			1 },
+	{ "use",	JWK_META_USE,			1 },
+	{ "x5c",	JWK_META_X5C,			1 }
+}, lexico_rsa[] =  {
+	{ "alg",	JWK_META_ALG,			1 },
+	{ "d",		LWS_GENCRYPTO_RSA_KEYEL_D,	2 | 0 },
+	{ "dp",		LWS_GENCRYPTO_RSA_KEYEL_DP,	2 | 0 },
+	{ "dq",		LWS_GENCRYPTO_RSA_KEYEL_DQ,	2 | 0 },
+	{ "e",		LWS_GENCRYPTO_RSA_KEYEL_E,	0 },
+	{ "key_ops",	JWK_META_KEY_OPS,		1 },
+	{ "kid",	JWK_META_KID,			1 },
+	{ "kty",	JWK_META_KTY,			1 },
+	{ "n",		LWS_GENCRYPTO_RSA_KEYEL_N,	0 },
+	{ "p",		LWS_GENCRYPTO_RSA_KEYEL_P,	2 | 0 },
+	{ "q",		LWS_GENCRYPTO_RSA_KEYEL_Q,	2 | 0 },
+	{ "qi",		LWS_GENCRYPTO_RSA_KEYEL_QI,	2 | 0 },
+	{ "use",	JWK_META_USE,			1 },
+	{ "x5c",	JWK_META_X5C,			1 }
+};
+
 static const char meta_b64[] = { 0, 0, 0, 0, 1, 0 };
 
 static const char *oct_names[] = {
@@ -117,72 +160,65 @@ static const char *ec_names[] = {
 };
 static const char ec_b64[] = { 0, 1, 1, 1 };
 
-struct cb_lws_jwk {
-	struct lws_jwk *s;
-	char *b64;
-	lws_jwk_key_import_callback per_key_cb;
-	void *user;
-	int b64max;
-	int pos;
-	unsigned short possible;
-};
-
 LWS_VISIBLE int
-lws_jwk_dump(struct lws_jwk *s)
+lws_jwk_dump(struct lws_jwk *jwk)
 {
 	const char **enames, *b64;
 	int elems;
 	int n;
 
-	switch (s->kty) {
+	(void)enames;
+	(void)meta_names;
+
+	switch (jwk->kty) {
 	default:
-	case LWS_GENCRYPTO_KYT_UNKNOWN:
-		lwsl_err("%s: jwk %p: unknown type\n", __func__, s);
+	case LWS_GENCRYPTO_KTY_UNKNOWN:
+		lwsl_err("%s: jwk %p: unknown type\n", __func__, jwk);
 
 		return 1;
-	case LWS_GENCRYPTO_KYT_OCT:
+	case LWS_GENCRYPTO_KTY_OCT:
 		elems = LWS_GENCRYPTO_OCT_KEYEL_COUNT;
 		enames = oct_names;
 		b64 = oct_b64;
 		break;
-	case LWS_GENCRYPTO_KYT_RSA:
+	case LWS_GENCRYPTO_KTY_RSA:
 		elems = LWS_GENCRYPTO_RSA_KEYEL_COUNT;
 		enames = rsa_names;
 		b64 = rsa_b64;
 		break;
-	case LWS_GENCRYPTO_KYT_EC:
+	case LWS_GENCRYPTO_KTY_EC:
 		elems = LWS_GENCRYPTO_EC_KEYEL_COUNT;
 		enames = ec_names;
 		b64 = ec_b64;
 		break;
 	}
 
-	lwsl_info("%s: jwk %p\n", __func__, s);
+	lwsl_info("%s: jwk %p\n", __func__, jwk);
 
 	for (n = 0; n < LWS_COUNT_JWK_ELEMENTS; n++) {
-		if (s->meta[n].buf && meta_b64[n]) {
+		if (jwk->meta[n].buf && meta_b64[n]) {
 			lwsl_info("  meta: %s\n", meta_names[n]);
-			lwsl_hexdump_info(s->meta[n].buf, s->meta[n].len);
+			lwsl_hexdump_info(jwk->meta[n].buf, jwk->meta[n].len);
 		}
-		if (s->meta[n].buf && !meta_b64[n])
+		if (jwk->meta[n].buf && !meta_b64[n])
 			lwsl_info("  meta: %s: '%s'\n", meta_names[n],
-				    s->meta[n].buf);
+					jwk->meta[n].buf);
 	}
 
 	for (n = 0; n < elems; n++) {
-		if (s->e[n].buf && b64[n]) {
+		if (jwk->e[n].buf && b64[n]) {
 			lwsl_info("  e: %s\n", enames[n]);
-			lwsl_hexdump_info(s->e[n].buf, s->e[n].len);
+			lwsl_hexdump_info(jwk->e[n].buf, jwk->e[n].len);
 		}
-		if (s->e[n].buf && !b64[n])
-			lwsl_info("  e: %s: '%s'\n", enames[n], s->e[n].buf);
+		if (jwk->e[n].buf && !b64[n])
+			lwsl_info("  e: %s: '%s'\n", enames[n], jwk->e[n].buf);
 	}
 
 	return 0;
 }
 
 static int
-_lws_jwk_set_element_jwk(struct lws_gencrypto_keyelem *e, char *in, int len)
+_lws_jwk_set_el_jwk(struct lws_gencrypto_keyelem *e, char *in, int len)
 {
 	e->buf = lws_malloc(len + 1, "jwk");
 	if (!e->buf)
@@ -196,9 +232,9 @@ _lws_jwk_set_element_jwk(struct lws_gencrypto_keyelem *e, char *in, int len)
 }
 
 static int
-_lws_jwk_set_element_jwk_b64(struct lws_gencrypto_keyelem *e, char *in, int len)
+_lws_jwk_set_el_jwk_b64(struct lws_gencrypto_keyelem *e, char *in, int len)
 {
-	int dec_size = ((len * 3) / 4) + 4, n;
+	int dec_size = lws_base64_size(len), n;
 
 	e->buf = lws_malloc(dec_size, "jwk");
 	if (!e->buf)
@@ -215,9 +251,9 @@ _lws_jwk_set_element_jwk_b64(struct lws_gencrypto_keyelem *e, char *in, int len)
 }
 
 static int
-_lws_jwk_set_element_jwk_b64u(struct lws_gencrypto_keyelem *e, char *in, int len)
+_lws_jwk_set_el_jwk_b64u(struct lws_gencrypto_keyelem *e, char *in, int len)
 {
-	int dec_size = ((len * 3) / 4) + 4, n;
+	int dec_size = lws_base64_size(len), n;
 
 	e->buf = lws_malloc(dec_size, "jwk");
 	if (!e->buf)
@@ -239,26 +275,29 @@ lws_jwk_destroy_elements(struct lws_gencrypto_keyelem *el, int m)
 	int n;
 
 	for (n = 0; n < m; n++)
-		if (el[n].buf)
+		if (el[n].buf) {
+			/* wipe all key material when it goes out of scope */
+			lws_explicit_bzero(el[n].buf, el[n].len);
 			lws_free_set_NULL(el[n].buf);
+		}
 }
 
 LWS_VISIBLE void
-lws_jwk_destroy(struct lws_jwk *s)
+lws_jwk_destroy(struct lws_jwk *jwk)
 {
-	lws_jwk_destroy_elements(s->e, LWS_ARRAY_SIZE(s->e));
-	lws_jwk_destroy_elements(s->meta, LWS_ARRAY_SIZE(s->meta));
+	lws_jwk_destroy_elements(jwk->e, LWS_ARRAY_SIZE(jwk->e));
+	lws_jwk_destroy_elements(jwk->meta, LWS_ARRAY_SIZE(jwk->meta));
 }
 
 static signed char
 cb_jwk(struct lejp_ctx *ctx, char reason)
 {
-	struct cb_lws_jwk *cbs = (struct cb_lws_jwk *)ctx->user;
-	struct lws_jwk *s = cbs->s;
-	unsigned int idx, poss;
+	struct lws_jwk_parse_state *jps = (struct lws_jwk_parse_state *)ctx->user;
+	struct lws_jwk *jwk = jps->jwk;
+	unsigned int idx, poss, n;
 
 	if (reason == LEJPCB_VAL_STR_START)
-		cbs->pos = 0;
+		jps->pos = 0;
 
 	if (reason == LEJPCB_OBJECT_START && ctx->path_match == 0 + 1)
 		/*
@@ -269,12 +308,12 @@ cb_jwk(struct lejp_ctx *ctx, char reason)
 		 * ACME specifies the keys must be ordered in lexographic
 		 * order - where kty is not first.
 		 */
-		cbs->possible = F_RSA | F_EC | F_OCT;
+		jps->possible = F_RSA | F_EC | F_OCT;
 
 	if (reason == LEJPCB_OBJECT_END && ctx->path_match == 0 + 1) {
 		/* we completed parsing a key */
-		if (cbs->per_key_cb && cbs->possible) {
-			if (cbs->per_key_cb(cbs->s, cbs->user)) {
+		if (jps->per_key_cb && jps->possible) {
+			if (jps->per_key_cb(jps->jwk, jps->user)) {
 
 				lwsl_notice("%s: user cb halts import\n",
 					    __func__);
@@ -283,9 +322,97 @@ cb_jwk(struct lejp_ctx *ctx, char reason)
 			}
 
 			/* clear it down */
-			lws_jwk_destroy(cbs->s);
-			cbs->possible = 0;
+			lws_jwk_destroy(jps->jwk);
+			jps->possible = 0;
+		}
+	}
+
+	if (reason == LEJPCB_COMPLETE) {
+
+		/*
+		 * Now we saw the whole jwk and know the key type, let'jwk insist
+		 * that as a whole, it must be consistent and complete.
+		 *
+		 * The tracking of ->possible bits from even before we know the
+		 * kty already makes certain we cannot have key element members
+		 * defined that are inconsistent with the key type.
+		 */
+
+		for (n = 0; n < LWS_ARRAY_SIZE(tok_map); n++)
+			/*
+			 * All mandataory elements for the key type
+			 * must be present
+			 */
+			if ((tok_map[n] & jps->possible) && (
+			    ((tok_map[n] & (F_M | F_META)) == (F_M | F_META) &&
+			     !jwk->meta[tok_map[n] & 0xff].buf) ||
+			    ((tok_map[n] & (F_M | F_META)) == F_M &&
+			     !jwk->e[tok_map[n] & 0xff].buf))) {
+				lwsl_notice("%s: missing %s\n", __func__,
+					    jwk_tok[n]);
+					return -3;
+				}
+
+		/*
+		 * When the key may be public or public + private, ensure the
+		 * intra-key members related to that are consistent.
+		 *
+		 * Only RSA keys need extra care, since EC keys are already
+		 * confirmed by making CRV, X and Y mandatory and only D
+		 * (the singular private part) optional.  For RSA, N and E are
+		 * also already known to be present using mandatory checking.
+		 */
+
+		/*
+		 * If a private key, it must have all D, P and Q.  Public key
+		 * must have none of them.
+		 */
+		if (jwk->kty == LWS_GENCRYPTO_KTY_RSA &&
+		    !(((!jwk->e[LWS_GENCRYPTO_RSA_KEYEL_D].buf) &&
+		      (!jwk->e[LWS_GENCRYPTO_RSA_KEYEL_P].buf) &&
+		      (!jwk->e[LWS_GENCRYPTO_RSA_KEYEL_Q].buf)) ||
+		      (jwk->e[LWS_GENCRYPTO_RSA_KEYEL_D].buf &&
+		       jwk->e[LWS_GENCRYPTO_RSA_KEYEL_P].buf &&
+		       jwk->e[LWS_GENCRYPTO_RSA_KEYEL_Q].buf))
+		      ) {
+			lwsl_notice("%s: RSA requires D, P and Q for private\n",
+				    __func__);
+			return -3;
+		}
+
+		/*
+		 * If the precomputed private key terms appear, they must all
+		 * appear together.
+		 */
+		if (jwk->kty == LWS_GENCRYPTO_KTY_RSA &&
+		    !(((!jwk->e[LWS_GENCRYPTO_RSA_KEYEL_DP].buf) &&
+		      (!jwk->e[LWS_GENCRYPTO_RSA_KEYEL_DQ].buf) &&
+		      (!jwk->e[LWS_GENCRYPTO_RSA_KEYEL_QI].buf)) ||
+		      (jwk->e[LWS_GENCRYPTO_RSA_KEYEL_DP].buf &&
+		       jwk->e[LWS_GENCRYPTO_RSA_KEYEL_DQ].buf &&
+		       jwk->e[LWS_GENCRYPTO_RSA_KEYEL_QI].buf))
+		      ) {
+			lwsl_notice("%s: RSA DP, DQ, QI must all appear "
+				    "or none\n", __func__);
+			return -3;
 		}
+
+		/*
+		 * The precomputed private key terms must not appear without
+		 * the private key itself also appearing.
+		 */
+		if (jwk->kty == LWS_GENCRYPTO_KTY_RSA &&
+		    !jwk->e[LWS_GENCRYPTO_RSA_KEYEL_D].buf &&
+		     jwk->e[LWS_GENCRYPTO_RSA_KEYEL_DQ].buf) {
+			lwsl_notice("%s: RSA DP, DQ, QI can appear only with "
+				    "private key\n", __func__);
+			return -3;
+		}
+
+		if ((jwk->kty == LWS_GENCRYPTO_KTY_RSA ||
+		     jwk->kty == LWS_GENCRYPTO_KTY_EC) &&
+		    jwk->e[LWS_GENCRYPTO_RSA_KEYEL_D].buf)
+		jwk->private_key = 1;
 	}
 
 	if (!(reason & LEJP_FLAG_CB_IS_VALUE) || !ctx->path_match)
@@ -301,43 +428,44 @@ cb_jwk(struct lejp_ctx *ctx, char reason)
 	switch (idx) {
 	/* note: kty is not necessarily first... we have to keep track of
 	 * what could match given which element names have already been
-	 * seen.  Once kty comes, we confirm it's still possible (ie, it's
-	 * not trying to tell us that it's RSA when we saw a "crv"
-	 * already) and then reduce the possibilities to just the one that
+	 * seen.  Once kty comes, we confirm it'jwk still possible (ie, it'jwk
+	 * not trying to tell us that it'jwk RSA now when we saw a "crv"
+	 * earlier) and then reduce the possibilities to just the one that
 	 * kty told. */
-	case F_RSA | F_EC | F_OCT | F_META | JWK_META_KTY:
+	case F_RSA | F_EC | F_OCT | F_META | F_M | JWK_META_KTY:
 
-		if (!strcmp(ctx->buf, "oct")) {
-			if (!(cbs->possible & F_OCT))
+		if (ctx->npos == 3 && !strncmp(ctx->buf, "oct", 3)) {
+			if (!(jps->possible & F_OCT))
 				goto elements_mismatch;
-			s->kty = LWS_GENCRYPTO_KYT_OCT;
-			cbs->possible = F_OCT;
+			jwk->kty = LWS_GENCRYPTO_KTY_OCT;
+			jps->possible = F_OCT;
 			goto cont;
 		}
-		if (!strcmp(ctx->buf, "RSA")) {
-			if (!(cbs->possible & F_RSA))
+		if (ctx->npos == 3 && !strncmp(ctx->buf, "RSA", 3)) {
+			if (!(jps->possible & F_RSA))
 				goto elements_mismatch;
-			s->kty = LWS_GENCRYPTO_KYT_RSA;
-			cbs->possible = F_RSA;
+			jwk->kty = LWS_GENCRYPTO_KTY_RSA;
+			jps->possible = F_RSA;
 			goto cont;
 		}
-		if (!strcmp(ctx->buf, "EC")) {
-			if (!(cbs->possible & F_EC))
+		if (ctx->npos == 2 && !strncmp(ctx->buf, "EC", 2)) {
+			if (!(jps->possible & F_EC))
 				goto elements_mismatch;
-			s->kty = LWS_GENCRYPTO_KYT_EC;
-			cbs->possible = F_EC;
+			jwk->kty = LWS_GENCRYPTO_KTY_EC;
+			jps->possible = F_EC;
 			goto cont;
 		}
-		lwsl_err("%s: Unknown KTY '%s'\n", __func__, ctx->buf);
+		lwsl_err("%s: Unknown KTY '%.*s'\n", __func__, ctx->npos,
+			  ctx->buf);
 		return -1;
 
 	default:
 cont:
-		if (cbs->pos + ctx->npos >= cbs->b64max)
+		if (jps->pos + ctx->npos >= (int)sizeof(jps->b64))
 			goto bail;
 
-		memcpy(cbs->b64 + cbs->pos, ctx->buf, ctx->npos);
-		cbs->pos += ctx->npos;
+		memcpy(jps->b64 + jps->pos, ctx->buf, ctx->npos);
+		jps->pos += ctx->npos;
 
 		if (reason == LEJPCB_VAL_STR_CHUNK)
 			return 0;
@@ -345,13 +473,13 @@ cont:
 		/* chunking has been collated */
 
 		poss = idx & (F_RSA | F_EC | F_OCT);
-		cbs->possible &= poss;
-		if (!cbs->possible)
+		jps->possible &= poss;
+		if (!jps->possible)
 			goto elements_mismatch;
 
 		if (idx & F_META) {
-			if (_lws_jwk_set_element_jwk(&s->meta[idx & 0x7f],
-						     cbs->b64, cbs->pos) < 0)
+			if (_lws_jwk_set_el_jwk(&jwk->meta[idx & 0x7f],
+						jps->b64, jps->pos) < 0)
 				goto bail;
 
 			break;
@@ -359,24 +487,30 @@ cont:
 
 		if (idx & F_B64U) {
 			/* key data... do the base64 decode as needed */
-			if (_lws_jwk_set_element_jwk_b64u(&s->e[idx & 0x7f],
-							  cbs->b64, cbs->pos)
-								< 0)
+			if (_lws_jwk_set_el_jwk_b64u(&jwk->e[idx & 0x7f],
+						     jps->b64, jps->pos) < 0)
+				goto bail;
+
+			if (jwk->e[idx & 0x7f].len >
+					LWS_JWE_LIMIT_KEY_ELEMENT_BYTES) {
+				lwsl_notice("%s: oversize keydata\n", __func__);
 				goto bail;
+			}
+
 			return 0;
 		}
 
 		if (idx & F_B64) {
+
 			/* cert data... do non-urlcoded base64 decode */
-			if (_lws_jwk_set_element_jwk_b64(&s->e[idx & 0x7f],
-							 cbs->b64, cbs->pos)
-								< 0)
+			if (_lws_jwk_set_el_jwk_b64(&jwk->e[idx & 0x7f],
+						    jps->b64, jps->pos) < 0)
 				goto bail;
 			return 0;
 		}
 
-			if (_lws_jwk_set_element_jwk(&s->e[idx & 0x7f],
-						     cbs->b64, cbs->pos) < 0)
+			if (_lws_jwk_set_el_jwk(&jwk->e[idx & 0x7f],
+						jps->b64, jps->pos) < 0)
 				goto bail;
 		break;
 	}
@@ -392,140 +526,265 @@ bail:
 	return -1;
 }
 
+void
+lws_jwk_init_jps(struct lejp_ctx *jctx, struct lws_jwk_parse_state *jps,
+		 struct lws_jwk *jwk, lws_jwk_key_import_callback cb,
+		 void *user)
+{
+	if (jwk)
+		memset(jwk, 0, sizeof(*jwk));
+
+	jps->jwk = jwk;
+	jps->possible = F_RSA | F_EC | F_OCT;
+	jps->per_key_cb = cb;
+	jps->user = user;
+	jps->pos = 0;
+
+	lejp_construct(jctx, cb_jwk, jps, cb ? jwk_outer_tok: jwk_tok,
+		       LWS_ARRAY_SIZE(jwk_tok));
+}
+
 LWS_VISIBLE int
-lws_jwk_import(struct lws_jwk *s, lws_jwk_key_import_callback cb, void *user,
+lws_jwk_generate(struct lws_context *context, struct lws_jwk *jwk,
+	       enum lws_gencrypto_kty kty, int bits, const char *curve)
+{
+	int n;
+
+	memset(jwk, 0, sizeof(*jwk));
+
+	jwk->kty = kty;
+	jwk->private_key = 1;
+
+	switch (kty) {
+	case LWS_GENCRYPTO_KTY_RSA:
+	{
+		struct lws_genrsa_ctx ctx;
+
+		lwsl_notice("%s: generating %d bit RSA key\n", __func__, bits);
+		n = lws_genrsa_new_keypair(context, &ctx, LGRSAM_PKCS1_1_5,
+					    jwk->e, bits);
+		lws_genrsa_destroy(&ctx);
+		if (n) {
+			lwsl_err("%s: problem generating RSA key\n", __func__);
+			return 1;
+		}
+	}
+		break;
+	case LWS_GENCRYPTO_KTY_OCT:
+		n = lws_gencrypto_bits_to_bytes(bits);
+		jwk->e[LWS_GENCRYPTO_OCT_KEYEL_K].buf = lws_malloc(n, "oct");
+		jwk->e[LWS_GENCRYPTO_OCT_KEYEL_K].len = n;
+		if (lws_get_random(context,
+				 jwk->e[LWS_GENCRYPTO_OCT_KEYEL_K].buf, n) != n) {
+			lwsl_err("%s: problem getting random\n", __func__);
+			return 1;
+		}
+		break;
+	case LWS_GENCRYPTO_KTY_EC:
+	{
+		struct lws_genec_ctx ctx;
+
+		if (!curve) {
+			lwsl_err("%s: must have a named curve\n", __func__);
+
+			return 1;
+		}
+
+		if (lws_genecdsa_create(&ctx, context, NULL))
+			return 1;
+
+		lwsl_notice("%s: generating ECDSA key on curve %s\n", __func__,
+				curve);
+
+		n = lws_genecdsa_new_keypair(&ctx, curve, jwk->e);
+		lws_genec_destroy(&ctx);
+		if (n) {
+			lwsl_err("%s: problem generating ECDSA key\n", __func__);
+			return 1;
+		}
+	}
+		break;
+
+	case LWS_GENCRYPTO_KTY_UNKNOWN:
+	default:
+		lwsl_err("%s: unknown kty\n", __func__);
+		return 1;
+	}
+
+	return 0;
+}
+
+LWS_VISIBLE int
+lws_jwk_import(struct lws_jwk *jwk, lws_jwk_key_import_callback cb, void *user,
 	       const char *in, size_t len)
 {
 	struct lejp_ctx jctx;
-	struct cb_lws_jwk cbs;
-	const int b64max = (((8192 / 8) * 4) / 3) + 1;  /* enough for 8K key */
-	const char * const *tok = jwk_outer_tok;
-	char b64[b64max];
+	struct lws_jwk_parse_state jps;
 	int m;
 
-	memset(s, 0, sizeof(*s));
-	cbs.s = s;
-	cbs.b64 = b64;
-	cbs.b64max = b64max;
-	cbs.pos = 0;
-	cbs.per_key_cb = cb;
-	cbs.user = user;
-	cbs.possible = F_RSA | F_EC | F_OCT;
+	lws_jwk_init_jps(&jctx, &jps, jwk, cb, user);
 
-	if (cb == NULL)
-		tok = jwk_tok;
-
-	lejp_construct(&jctx, cb_jwk, &cbs, tok, LWS_ARRAY_SIZE(jwk_tok));
 	m = (int)(signed char)lejp_parse(&jctx, (uint8_t *)in, len);
 	lejp_destruct(&jctx);
 
 	if (m < 0) {
 		lwsl_notice("%s: parse got %d\n", __func__, m);
-
+		lws_jwk_destroy(jwk);
 		return -1;
 	}
 
-	if (s->kty == LWS_GENCRYPTO_KYT_UNKNOWN) {
+	switch (jwk->kty) {
+	case LWS_GENCRYPTO_KTY_UNKNOWN:
 		lwsl_notice("%s: missing or unknown kyt\n", __func__);
+		lws_jwk_destroy(jwk);
 		return -1;
+	default:
+		break;
 	}
 
 	return 0;
 }
 
+
 LWS_VISIBLE int
-lws_jwk_export(struct lws_jwk *s, int private, char *p, size_t len)
+lws_jwk_export(struct lws_jwk *jwk, int private, char *p, size_t len)
 {
 	char *start = p, *end = &p[len - 1];
-	int n, limit = LWS_COUNT_JWK_ELEMENTS;
+	int n, m, limit, first = 1, asym = 0;
+	struct lexico *l;
 
 	/* RFC7638 lexicographic order requires
 	 *  RSA: e -> kty -> n
 	 *  oct: k -> kty
+	 *
+	 * ie, meta and key data elements appear interleaved in name alpha order
 	 */
 
 	p += lws_snprintf(p, end - p, "{");
 
-	switch (s->kty) {
-
-	case LWS_GENCRYPTO_KYT_OCT:
-		if (!s->e[LWS_GENCRYPTO_OCT_KEYEL_K].buf)
-			return -1;
-
-		p += lws_snprintf(p, end - p, "\"k\":\"");
-		n = lws_jws_base64_enc((const char *)s->e[LWS_GENCRYPTO_OCT_KEYEL_K].buf,
-				s->e[LWS_GENCRYPTO_OCT_KEYEL_K].len, p, end - p - 4);
-		if (n < 0) {
-			lwsl_notice("%s: enc failed\n", __func__);
-			return -1;
-		}
-		p += n;
-
-		p += lws_snprintf(p, end - p, "\",\"kty\":\"%s\"}",
-				  kyt_names[s->kty]);
-
-		return p - start;
+	switch (jwk->kty) {
+	case LWS_GENCRYPTO_KTY_OCT:
+		l = lexico_oct;
+		limit = LWS_ARRAY_SIZE(lexico_oct);
+		break;
+	case LWS_GENCRYPTO_KTY_RSA:
+		l = lexico_rsa;
+		limit = LWS_ARRAY_SIZE(lexico_rsa);
+		asym = 1;
+		break;
+	case LWS_GENCRYPTO_KTY_EC:
+		l = lexico_ec;
+		limit = LWS_ARRAY_SIZE(lexico_ec);
+		asym = 1;
+		break;
+	default:
+		return -1;
+	}
 
-	case LWS_GENCRYPTO_KYT_RSA:
-		if (!s->e[LWS_GENCRYPTO_RSA_KEYEL_E].buf ||
-		    !s->e[LWS_GENCRYPTO_RSA_KEYEL_N].buf ||
-		    (private && (!s->e[LWS_GENCRYPTO_RSA_KEYEL_D].buf ||
-				 !s->e[LWS_GENCRYPTO_RSA_KEYEL_P].buf ||
-				 !s->e[LWS_GENCRYPTO_RSA_KEYEL_Q].buf))
-		) {
-			lwsl_notice("%s: not enough elements filled\n",
-				    __func__);
-			return -1;
+	for (n = 0; n < limit; n++) {
+		const char *q, *q_end;
+		char tok[12];
+		int pos = 0, f = 1;
+
+		if ((l->meta & 1) && (jwk->meta[l->idx].buf ||
+				      l->idx == (int)JWK_META_KTY)) {
+
+			switch (l->idx) {
+			case JWK_META_KTY:
+				if (!first)
+					*p++ = ',';
+				first = 0;
+				p += lws_snprintf(p, end - p, "\"%s\":\"%s\"",
+						  l->name, kty_names[jwk->kty]);
+				break;
+			case JWK_META_KEY_OPS:
+				if (!first)
+					*p++ = ',';
+				first = 0;
+				q = (const char *)jwk->meta[l->idx].buf;
+				q_end = q + jwk->meta[l->idx].len;
+
+				p += lws_snprintf(p, end - p,
+						  "\"%s\":[", l->name);
+				/*
+				 * For the public version, usages that
+				 * require the private part must be
+				 * snipped
+				 */
+
+				while (q < q_end) {
+					if (*q != ' ' && pos < (int)sizeof(tok) - 1) {
+						tok[pos++] = *q++;
+						if (q != q_end)
+							continue;
+					}
+					tok[pos] = '\0';
+					pos = 0;
+					if (private || !asym ||
+					    (strcmp(tok, "sign") &&
+					    strcmp(tok, "encrypt"))) {
+						if (!f)
+							*p++ = ',';
+						f = 0;
+						p += lws_snprintf(p, end - p,
+							"\"%s\"", tok);
+					}
+					q++;
+				}
+
+				*p++ = ']';
+
+				break;
+
+			default:
+				/* both sig and enc require asym private key */
+				if (!private && asym && l->idx == (int)JWK_META_USE)
+					break;
+				if (!first)
+					*p++ = ',';
+				first = 0;
+				p += lws_snprintf(p, end - p, "\"%s\":\"%.*s\"",
+						  l->name, jwk->meta[l->idx].len,
+						  jwk->meta[l->idx].buf);
+				break;
+			}
 		}
 
-		if (!private)
-			limit = LWS_GENCRYPTO_RSA_KEYEL_N + 1;
-
-		for (n = 0; n < limit; n++) {
-			int m;
-
-			if (!s->e[n].buf)
-				continue;
-			lwsl_info("%d: len %d\n", n, s->e[n].len);
-
-			if (n)
-				p += lws_snprintf(p, end - p, ",");
-			p += lws_snprintf(p, end - p, "\"%s\":\"", jwk_tok[n]);
-			m = lws_jws_base64_enc((const char *)s->e[n].buf,
-						      s->e[n].len, p,
-						      end - p - 4);
+		if ((!(l->meta & 1)) && jwk->e[l->idx].buf &&
+		    (private || !(l->meta & 2))) {
+			if (!first)
+				*p++ = ',';
+			first = 0;
+
+			p += lws_snprintf(p, end - p, "\"%s\":\"", l->name);
+
+			if (jwk->kty == LWS_GENCRYPTO_KTY_EC &&
+			    l->idx == (int)LWS_GENCRYPTO_EC_KEYEL_CRV)
+				m = lws_snprintf(p, end - p, "%.*s",
+					jwk->e[l->idx].len,
+					(const char *)jwk->e[l->idx].buf);
+			else
+				m = lws_jws_base64_enc(
+					(const char *)jwk->e[l->idx].buf,
+					jwk->e[l->idx].len, p, end - p - 4);
 			if (m < 0) {
-				lwsl_notice("%s: enc fail inlen %d outlen %d\n",
-						__func__, (int)s->e[n].len,
-						lws_ptr_diff(end, p) - 4);
+				lwsl_notice("%s: enc failed\n", __func__);
 				return -1;
 			}
 			p += m;
-			*p++ = '\"';
-
-			if (!n) /* RFC7638 lexicographic order */
-				p += lws_snprintf(p, end - p, ",\"kty\":\"%s\"",
-						  kyt_names[s->kty]);
+			p += lws_snprintf(p, end - p, "\"");
 		}
 
-		p += lws_snprintf(p, end - p, "}");
-
-		return p - start;
-
-	case LWS_GENCRYPTO_KYT_EC:
-		return p - start;
-
-	default:
-		break;
+		l++;
 	}
 
-	lwsl_err("%s: unknown key type %d\n", __func__, s->kty);
+	p += lws_snprintf(p, end - p, "}\n");
 
-	return -1;
+	return p - start;
 }
 
 LWS_VISIBLE int
-lws_jwk_rfc7638_fingerprint(struct lws_jwk *s, char *digest32)
+lws_jwk_rfc7638_fingerprint(struct lws_jwk *jwk, char *digest32)
 {
 	struct lws_genhash_ctx hash_ctx;
 	int tmpsize = 2536, n;
@@ -533,7 +792,7 @@ lws_jwk_rfc7638_fingerprint(struct lws_jwk *s, char *digest32)
 
 	tmp = lws_malloc(tmpsize, "rfc7638 tmp");
 
-	n = lws_jwk_export(s, 0, tmp, tmpsize);
+	n = lws_jwk_export(jwk, 0, tmp, tmpsize);
 	if (n < 0)
 		goto bail;
 
@@ -559,7 +818,20 @@ bail:
 }
 
 LWS_VISIBLE int
-lws_jwk_load(struct lws_jwk *s, const char *filename,
+lws_jwk_strdup_meta(struct lws_jwk *jwk, enum enum_jwk_meta_tok idx,
+		    const char *in, int len)
+{
+	jwk->meta[idx].buf = lws_malloc(len, __func__);
+	if (!jwk->meta[idx].buf)
+		return 1;
+	jwk->meta[idx].len = len;
+	memcpy(jwk->meta[idx].buf, in, len);
+
+	return 0;
+}
+
+LWS_VISIBLE int
+lws_jwk_load(struct lws_jwk *jwk, const char *filename,
 	     lws_jwk_key_import_callback cb, void *user)
 {
 	int buflen = 4096;
@@ -573,7 +845,7 @@ lws_jwk_load(struct lws_jwk *s, const char *filename,
 	if (n < 0)
 		goto bail;
 
-	n = lws_jwk_import(s, cb, user, buf, n);
+	n = lws_jwk_import(jwk, cb, user, buf, n);
 	lws_free(buf);
 
 	return n;
@@ -584,7 +856,7 @@ bail:
 }
 
 LWS_VISIBLE int
-lws_jwk_save(struct lws_jwk *s, const char *filename)
+lws_jwk_save(struct lws_jwk *jwk, const char *filename)
 {
 	int buflen = 4096;
 	char *buf = lws_malloc(buflen, "jwk-save");
@@ -593,7 +865,7 @@ lws_jwk_save(struct lws_jwk *s, const char *filename)
 	if (!buf)
 		return -1;
 
-	n = lws_jwk_export(s, 1, buf, buflen);
+	n = lws_jwk_export(jwk, 1, buf, buflen);
 	if (n < 0)
 		goto bail;
 
diff --git a/lib/jose/jws/jose.c b/lib/jose/jws/jose.c
index a7201432..5fb51b71 100644
--- a/lib/jose/jws/jose.c
+++ b/lib/jose/jws/jose.c
@@ -23,6 +23,7 @@
  */
 
 #include "core/private.h"
+#include "jose/private.h"
 
 #include <stdint.h>
 
@@ -54,8 +55,11 @@ static const char * const jws_jose[] = {
 };
 
 struct jose_cb_args {
-	const struct lws_jose_jwe_alg **args;
-	const struct lws_jose_jwe_alg **enc_args; /* null for jws case */
+	struct lws_jose *jose;
+	struct lejp_ctx jwk_jctx; /* fake lejp context used to parse epk */
+	struct lws_jwk_parse_state jps; /* fake jwk parse state */
+	char *temp;
+	int *temp_len;
 	int is_jwe;
 };
 
@@ -63,6 +67,28 @@ static signed char
 lws_jws_jose_cb(struct lejp_ctx *ctx, char reason)
 {
 	struct jose_cb_args *args = (struct jose_cb_args *)ctx->user;
+	int n;
+
+	/*
+	 * In JOSE JSON, the element "epk" contains a fully-formed JWK.
+	 *
+	 * For JOSE paths beginning "epk.", we pass them through to a JWK
+	 * LEJP subcontext to parse using the JWK parser directly.
+	 */
+
+	if (args->is_jwe && !strncmp(ctx->path, "epk.", 4)) {
+		memcpy(args->jwk_jctx.path, ctx->path + 4,
+		       sizeof(ctx->path) - 4);
+		memcpy(args->jwk_jctx.buf, ctx->buf, ctx->npos);
+		args->jwk_jctx.npos = ctx->npos;
+
+		if (!ctx->path_match)
+			args->jwk_jctx.path_match = 0;
+		lejp_check_path_match(&args->jwk_jctx);
+
+		if (args->jwk_jctx.path_match)
+			args->jwk_jctx.callback(&args->jwk_jctx, reason);
+	}
 
 	if (!(reason & LEJP_FLAG_CB_IS_VALUE) || !ctx->path_match)
 		return 0;
@@ -79,7 +105,8 @@ lws_jws_jose_cb(struct lejp_ctx *ctx, char reason)
 		 */
 
 		if (!args->is_jwe &&
-		    lws_gencrypto_jws_alg_to_definition(ctx->buf, args->args)) {
+		    lws_gencrypto_jws_alg_to_definition(ctx->buf,
+						        &args->jose->alg)) {
 			lwsl_notice("%s: unknown alg '%s'\n", __func__,
 				    ctx->buf);
 
@@ -87,8 +114,9 @@ lws_jws_jose_cb(struct lejp_ctx *ctx, char reason)
 		}
 
 		if (args->is_jwe &&
-		    lws_gencrypto_jwe_alg_to_definition(ctx->buf, args->args)) {
-			lwsl_notice("%s: unknown alg '%s'\n", __func__,
+		    lws_gencrypto_jwe_alg_to_definition(ctx->buf,
+						        &args->jose->alg)) {
+			lwsl_notice("%s: unknown JWE alg '%s'\n", __func__,
 				    ctx->buf);
 
 			return -1;
@@ -127,11 +155,13 @@ lws_jws_jose_cb(struct lejp_ctx *ctx, char reason)
 
 	/* past here, JWE only */
 
-	case LJJHI_ENC:	/* JWE only: Optional: string */
-		if (!args->is_jwe)
+	case LJJHI_ENC:	/* JWE only: Mandatory: string */
+		if (!args->is_jwe) {
+			lwsl_info("%s: enc in jws\n", __func__);
 			return -1;
+		}
 		if (lws_gencrypto_jwe_enc_to_definition(ctx->buf,
-							args->enc_args)) {
+							&args->jose->enc_alg)) {
 			lwsl_notice("%s: unknown enc '%s'\n", __func__,
 				    ctx->buf);
 
@@ -142,41 +172,45 @@ lws_jws_jose_cb(struct lejp_ctx *ctx, char reason)
 	case LJJHI_ZIP:	/* JWE only: Optional: string ("DEF" = deflate) */
 		if (!args->is_jwe)
 			return -1;
-		break;
+		goto append_string;
 
 	case LJJHI_EPK:	/* Additional arg for JWE ECDH */
 		if (!args->is_jwe)
 			return -1;
+		/* Ephemeral key... this JSON subsection is actually a JWK */
+		lwsl_err("LJJHI_EPK\n");
 		break;
 
 	case LJJHI_APU:	/* Additional arg for JWE ECDH */
 		if (!args->is_jwe)
 			return -1;
-		break;
+		/* Agreement Party U */
+		goto append_string;
 
 	case LJJHI_APV:	/* Additional arg for JWE ECDH */
 		if (!args->is_jwe)
 			return -1;
-		break;
+		/* Agreement Party V */
+		goto append_string;
 
 	case LJJHI_IV:  /* Additional arg for JWE AES */
 		if (!args->is_jwe)
 			return -1;
-		break;
+		goto append_string;
 
 	case LJJHI_TAG:	/* Additional arg for JWE AES */
 		if (!args->is_jwe)
 			return -1;
-		break;
+		goto append_string;
 
 	case LJJHI_P2S:	/* Additional arg for JWE PBES2 */
 		if (!args->is_jwe)
 			return -1;
-		break;
+		goto append_string;
 	case LJJHI_P2C:	/* Additional arg for JWE PBES2 */
 		if (!args->is_jwe)
 			return -1;
-		break;
+		goto append_string;
 
 	/* ignore what we don't understand */
 
@@ -185,21 +219,76 @@ lws_jws_jose_cb(struct lejp_ctx *ctx, char reason)
 	}
 
 	return 0;
+
+append_string:
+
+	if (*args->temp_len < ctx->npos) {
+		lwsl_err("%s: out of parsing space\n", __func__);
+		return -1;
+	}
+
+	if (!args->jose->e[ctx->path_match - 1].buf) {
+		args->jose->e[ctx->path_match - 1].buf = (uint8_t *)args->temp;
+		args->jose->e[ctx->path_match - 1].len = 0;
+	}
+
+	memcpy(args->temp, ctx->buf, ctx->npos);
+	args->temp += ctx->npos;
+	*args->temp_len -= ctx->npos;
+	args->jose->e[ctx->path_match - 1].len += ctx->npos;
+
+	if (reason == LEJPCB_VAL_STR_END) {
+		n = lws_b64_decode_string_len(
+			(const char *)args->jose->e[ctx->path_match - 1].buf,
+			args->jose->e[ctx->path_match - 1].len,
+			(char *)args->jose->e[ctx->path_match - 1].buf,
+			args->jose->e[ctx->path_match - 1].len + 1);
+		if (n < 0) {
+			lwsl_err("%s: b64 decode failed\n", __func__);
+			return -1;
+		}
+
+		args->temp -= args->jose->e[ctx->path_match - 1].len - n - 1;
+		*args->temp_len +=
+			args->jose->e[ctx->path_match - 1].len - n - 1;
+
+		args->jose->e[ctx->path_match - 1].len = n;
+	}
+
+	return 0;
+}
+
+void
+lws_jose_init(struct lws_jose *jose)
+{
+	memset(jose, 0, sizeof(*jose));
+}
+
+void
+lws_jose_destroy(struct lws_jose *jose)
+{
+//	lws_gencrypto_destroy_elements(jose->e, LWS_ARRAY_SIZE(jose->e));
+	lws_jwk_destroy(&jose->jwk_ephemeral);
 }
 
 
 static int
-lws_jose_parse(const struct lws_jose_jwe_alg **_args,
-	       const struct lws_jose_jwe_alg **enc_args,
-	       uint8_t *buf, int n, int is_jwe)
+lws_jose_parse(struct lws_jose *jose, const uint8_t *buf, int n,
+	       char *temp, int *temp_len, int is_jwe)
 {
 	struct lejp_ctx jctx;
 	struct jose_cb_args args;
 	int m;
 
-	args.args = _args;
-	args.enc_args = enc_args;
+	if (is_jwe)
+		/* prepare a context for JOSE epk ephemeral jwk parsing */
+		lws_jwk_init_jps(&args.jwk_jctx, &args.jps,
+				 &jose->jwk_ephemeral, NULL, NULL);
+
 	args.is_jwe = is_jwe;
+	args.temp = temp;
+	args.temp_len = temp_len;
+	args.jose = jose;
 
 	lejp_construct(&jctx, lws_jws_jose_cb, &args, jws_jose,
 		       LWS_ARRAY_SIZE(jws_jose));
@@ -207,7 +296,7 @@ lws_jose_parse(const struct lws_jose_jwe_alg **_args,
 	m = (int)(signed char)lejp_parse(&jctx, (uint8_t *)buf, n);
 	lejp_destruct(&jctx);
 	if (m < 0) {
-		lwsl_notice("parse got %d\n", m);
+		lwsl_notice("%s: parse %.*s returned %d\n", __func__, n, buf, m);
 		return -1;
 	}
 
@@ -215,16 +304,17 @@ lws_jose_parse(const struct lws_jose_jwe_alg **_args,
 }
 
 int
-lws_jws_parse_jose(const struct lws_jose_jwe_alg **args,
-		   uint8_t *buf, int n)
+lws_jws_parse_jose(struct lws_jose *jose,
+		   const char *buf, int len, char *temp, int *temp_len)
 {
-	return lws_jose_parse(args, NULL, buf, n, 0);
+	return lws_jose_parse(jose, (const uint8_t *)buf, len,
+			temp, temp_len, 0);
 }
 
 int
-lws_jwe_parse_jose(const struct lws_jose_jwe_alg **args,
-		   const struct lws_jose_jwe_alg **enc_args,
-		   uint8_t *buf, int n)
+lws_jwe_parse_jose(struct lws_jose *jose,
+		   const char *buf, int len, char *temp, int *temp_len)
 {
-	return lws_jose_parse(args, enc_args, buf, n, 1);
+	return lws_jose_parse(jose,
+			      (const uint8_t *)buf, len, temp, temp_len, 1);
 }
diff --git a/lib/jose/jws/jws.c b/lib/jose/jws/jws.c
index dae98fd1..fd4a4cb2 100644
--- a/lib/jose/jws/jws.c
+++ b/lib/jose/jws/jws.c
@@ -22,14 +22,129 @@
 #include "core/private.h"
 #include "private.h"
 
+LWS_VISIBLE void
+lws_jws_init(struct lws_jws *jws, struct lws_jwk *jwk,
+	     struct lws_context *context)
+{
+	memset(jws, 0, sizeof(*jws));
+	jws->context = context;
+	jws->jwk = jwk;
+}
+
+static void
+lws_jws_compact_map_bzero(struct lws_jws_compact_map *map)
+{
+	int n;
+
+	/* no need to scrub first jose header element (it can be canned then) */
+
+	for (n = 1; n < LWS_JWS_MAX_COMPACT_BLOCKS; n++)
+		if (map->buf[n])
+			lws_explicit_bzero((void *)map->buf[n], map->len[n]);
+}
+
+LWS_VISIBLE void
+lws_jws_destroy(struct lws_jws *jws)
+{
+	lws_jws_compact_map_bzero(&jws->map);
+	jws->jwk = NULL;
+}
+
+LWS_VISIBLE int
+lws_jws_dup_element(struct lws_jws_compact_map *map, int idx,
+		    char *temp, int *temp_len, const void *in, size_t in_len,
+		    size_t actual_alloc)
+{
+	if (!actual_alloc)
+		actual_alloc = in_len;
+
+	if ((size_t)*temp_len < actual_alloc)
+		return -1;
+
+	map->len[idx] = in_len;
+	map->buf[idx] = temp;
+
+	memcpy((void *)map->buf[idx], in, in_len);
+	*temp_len -= actual_alloc;
+
+	return 0;
+}
+
+LWS_VISIBLE int
+lws_jws_encode_b64_element(struct lws_jws_compact_map *map, int idx,
+			   char *temp, int *temp_len, const void *in,
+			   size_t in_len)
+{
+	int n;
+
+	if (*temp_len < lws_base64_size((int)in_len))
+		return -1;
+
+	n = lws_jws_base64_enc(in, in_len, temp, *temp_len);
+	if (n < 0)
+		return -1;
+
+	map->len[idx] = n;
+	map->buf[idx] = temp;
+
+	*temp_len -= n;
+
+	return 0;
+}
+
+LWS_VISIBLE int
+lws_jws_randomize_element(struct lws_context *context,
+			  struct lws_jws_compact_map *map,
+			  int idx, char *temp, int *temp_len, size_t random_len,
+			  size_t actual_alloc)
+{
+	if (!actual_alloc)
+		actual_alloc = random_len;
+
+	if ((size_t)*temp_len < actual_alloc)
+		return -1;
+
+	map->len[idx] = random_len;
+	map->buf[idx] = temp;
+
+	if (lws_get_random(context, temp, random_len) != (int)random_len) {
+		lwsl_err("Problem getting random\n");
+		return -1;
+	}
+
+	*temp_len -= actual_alloc;
+
+	return 0;
+}
+
+LWS_VISIBLE int
+lws_jws_alloc_element(struct lws_jws_compact_map *map, int idx, char *temp,
+		      int *temp_len, size_t len, size_t actual_alloc)
+{
+	if (!actual_alloc)
+		actual_alloc = len;
+
+	if ((size_t)*temp_len < actual_alloc)
+		return -1;
+
+	map->len[idx] = len;
+	map->buf[idx] = temp;
+	*temp_len -= actual_alloc;
+
+	return 0;
+}
+
 LWS_VISIBLE int
 lws_jws_base64_enc(const char *in, size_t in_len, char *out, size_t out_max)
 {
 	int n;
 
 	n = lws_b64_encode_string_url(in, in_len, out, out_max - 1);
-	if (n < 0)
+	if (n < 0) {
+		lwsl_notice("%s: in len %d too large for %d out buf\n",
+				__func__, (int)in_len, (int)out_max);
 		return n; /* too large for output buffer */
+	}
 
 	/* trim the terminal = */
 	while (n && out[n - 1] == '=')
@@ -40,6 +155,99 @@ lws_jws_base64_enc(const char *in, size_t in_len, char *out, size_t out_max)
 	return n;
 }
 
+LWS_VISIBLE int
+lws_jws_b64_compact_map(const char *in, int len, struct lws_jws_compact_map *map)
+{
+	int me = 0;
+
+	memset(map, 0, sizeof(*map));
+
+	map->buf[me] = (char *)in;
+	map->len[me] = 0;
+
+	while (len--) {
+		if (*in++ == '.') {
+			if (++me == LWS_JWS_MAX_COMPACT_BLOCKS)
+				return -1;
+			map->buf[me] = (char *)in;
+			map->len[me] = 0;
+			continue;
+		}
+		map->len[me]++;
+	}
+
+	return me + 1;
+}
+
+/* b64 in, map contains decoded elements, if non-NULL,
+ * map_b64 set to b64 elements
+ */
+
+LWS_VISIBLE int
+lws_jws_compact_decode(const char *in, int len, struct lws_jws_compact_map *map,
+		       struct lws_jws_compact_map *map_b64, char *out,
+		       int *out_len)
+{
+	int blocks, n, m = 0;
+
+	if (!map_b64)
+		map_b64 = map;
+
+	memset(map_b64, 0, sizeof(*map_b64));
+	memset(map, 0, sizeof(*map));
+
+	blocks = lws_jws_b64_compact_map(in, len, map_b64);
+
+	if (blocks > LWS_JWS_MAX_COMPACT_BLOCKS)
+		return -1;
+
+	while (m < blocks) {
+		n = lws_b64_decode_string_len(map_b64->buf[m],
+					      map_b64->len[m], out, *out_len);
+		if (n < 0) {
+			lwsl_err("%s: b64 decode failed\n", __func__);
+			return -1;
+		}
+		/* replace the map entry with the decoded content */
+		map->buf[m] = out;
+		map->len[m++] = n;
+		out += n;
+		*out_len -= n;
+
+		if (*out_len < 1)
+			return -1;
+	}
+
+	return blocks;
+}
+
+static int
+lws_jws_compact_decode_map(struct lws_jws_compact_map *map_b64,
+			   struct lws_jws_compact_map *map, char *out,
+			   int *out_len)
+{
+	int n, m = 0;
+
+	for (n = 0; n < LWS_JWS_MAX_COMPACT_BLOCKS; n++) {
+		n = lws_b64_decode_string_len(map_b64->buf[m],
+					      map_b64->len[m], out, *out_len);
+		if (n < 0) {
+			lwsl_err("%s: b64 decode failed\n", __func__);
+			return -1;
+		}
+		/* replace the map entry with the decoded content */
+		map->buf[m] = out;
+		map->len[m++] = n;
+		out += n;
+		*out_len -= n;
+
+		if (*out_len < 1)
+			return -1;
+	}
+
+	return 0;
+}
+
 LWS_VISIBLE int
 lws_jws_encode_section(const char *in, size_t in_len, int first, char **p,
 		       char *end)
@@ -62,71 +270,81 @@ lws_jws_encode_section(const char *in, size_t in_len, int first, char **p,
 	return (*p) - p_entry;
 }
 
-static int
-lws_jws_find_sig(const char *in, size_t len)
+LWS_VISIBLE int
+lws_jws_compact_encode(struct lws_jws_compact_map *map_b64, /* b64-encoded */
+		       const struct lws_jws_compact_map *map,	/* non-b64 */
+		       char *buf, int *len)
 {
-	const char *p = in + len - 1;
+	int n, m;
 
-	while (len--)
-		if (*p == '.')
-			return (p + 1) - in;
-		else
-			p--;
+	for (n = 0; n < LWS_JWS_MAX_COMPACT_BLOCKS; n++) {
+		if (!map->buf[n]) {
+			map_b64->buf[n] = NULL;
+			map_b64->len[n] = 0;
+			continue;
+		}
+		m = lws_jws_base64_enc(map->buf[n], map->len[n], buf, *len);
+		if (m < 0)
+			return -1;
+		buf += m;
+		*len -= m;
+		if (*len < 1)
+			return -1;
+	}
 
-	lwsl_notice("%s failed\n", __func__);
-	return -1;
+	return 0;
 }
 
+/*
+ * This takes both a base64 -encoded map and a plaintext map.
+ *
+ * JWS demands base-64 encoded elements for hash computation and at least for
+ * the JOSE header and signature, decoded versions too.
+ */
+
 LWS_VISIBLE int
-lws_jws_confirm_sig(const char *in, size_t len, struct lws_jwk *jwk,
-		    struct lws_context *context)
+lws_jws_sig_confirm(struct lws_jws_compact_map *map_b64, /* b64-encoded */
+		    struct lws_jws_compact_map *map,	/* non-b64 */
+		    struct lws_jwk *jwk, struct lws_context *context)
 {
-	int sig_pos = lws_jws_find_sig(in, len), pos = 0, n, m, h_len;
 	enum enum_genrsa_mode padding = LGRSAM_PKCS1_1_5;
+	char temp[256];
+	int n, h_len, b = 3, temp_len = sizeof(temp);
 	uint8_t digest[LWS_GENHASH_LARGEST];
-	const struct lws_jose_jwe_alg *args = NULL;
 	struct lws_genhash_ctx hash_ctx;
 	struct lws_genec_ctx ecdsactx;
 	struct lws_genrsa_ctx rsactx;
 	struct lws_genhmac_ctx ctx;
-	char buf[2048];
+	struct lws_jose jose;
 
-	/* 1) there has to be a signature */
+	lws_jose_init(&jose);
 
-	if (sig_pos < 0)
-		return -1;
-
-	/* 2) find length of first, hdr, block */
+	/* only valid if no signature or key */
+	if (!map_b64->buf[LJWS_SIG] && !map->buf[LJWS_UHDR])
+		b = 2;
 
-	while (pos < (int)len && in[pos] != '.')
-		pos++;
-	if (pos == (int)len)
+	if (lws_jws_parse_jose(&jose, map->buf[LJWS_JOSE], map->len[LJWS_JOSE],
+			       temp, &temp_len) < 0) {
+		lwsl_notice("%s: parse failed\n", __func__);
 		return -1;
+	}
 
-	/* 3) Decode the header block */
-
-	n = lws_b64_decode_string_len(in, pos, buf, sizeof(buf) - 1);
-	if (n < 0)
-		return -1;
+	if (!strcmp(jose.alg->alg, "none")) {
+		/* "none" compact serialization has 2 blocks: jose.payload */
+		if (b != 2 || jwk)
+			return -1;
 
-	/* 4) Require either:
-	 *      typ: JWT (if present) and alg: HS256/384/512
-	 *      typ: JWT (if present) and alg: RS256/384/512
-	 *      typ: JWT (if present) and alg: ES256/384/512
-	 */
+		/* the lack of a key matches the lack of a signature */
+		return 0;
+	}
 
-	m = lws_jws_parse_jose(&args, (unsigned char *)buf, n);
-	if (m < 0) {
-		lwsl_notice("parse got %d: alg %s\n", m, args->alg);
+	/* all other have 3 blocks: jose.payload.sig */
+	if (b != 3 || !jwk) {
+		lwsl_notice("%s: %d blocks\n", __func__, b);
 		return -1;
 	}
 
-	/* 5) decode the B64URL signature part into buf / m */
-
-	m = lws_b64_decode_string_len(in + sig_pos, len - sig_pos,
-				      buf, sizeof(buf) - 1);
-
-	switch (args->algtype_signing) {
+	switch (jose.alg->algtype_signing) {
 	case LWS_JOSE_ENCTYPE_RSASSA_PKCS1_PSS:
 	case LWS_JOSE_ENCTYPE_RSASSA_PKCS1_OAEP:
 		padding = LGRSAM_PKCS1_OAEP_PSS;
@@ -135,67 +353,87 @@ lws_jws_confirm_sig(const char *in, size_t len, struct lws_jwk *jwk,
 
 		/* RSASSA-PKCS1-v1_5 or OAEP using SHA-256/384/512 */
 
-		if (jwk->kty != LWS_GENCRYPTO_KYT_RSA)
+		if (jwk->kty != LWS_GENCRYPTO_KTY_RSA)
 			return -1;
 
 		/* 6(RSA): compute the hash of the payload into "digest" */
 
-		if (lws_genhash_init(&hash_ctx, args->hash_type))
+		if (lws_genhash_init(&hash_ctx, jose.alg->hash_type))
 			return -1;
 
-		if (lws_genhash_update(&hash_ctx, (uint8_t *)in, sig_pos - 1)) {
+		/*
+		 * JWS Signing Input value:
+		 *
+		 * BASE64URL(UTF8(JWS Protected Header)) || '.' ||
+		 * 	BASE64URL(JWS Payload)
+		 */
+
+		if (lws_genhash_update(&hash_ctx, map_b64->buf[LJWS_JOSE],
+						  map_b64->len[LJWS_JOSE]) ||
+		    lws_genhash_update(&hash_ctx, ".", 1) ||
+		    lws_genhash_update(&hash_ctx, map_b64->buf[LJWS_PYLD],
+						  map_b64->len[LJWS_PYLD]) ||
+		    lws_genhash_destroy(&hash_ctx, digest)) {
 			lws_genhash_destroy(&hash_ctx, NULL);
 
 			return -1;
 		}
-		if (lws_genhash_destroy(&hash_ctx, digest))
-			return -1;
-
-		h_len = lws_genhash_size(args->hash_type);
+		h_len = lws_genhash_size(jose.alg->hash_type);
 
-		if (lws_genrsa_create(&rsactx, jwk->e, context, padding)) {
+		if (lws_genrsa_create(&rsactx, jwk->e, context, padding,
+				LWS_GENHASH_TYPE_UNKNOWN)) {
 			lwsl_notice("%s: lws_genrsa_public_decrypt_create\n",
 				    __func__);
 			return -1;
 		}
 
-		n = lws_genrsa_hash_sig_verify(&rsactx, digest, args->hash_type,
-					       (uint8_t *)buf, m);
+		n = lws_genrsa_hash_sig_verify(&rsactx, digest,
+					       jose.alg->hash_type,
+					       (uint8_t *)map->buf[LJWS_SIG],
+					       map->len[LJWS_SIG]);
 
 		lws_genrsa_destroy(&rsactx);
 		if (n < 0) {
-			lwsl_notice("decrypt fail\n");
+			lwsl_notice("%s: decrypt fail\n", __func__);
 			return -1;
 		}
 
 		break;
 
-	case LWS_JOSE_ENCTYPE_NONE:
+	case LWS_JOSE_ENCTYPE_NONE: /* HSxxx */
 
 		/* SHA256/384/512 HMAC */
 
-		h_len = lws_genhmac_size(args->hmac_type);
-		if (m < 0 || m != h_len)
-			return -1;
+		h_len = lws_genhmac_size(jose.alg->hmac_type);
 
 		/* 6) compute HMAC over payload */
 
-		if (lws_genhmac_init(&ctx, args->hmac_type,
+		if (lws_genhmac_init(&ctx, jose.alg->hmac_type,
 				     jwk->e[LWS_GENCRYPTO_RSA_KEYEL_E].buf,
 				     jwk->e[LWS_GENCRYPTO_RSA_KEYEL_E].len))
 			return -1;
 
-		if (lws_genhmac_update(&ctx, (uint8_t *)in, sig_pos - 1)) {
+		/*
+		 * JWS Signing Input value:
+		 *
+		 * BASE64URL(UTF8(JWS Protected Header)) || '.' ||
+		 *   BASE64URL(JWS Payload)
+		 */
+
+		if (lws_genhmac_update(&ctx, map_b64->buf[LJWS_JOSE],
+					     map_b64->len[LJWS_JOSE]) ||
+		    lws_genhmac_update(&ctx, ".", 1) ||
+		    lws_genhmac_update(&ctx, map_b64->buf[LJWS_PYLD],
+					     map_b64->len[LJWS_PYLD]) ||
+		    lws_genhmac_destroy(&ctx, digest)) {
 			lws_genhmac_destroy(&ctx, NULL);
 
 			return -1;
 		}
-		if (lws_genhmac_destroy(&ctx, digest))
-			return -1;
 
 		/* 7) Compare the computed and decoded hashes */
 
-		if (memcmp(digest, buf, h_len)) {
+		if (lws_timingsafe_bcmp(digest, map->buf[2], h_len)) {
 			lwsl_notice("digest mismatch\n");
 
 			return -1;
@@ -207,10 +445,10 @@ lws_jws_confirm_sig(const char *in, size_t len, struct lws_jwk *jwk,
 
 		/* ECDSA using SHA-256/384/512 */
 
-		/* the key coming in with this makes sense, right? */
+		/* Confirm the key coming in with this makes sense */
 
 		/* has to be an EC key :-) */
-		if (jwk->kty != LWS_GENCRYPTO_KYT_EC)
+		if (jwk->kty != LWS_GENCRYPTO_KTY_EC)
 			return -1;
 
 		/* key must state its curve */
@@ -219,23 +457,41 @@ lws_jws_confirm_sig(const char *in, size_t len, struct lws_jwk *jwk,
 
 		/* key must match the selected alg curve */
 		if (strcmp((const char *)jwk->e[LWS_GENCRYPTO_EC_KEYEL_CRV].buf,
-			   args->curve_name))
-			return -1;
-
-		/* compute the hash of the payload into "digest" */
-
-		if (lws_genhash_init(&hash_ctx, args->hash_type))
-			return -1;
-
-		if (lws_genhash_update(&hash_ctx, (uint8_t *)in, sig_pos - 1)) {
+				jose.alg->curve_name))
+			return -1;
+
+		/*
+		 * JWS Signing Input value:
+		 *
+		 * BASE64URL(UTF8(JWS Protected Header)) || '.' ||
+		 * 	BASE64URL(JWS Payload)
+		 *
+		 * Validating the JWS Signature is a bit different from the
+		 * previous examples.  We need to split the 64 member octet
+		 * sequence of the JWS Signature (which is base64url decoded
+		 * from the value encoded in the JWS representation) into two
+		 * 32 octet sequences, the first representing R and the second
+		 * S.  We then pass the public key (x, y), the signature (R, S),
+		 * and the JWS Signing Input (which is the initial substring of
+		 * the JWS Compact Serialization representation up until but not
+		 * including the second period character) to an ECDSA signature
+		 * verifier that has been configured to use the P-256 curve with
+		 * the SHA-256 hash function.
+		 */
+
+		if (lws_genhash_init(&hash_ctx, jose.alg->hash_type) ||
+		    lws_genhash_update(&hash_ctx, map_b64->buf[LJWS_JOSE],
+						  map_b64->len[LJWS_JOSE]) ||
+		    lws_genhash_update(&hash_ctx, ".", 1) ||
+		    lws_genhash_update(&hash_ctx, map_b64->buf[LJWS_PYLD],
+						  map_b64->len[LJWS_PYLD]) ||
+		    lws_genhash_destroy(&hash_ctx, digest)) {
 			lws_genhash_destroy(&hash_ctx, NULL);
 
 			return -1;
 		}
-		if (lws_genhash_destroy(&hash_ctx, digest))
-			return -1;
 
-		h_len = lws_genhash_size(args->hash_type);
+		h_len = lws_genhash_size(jose.alg->hash_type);
 
 		if (lws_genecdsa_create(&ecdsactx, context, NULL)) {
 			lwsl_notice("%s: lws_genrsa_public_decrypt_create\n",
@@ -249,13 +505,14 @@ lws_jws_confirm_sig(const char *in, size_t len, struct lws_jwk *jwk,
 			return -1;
 		}
 
-		n = lws_genecdsa_hash_sig_verify(&ecdsactx, digest,
-						 args->hash_type,
-						 (uint8_t *)buf, m);
-
+		n = lws_genecdsa_hash_sig_verify_jws(&ecdsactx, digest,
+						     jose.alg->hash_type,
+						     jose.alg->keybits_fixed,
+						  (uint8_t *)map->buf[LJWS_SIG],
+						     map->len[LJWS_SIG]);
 		lws_genec_destroy(&ecdsactx);
 		if (n < 0) {
-			lwsl_notice("decrypt fail\n");
+			lwsl_notice("%s: verify fail\n", __func__);
 			return -1;
 		}
 
@@ -269,60 +526,121 @@ lws_jws_confirm_sig(const char *in, size_t len, struct lws_jwk *jwk,
 	return 0;
 }
 
+/* it's already a b64 map, we will make a temp plain version */
+
 LWS_VISIBLE int
-lws_jws_sign_from_b64(const char *b64_hdr, size_t hdr_len, const char *b64_pay,
-		      size_t pay_len, char *b64_sig, size_t sig_len,
-		      const struct lws_jose_jwe_alg *args,
-		      struct lws_jwk *jwk,
-		      struct lws_context *context)
+lws_jws_sig_confirm_compact_b64_map(struct lws_jws_compact_map *map_b64,
+				    struct lws_jwk *jwk,
+			            struct lws_context *context,
+			            char *temp, int *temp_len)
 {
-	enum enum_genrsa_mode padding = LGRSAM_PKCS1_1_5;
+	struct lws_jws_compact_map map;
+	int n;
+
+	n = lws_jws_compact_decode_map(map_b64, &map, temp, temp_len);
+	if (n > 3 || n < 0)
+		return -1;
+
+	return lws_jws_sig_confirm(map_b64, &map, jwk, context);
+}
+
+/*
+ * it's already a compact / concatenated b64 string, we will make a temp
+ * plain version
+ */
+
+LWS_VISIBLE int
+lws_jws_sig_confirm_compact_b64(const char *in, size_t len,
+				struct lws_jws_compact_map *map,
+				struct lws_jwk *jwk,
+				struct lws_context *context,
+				char *temp, int *temp_len)
+{
+	struct lws_jws_compact_map map_b64;
+	int n;
+
+	if (lws_jws_b64_compact_map(in, len, &map_b64) < 0)
+		return -1;
+
+	n = lws_jws_compact_decode(in, len, map, &map_b64, temp, temp_len);
+	if (n > 3 || n < 0)
+		return -1;
+
+	return lws_jws_sig_confirm(&map_b64, map, jwk, context);
+}
+
+/* it's already plain, we will make a temp b64 version */
+
+LWS_VISIBLE int
+lws_jws_sig_confirm_compact(struct lws_jws_compact_map *map, struct lws_jwk *jwk,
+			    struct lws_context *context, char *temp,
+			    int *temp_len)
+{
+	struct lws_jws_compact_map map_b64;
+
+	if (lws_jws_compact_encode(&map_b64, map, temp, temp_len) < 0)
+		return -1;
+
+	return lws_jws_sig_confirm(&map_b64, map, jwk, context);
+}
+
+
+LWS_VISIBLE int
+lws_jws_sign_from_b64(struct lws_jose *jose, struct lws_jws *jws,
+		      char *b64_sig, size_t sig_len)
+{
+	enum enum_genrsa_mode pad = LGRSAM_PKCS1_1_5;
 	uint8_t digest[LWS_GENHASH_LARGEST];
 	struct lws_genhash_ctx hash_ctx;
 	struct lws_genec_ctx ecdsactx;
 	struct lws_genrsa_ctx rsactx;
-	int n, m;
 	uint8_t *buf;
+	int n, m;
 
-	if (lws_genhash_init(&hash_ctx, args->hash_type))
-		return -1;
+	if (jose->alg->hash_type == LWS_GENHASH_TYPE_UNKNOWN &&
+	    jose->alg->hmac_type == LWS_GENHMAC_TYPE_UNKNOWN &&
+	    !strcmp(jose->alg->alg, "none"))
+		return 0;
 
-	if (b64_hdr) {
-		if (lws_genhash_update(&hash_ctx, (uint8_t *)b64_hdr, hdr_len))
-			goto hash_fail;
-		if (lws_genhash_update(&hash_ctx, (uint8_t *)".", 1))
-			goto hash_fail;
-	}
-	if (lws_genhash_update(&hash_ctx, (uint8_t *)b64_pay, pay_len))
-		goto hash_fail;
+	if (lws_genhash_init(&hash_ctx, jose->alg->hash_type) ||
+	    lws_genhash_update(&hash_ctx, jws->map_b64.buf[LJWS_JOSE],
+					  jws->map_b64.len[LJWS_JOSE]) ||
+	    lws_genhash_update(&hash_ctx, ".", 1) ||
+	    lws_genhash_update(&hash_ctx, jws->map_b64.buf[LJWS_PYLD],
+					  jws->map_b64.len[LJWS_PYLD]) ||
+	    lws_genhash_destroy(&hash_ctx, digest)) {
+		lws_genhash_destroy(&hash_ctx, NULL);
 
-	if (lws_genhash_destroy(&hash_ctx, digest))
 		return -1;
+	}
 
-	switch (args->algtype_signing) {
+	switch (jose->alg->algtype_signing) {
 	case LWS_JOSE_ENCTYPE_RSASSA_PKCS1_PSS:
 	case LWS_JOSE_ENCTYPE_RSASSA_PKCS1_OAEP:
-		padding = LGRSAM_PKCS1_OAEP_PSS;
+		pad = LGRSAM_PKCS1_OAEP_PSS;
 		/* fallthru */
 	case LWS_JOSE_ENCTYPE_RSASSA_PKCS1_1_5:
 
-		if (jwk->kty != LWS_GENCRYPTO_KYT_RSA)
+		if (jws->jwk->kty != LWS_GENCRYPTO_KTY_RSA)
 			return -1;
 
-		if (lws_genrsa_create(&rsactx, jwk->e, context, padding)) {
+		if (lws_genrsa_create(&rsactx, jws->jwk->e, jws->context,
+				      pad, LWS_GENHASH_TYPE_UNKNOWN)) {
 			lwsl_notice("%s: lws_genrsa_public_decrypt_create\n",
 				    __func__);
 			return -1;
 		}
 
-		n = jwk->e[LWS_GENCRYPTO_RSA_KEYEL_N].len;
-		buf = lws_malloc(n, "jws sign");
+		n = jws->jwk->e[LWS_GENCRYPTO_RSA_KEYEL_N].len;
+		buf = lws_malloc(lws_base64_size(n), "jws sign");
 		if (!buf)
 			return -1;
 
-		n = lws_genrsa_hash_sign(&rsactx, digest, args->hash_type, buf, n);
+		n = lws_genrsa_hash_sign(&rsactx, digest, jose->alg->hash_type,
+					 buf, n);
 		lws_genrsa_destroy(&rsactx);
 		if (n < 0) {
+			lwsl_err("%s: lws_genrsa_hash_sign failed\n", __func__);
 			lws_free(buf);
 
 			return -1;
@@ -330,12 +648,15 @@ lws_jws_sign_from_b64(const char *b64_hdr, size_t hdr_len, const char *b64_pay,
 
 		n = lws_jws_base64_enc((char *)buf, n, b64_sig, sig_len);
 		lws_free(buf);
+		if (n < 0) {
+			lwsl_err("%s: lws_jws_base64_enc failed\n", __func__);
+		}
 
 		return n;
 
 	case LWS_JOSE_ENCTYPE_NONE:
 		return lws_jws_base64_enc((char *)digest,
-					  lws_genhash_size(args->hash_type),
+					 lws_genhash_size(jose->alg->hash_type),
 					  b64_sig, sig_len);
 	case LWS_JOSE_ENCTYPE_ECDSA:
 		/* ECDSA using SHA-256/384/512 */
@@ -343,47 +664,53 @@ lws_jws_sign_from_b64(const char *b64_hdr, size_t hdr_len, const char *b64_pay,
 		/* the key coming in with this makes sense, right? */
 
 		/* has to be an EC key :-) */
-		if (jwk->kty != LWS_GENCRYPTO_KYT_EC)
+		if (jws->jwk->kty != LWS_GENCRYPTO_KTY_EC)
 			return -1;
 
 		/* key must state its curve */
-		if (!jwk->e[LWS_GENCRYPTO_EC_KEYEL_CRV].buf)
+		if (!jws->jwk->e[LWS_GENCRYPTO_EC_KEYEL_CRV].buf)
 			return -1;
 
 		/* must have all his pieces for a private key */
-		if (!jwk->e[LWS_GENCRYPTO_EC_KEYEL_X].buf ||
-		    !jwk->e[LWS_GENCRYPTO_EC_KEYEL_Y].buf ||
-		    !jwk->e[LWS_GENCRYPTO_EC_KEYEL_D].buf)
+		if (!jws->jwk->e[LWS_GENCRYPTO_EC_KEYEL_X].buf ||
+		    !jws->jwk->e[LWS_GENCRYPTO_EC_KEYEL_Y].buf ||
+		    !jws->jwk->e[LWS_GENCRYPTO_EC_KEYEL_D].buf)
 			return -1;
 
 		/* key must match the selected alg curve */
-		if (strcmp((const char *)jwk->e[LWS_GENCRYPTO_EC_KEYEL_CRV].buf,
-			   args->curve_name))
+		if (strcmp((const char *)
+				jws->jwk->e[LWS_GENCRYPTO_EC_KEYEL_CRV].buf,
+			    jose->alg->curve_name))
 			return -1;
 
-		if (lws_genecdsa_create(&ecdsactx, context, NULL)) {
+		if (lws_genecdsa_create(&ecdsactx, jws->context, NULL)) {
 			lwsl_notice("%s: lws_genrsa_public_decrypt_create\n",
 				    __func__);
 			return -1;
 		}
 
-		if (lws_genecdsa_set_key(&ecdsactx, jwk->e)) {
+		if (lws_genecdsa_set_key(&ecdsactx, jws->jwk->e)) {
 			lws_genec_destroy(&ecdsactx);
 			lwsl_notice("%s: ec key import fail\n", __func__);
 			return -1;
 		}
-		m = jwk->e[LWS_GENCRYPTO_EC_KEYEL_D].len;
+		m = lws_gencrypto_bits_to_bytes(jose->alg->keybits_fixed) * 2;
 		buf = lws_malloc(m, "jws sign");
 		if (!buf)
 			return -1;
 
-		n = lws_genecdsa_hash_sign(&ecdsactx, digest, args->hash_type,
-					   (uint8_t *)buf, m);
+		n = lws_genecdsa_hash_sign_jws(&ecdsactx, digest,
+					       jose->alg->hash_type,
+					       jose->alg->keybits_fixed,
+					       (uint8_t *)buf, m);
 		lws_genec_destroy(&ecdsactx);
 		if (n < 0) {
-			lwsl_notice("decrypt fail\n");
+			lws_free(buf);
+			lwsl_notice("%s: lws_genecdsa_hash_sign_jws fail\n",
+					__func__);
 			return -1;
 		}
+
 		n = lws_jws_base64_enc((char *)buf, m, b64_sig, sig_len);
 		lws_free(buf);
 
@@ -396,8 +723,57 @@ lws_jws_sign_from_b64(const char *b64_hdr, size_t hdr_len, const char *b64_pay,
 	/* unknown key type */
 
 	return -1;
+}
 
-hash_fail:
-	lws_genhash_destroy(&hash_ctx, NULL);
-	return -1;
+/*
+ * Flattened JWS JSON:
+ *
+ *  {
+ *    "payload":   "<payload contents>",
+ *    "protected": "<integrity-protected header contents>",
+ *    "header":    <non-integrity-protected header contents>,
+ *    "signature": "<signature contents>"
+ *   }
+ */
+
+LWS_VISIBLE int
+lws_jws_write_flattened_json(struct lws_jws *jws, char *flattened, size_t len)
+{
+	size_t n = 0;
+
+	if (len < 1)
+		return 1;
+
+	n += lws_snprintf(flattened + n, len - n , "{\"payload\": \"%s\",\n",
+			  jws->map_b64.buf[LJWS_PYLD]);
+
+	n += lws_snprintf(flattened + n, len - n , " \"protected\": \"%s\",\n",
+			jws->map_b64.buf[LJWS_JOSE]);
+
+	if (jws->map_b64.buf[LJWS_UHDR])
+		n += lws_snprintf(flattened + n, len - n , " \"header\": %s,\n",
+				jws->map_b64.buf[LJWS_UHDR]);
+
+	n += lws_snprintf(flattened + n, len - n , " \"signature\": \"%s\"}\n",
+			jws->map_b64.buf[LJWS_SIG]);
+
+	return (n >= len - 1);
+}
+
+LWS_VISIBLE int
+lws_jws_write_compact(struct lws_jws *jws, char *compact, size_t len)
+{
+	size_t n = 0;
+
+	if (len < 1)
+		return 1;
+
+	n += lws_snprintf(compact + n, len - n , "%.*s",
+			  jws->map_b64.len[LJWS_JOSE], jws->map_b64.buf[LJWS_JOSE]);
+	n += lws_snprintf(compact + n, len - n , ".%.*s",
+			  jws->map_b64.len[LJWS_PYLD], jws->map_b64.buf[LJWS_PYLD]);
+	n += lws_snprintf(compact + n, len - n , ".%.*s",
+			  jws->map_b64.len[LJWS_SIG], jws->map_b64.buf[LJWS_SIG]);
+
+	return n >= len - 1;
 }
diff --git a/lib/jose/jws/private.h b/lib/jose/jws/private.h
index c229e5a3..e7113d34 100644
--- a/lib/jose/jws/private.h
+++ b/lib/jose/jws/private.h
@@ -22,11 +22,3 @@
  * to specify its JOSE JSON object.  So it lives in ./lib/jose/jws/jose.c.
  */
 
-int
-lws_jws_parse_jose(const struct lws_jose_jwe_alg **args,
-		   uint8_t *buf, int n);
-
-int
-lws_jwe_parse_jose(const struct lws_jose_jwe_alg **args,
-		   const struct lws_jose_jwe_alg **enc_args,
-		   uint8_t *buf, int n);
diff --git a/lib/jose/private.h b/lib/jose/private.h
index cfa9c62a..2985da38 100644
--- a/lib/jose/private.h
+++ b/lib/jose/private.h
@@ -21,3 +21,8 @@
 
 void
 lws_jwk_destroy_elements(struct lws_gencrypto_keyelem *el, int m);
+
+void
+lws_jwk_init_jps(struct lejp_ctx *jctx, struct lws_jwk_parse_state *jps,
+		 struct lws_jwk *jwk, lws_jwk_key_import_callback cb,
+		 void *user);
diff --git a/lib/misc/fts/trie-fd.c b/lib/misc/fts/trie-fd.c
index 9e9105e9..56289423 100644
--- a/lib/misc/fts/trie-fd.c
+++ b/lib/misc/fts/trie-fd.c
@@ -711,10 +711,10 @@ ensure:
 				if (lseek(ofd, fo, SEEK_SET) < 0)
 					continue;
 
-				lbuf[sizeof(lbuf) - 1] = '\0';
 				m = read(ofd, lbuf, sizeof(lbuf) - 1);
 				if (m < 0)
 					continue;
+				lbuf[sizeof(lbuf) - 1] = '\0';
 
 				p = (unsigned char *)strchr((char *)lbuf, '\n');
 				if (p)
diff --git a/lib/misc/lejp.c b/lib/misc/lejp.c
index 599a6d37..677e40ae 100644
--- a/lib/misc/lejp.c
+++ b/lib/misc/lejp.c
@@ -1,7 +1,7 @@
 /*
  * Lightweight Embedded JSON Parser
  *
- * Copyright (C) 2013-2017 Andy Green <andy@warmcat.com>
+ * Copyright (C) 2013-2018 Andy Green <andy@warmcat.com>
  *
  *  This library is free software; you can redistribute it and/or
  *  modify it under the terms of the GNU Lesser General Public
@@ -107,7 +107,7 @@ lejp_change_callback(struct lejp_ctx *ctx,
 	ctx->callback(ctx, LEJPCB_START);
 }
 
-static void
+void
 lejp_check_path_match(struct lejp_ctx *ctx)
 {
 	const char *p, *q;
@@ -644,9 +644,11 @@ lejp_parse(struct lejp_ctx *ctx, const unsigned char *json, int len)
 						ret = LEJP_REJECT_CALLBACK;
 						goto reject;
 					}
-					ctx->callback(ctx, LEJPCB_COMPLETE);
-					/* done, return unused amount */
-					return len;
+					if (ctx->callback(ctx, LEJPCB_COMPLETE))
+						goto reject;
+					else
+						/* done, return unused amount */
+						return len;
 				}
 				/* pop */
 				ctx->sp--;
diff --git a/lib/misc/peer-limits.c b/lib/misc/peer-limits.c
index cc4c07d6..53d9421f 100644
--- a/lib/misc/peer-limits.c
+++ b/lib/misc/peer-limits.c
@@ -77,19 +77,20 @@ lws_get_or_create_peer(struct lws_vhost *vhost, lws_sockfd_type sockfd)
 		/* eg, udp doesn't have to have a peer */
 		return NULL;
 
-	if (af == AF_INET) {
+#ifdef LWS_WITH_IPV6
+	if (af == AF_INET)
+#endif
+	{
 		struct sockaddr_in *s = (struct sockaddr_in *)&addr;
 		q = &s->sin_addr;
 		rlen = sizeof(s->sin_addr);
-	} else
+	}
 #ifdef LWS_WITH_IPV6
-	{
+	else {
 		struct sockaddr_in6 *s = (struct sockaddr_in6 *)&addr;
 		q = &s->sin6_addr;
 		rlen = sizeof(s->sin6_addr);
 	}
-#else
-		return NULL;
 #endif
 
 	q8 = q;
diff --git a/lib/roles/http/client/client.c b/lib/roles/http/client/client.c
index f43b69f5..4015f4e1 100644
--- a/lib/roles/http/client/client.c
+++ b/lib/roles/http/client/client.c
@@ -127,7 +127,14 @@ lws_client_socket_service(struct lws *wsi, struct lws_pollfd *pollfd,
 			 * need to use that in HANDSHAKE2 to understand
 			 * which wsi to actually write on
 			 */
-			lws_client_socket_service(wfound, pollfd, wsi);
+			if (lws_client_socket_service(wfound, pollfd, wsi) < 0) {
+				/* closed */
+
+				lws_vhost_unlock(wsi->vhost);
+
+				return -1;
+			}
+
 			lws_callback_on_writable(wsi);
 		} else
 			lwsl_debug("%s: didn't find anything in txn q in HS2\n",
diff --git a/lib/roles/http/server/server.c b/lib/roles/http/server/server.c
index 063491bd..dc5e5ff6 100644
--- a/lib/roles/http/server/server.c
+++ b/lib/roles/http/server/server.c
@@ -1654,6 +1654,7 @@ lws_http_to_fallback(struct lws *wsi, unsigned char *obuf, size_t olen)
 	const struct lws_role_ops *role = &role_ops_raw_skt;
 	const struct lws_protocols *p1, *protocol =
 			 &wsi->vhost->protocols[wsi->vhost->raw_protocol_index];
+	char ipbuf[64];
 	int n;
 
 	if (wsi->vhost->listen_accept_role &&
@@ -1678,9 +1679,14 @@ lws_http_to_fallback(struct lws *wsi, unsigned char *obuf, size_t olen)
 	if (wsi->role_ops->adoption_cb[lwsi_role_server(wsi)])
 		n = wsi->role_ops->adoption_cb[lwsi_role_server(wsi)];
 
-	lwsl_notice("%s: vh %s, role %s, protocol %s, cb %d, ah %p\n",
-		    __func__, wsi->vhost->name, role->name, protocol->name, n,
-		    wsi->http.ah);
+	ipbuf[0] = '\0';
+#if !defined(LWS_PLAT_OPTEE)
+	lws_get_peer_simple(wsi, ipbuf, sizeof(ipbuf));
+#endif
+
+	lwsl_notice("%s: vh %s, peer: %s, role %s, "
+		    "protocol %s, cb %d, ah %p\n", __func__, wsi->vhost->name,
+		    ipbuf, role->name, protocol->name, n, wsi->http.ah);
 
 	if ((wsi->protocol->callback)(wsi, n, wsi->user_space, NULL, 0))
 		return 1;
@@ -2630,8 +2636,7 @@ all_sent:
 #else
 		)
 #endif
-		)
-		     {
+		) {
 			lwsi_set_state(wsi, LRS_ESTABLISHED);
 			/* we might be in keepalive, so close it off here */
 			lws_vfs_file_close(&wsi->http.fop_fd);
@@ -2664,7 +2669,12 @@ all_sent:
 
 			return 1;  /* >0 indicates completed */
 		}
-	} while (1); //(!lws_send_pipe_choked(wsi));
+		/*
+		 * while(1) here causes us to spam the whole file contents into
+		 * a hugely bloated output buffer if it ever can't send the
+		 * whole chunk...
+		 */
+	} while (!lws_send_pipe_choked(wsi));
 
 	lws_callback_on_writable(wsi);
 
diff --git a/lib/tls/lws-gencrypto-common.c b/lib/tls/lws-gencrypto-common.c
index 4151524c..e77d8497 100644
--- a/lib/tls/lws-gencrypto-common.c
+++ b/lib/tls/lws-gencrypto-common.c
@@ -21,176 +21,460 @@
 #include "core/private.h"
 
 /*
- * Signing algorithms
- *
  * These came from RFC7518 (JSON Web Algorithms) Section 3
+ *
+ * Cryptographic Algorithms for Digital Signatures and MACs
  */
 
 static const struct lws_jose_jwe_alg lws_gencrypto_jws_alg_map[] = {
+
+	/*
+	 * JWSs MAY also be created that do not provide integrity protection.
+	 * Such a JWS is called an Unsecured JWS.  An Unsecured JWS uses the
+	 * "alg" value "none" and is formatted identically to other JWSs, but
+	 * MUST use the empty octet sequence as its JWS Signature value.
+	 * Recipients MUST verify that the JWS Signature value is the empty
+	 * octet sequence.
+	 *
+	 * Implementations that support Unsecured JWSs MUST NOT accept such
+	 * objects as valid unless the application specifies that it is
+	 * acceptable for a specific object to not be integrity protected.
+	 * Implementations MUST NOT accept Unsecured JWSs by default.  In order
+	 * to mitigate downgrade attacks, applications MUST NOT signal
+	 * acceptance of Unsecured JWSs at a global level, and SHOULD signal
+	 * acceptance on a per-object basis.  See Section 8.5 for security
+	 * considerations associated with using this algorithm.
+	 */
 	{	/* optional */
 		LWS_GENHASH_TYPE_UNKNOWN,
-		LWS_GENHMAC_TYPE_SHA256,
+		LWS_GENHMAC_TYPE_UNKNOWN,
 		LWS_JOSE_ENCTYPE_NONE,
 		LWS_JOSE_ENCTYPE_NONE,
-		"none", NULL
+		"none", NULL, 0, 0, 0
 	},
-	{	/* required */
+
+	/*
+	 * HMAC with SHA-2 Functions
+	 *
+	 * The HMAC SHA-256 MAC for a JWS is validated by computing an HMAC
+	 * value per RFC 2104, using SHA-256 as the hash algorithm "H", using
+	 * the received JWS Signing Input as the "text" value, and using the
+	 * shared key.  This computed HMAC value is then compared to the result
+	 * of base64url decoding the received encoded JWS Signature value.  The
+	 * comparison of the computed HMAC value to the JWS Signature value MUST
+	 * be done in a constant-time manner to thwart timing attacks.
+	 *
+	 * Alternatively, the computed HMAC value can be base64url encoded and
+	 * compared to the received encoded JWS Signature value (also in a
+	 * constant-time manner), as this comparison produces the same result as
+	 * comparing the unencoded values.  In either case, if the values match,
+	 * the HMAC has been validated.
+	 */
+
+	{	/* required: HMAC using SHA-256 */
 		LWS_GENHASH_TYPE_UNKNOWN,
 		LWS_GENHMAC_TYPE_SHA256,
 		LWS_JOSE_ENCTYPE_NONE,
 		LWS_JOSE_ENCTYPE_NONE,
-		"HS256", NULL
+		"HS256", NULL, 0, 0, 0
 	},
-	{	/* optional */
+	{	/* optional: HMAC using SHA-384 */
 		LWS_GENHASH_TYPE_UNKNOWN,
 		LWS_GENHMAC_TYPE_SHA384,
 		LWS_JOSE_ENCTYPE_NONE,
 		LWS_JOSE_ENCTYPE_NONE,
-		"HS384", NULL
+		"HS384", NULL, 0, 0, 0
 	},
-	{	/* optional */
+	{	/* optional: HMAC using SHA-512 */
 		LWS_GENHASH_TYPE_UNKNOWN,
 		LWS_GENHMAC_TYPE_SHA512,
 		LWS_JOSE_ENCTYPE_NONE,
 		LWS_JOSE_ENCTYPE_NONE,
-		"HS512", NULL
+		"HS512", NULL, 0, 0, 0
 	},
 
-	{	/* recommended */
+	/*
+	 * Digital Signature with RSASSA-PKCS1-v1_5
+	 *
+	 * This section defines the use of the RSASSA-PKCS1-v1_5 digital
+	 * signature algorithm as defined in Section 8.2 of RFC 3447 [RFC3447]
+	 * (commonly known as PKCS #1), using SHA-2 [SHS] hash functions.
+	 *
+	 * A key of size 2048 bits or larger MUST be used with these algorithms.
+	 *
+	 * The RSASSA-PKCS1-v1_5 SHA-256 digital signature is generated as
+	 * follows: generate a digital signature of the JWS Signing Input using
+	 * RSASSA-PKCS1-v1_5-SIGN and the SHA-256 hash function with the desired
+	 * private key.  This is the JWS Signature value.
+	 *
+	 * The RSASSA-PKCS1-v1_5 SHA-256 digital signature for a JWS is
+	 * validated as follows: submit the JWS Signing Input, the JWS
+	 * Signature, and the public key corresponding to the private key used
+	 * by the signer to the RSASSA-PKCS1-v1_5-VERIFY algorithm using SHA-256
+	 * as the hash function.
+	 */
+
+	{	/* recommended: RSASSA-PKCS1-v1_5 using SHA-256 */
 		LWS_GENHASH_TYPE_SHA256,
 		LWS_GENHMAC_TYPE_UNKNOWN,
 		LWS_JOSE_ENCTYPE_RSASSA_PKCS1_1_5,
 		LWS_JOSE_ENCTYPE_NONE,
-		"RS256", NULL
+		"RS256", NULL, 2048, 4096, 0
 	},
-	{	/* optional */
+	{	/* optional: RSASSA-PKCS1-v1_5 using SHA-384 */
 		LWS_GENHASH_TYPE_SHA384,
 		LWS_GENHMAC_TYPE_UNKNOWN,
 		LWS_JOSE_ENCTYPE_RSASSA_PKCS1_1_5,
 		LWS_JOSE_ENCTYPE_NONE,
-		"RS384", NULL
+		"RS384", NULL, 2048, 4096, 0
 	},
-	{	/* optional */
+	{	/* optional: RSASSA-PKCS1-v1_5 using SHA-512 */
 		LWS_GENHASH_TYPE_SHA512,
 		LWS_GENHMAC_TYPE_UNKNOWN,
 		LWS_JOSE_ENCTYPE_RSASSA_PKCS1_1_5,
 		LWS_JOSE_ENCTYPE_NONE,
-		"RS512", NULL
+		"RS512", NULL, 2048, 4096, 0
 	},
 
-	{	/* Recommended+ */
+	/*
+	 * Digital Signature with ECDSA
+	 *
+	 * The ECDSA P-256 SHA-256 digital signature is generated as follows:
+	 *
+	 * 1.  Generate a digital signature of the JWS Signing Input using ECDSA
+	 *     P-256 SHA-256 with the desired private key.  The output will be
+	 *     the pair (R, S), where R and S are 256-bit unsigned integers.
+	 * 2.  Turn R and S into octet sequences in big-endian order, with each
+	 *     array being be 32 octets long.  The octet sequence
+	 *     representations MUST NOT be shortened to omit any leading zero
+	 *     octets contained in the values.
+	 *
+	 * 3.  Concatenate the two octet sequences in the order R and then S.
+	 *     (Note that many ECDSA implementations will directly produce this
+	 *     concatenation as their output.)
+	 *
+	 * 4.  The resulting 64-octet sequence is the JWS Signature value.
+	 *
+	 * The ECDSA P-256 SHA-256 digital signature for a JWS is validated as
+	 * follows:
+	 *
+	 * 1.  The JWS Signature value MUST be a 64-octet sequence.  If it is
+	 *     not a 64-octet sequence, the validation has failed.
+	 *
+	 * 2.  Split the 64-octet sequence into two 32-octet sequences.  The
+	 *     first octet sequence represents R and the second S.  The values R
+	 *     and S are represented as octet sequences using the Integer-to-
+	 *     OctetString Conversion defined in Section 2.3.7 of SEC1 [SEC1]
+	 *     (in big-endian octet order).
+	 * 3.  Submit the JWS Signing Input, R, S, and the public key (x, y) to
+	 *     the ECDSA P-256 SHA-256 validator.
+	 */
+
+	{	/* Recommended+: ECDSA using P-256 and SHA-256 */
 		LWS_GENHASH_TYPE_SHA256,
 		LWS_GENHMAC_TYPE_UNKNOWN,
 		LWS_JOSE_ENCTYPE_ECDSA,
 		LWS_JOSE_ENCTYPE_NONE,
-		"ES256", "P-256"
+		"ES256", "P-256", 256, 256, 0
 	},
-	{	/* optional */
+	{	/* optional: ECDSA using P-384 and SHA-384 */
 		LWS_GENHASH_TYPE_SHA384,
 		LWS_GENHMAC_TYPE_UNKNOWN,
 		LWS_JOSE_ENCTYPE_ECDSA,
 		LWS_JOSE_ENCTYPE_NONE,
-		"ES384", "P-384"
+		"ES384", "P-384", 384, 384, 0
 	},
-	{	/* optional */
+	{	/* optional: ECDSA using P-521 and SHA-512 */
 		LWS_GENHASH_TYPE_SHA512,
 		LWS_GENHMAC_TYPE_UNKNOWN,
 		LWS_JOSE_ENCTYPE_ECDSA,
 		LWS_JOSE_ENCTYPE_NONE,
-		"ES512", "P-521"
+		"ES512", "P-521", 521, 521, 0
 	},
+#if 0
+	Not yet supported
 
-	{	/* optional */
+	/*
+	 * Digital Signature with RSASSA-PSS
+	 *
+	 * A key of size 2048 bits or larger MUST be used with this algorithm.
+	 *
+	 * The RSASSA-PSS SHA-256 digital signature is generated as follows:
+	 * generate a digital signature of the JWS Signing Input using RSASSA-
+	 * PSS-SIGN, the SHA-256 hash function, and the MGF1 mask generation
+	 * function with SHA-256 with the desired private key.  This is the JWS
+	 * Signature value.
+	 *
+	 * The RSASSA-PSS SHA-256 digital signature for a JWS is validated as
+	 * follows: submit the JWS Signing Input, the JWS Signature, and the
+	 * public key corresponding to the private key used by the signer to the
+	 * RSASSA-PSS-VERIFY algorithm using SHA-256 as the hash function and
+	 * using MGF1 as the mask generation function with SHA-256.
+	 *
+	 */
+	{	/* optional: RSASSA-PSS using SHA-256 and MGF1 with SHA-256 */
 		LWS_GENHASH_TYPE_SHA256,
 		LWS_GENHMAC_TYPE_UNKNOWN,
 		LWS_JOSE_ENCTYPE_RSASSA_PKCS1_PSS,
 		LWS_JOSE_ENCTYPE_NONE,
-		"PS256", NULL
+		"PS256", NULL, 2048, 4096, 0
 	},
-	{	/* optional */
+	{	/* optional: RSASSA-PSS using SHA-384 and MGF1 with SHA-384 */
 		LWS_GENHASH_TYPE_SHA384,
 		LWS_GENHMAC_TYPE_UNKNOWN,
 		LWS_JOSE_ENCTYPE_RSASSA_PKCS1_PSS,
 		LWS_JOSE_ENCTYPE_NONE,
-		"PS384", NULL
+		"PS384", NULL, 2048, 4096, 0
 	},
-	{	/* optional */
+	{	/* optional: RSASSA-PSS using SHA-512 and MGF1 with SHA-512*/
 		LWS_GENHASH_TYPE_SHA512,
 		LWS_GENHMAC_TYPE_UNKNOWN,
 		LWS_JOSE_ENCTYPE_RSASSA_PKCS1_PSS,
 		LWS_JOSE_ENCTYPE_NONE,
-		"PS512", NULL
+		"PS512", NULL, 2048, 4096, 0
 	},
+#endif
 };
 
+/*
+ * These came from RFC7518 (JSON Web Algorithms) Section 4
+ *
+ * Cryptographic Algorithms for Key Management
+ *
+ * JWE uses cryptographic algorithms to encrypt or determine the Content
+ * Encryption Key (CEK).
+ */
+
 static const struct lws_jose_jwe_alg lws_gencrypto_jwe_alg_map[] = {
-	{	/* recommended- */
+
+	/*
+	 * This section defines the specifics of encrypting a JWE CEK with
+	 * RSAES-PKCS1-v1_5 [RFC3447].  The "alg" (algorithm) Header Parameter
+	 * value "RSA1_5" is used for this algorithm.
+	 *
+	 * A key of size 2048 bits or larger MUST be used with this algorithm.
+	 */
+
+	{	/* recommended-: RSAES-PKCS1-v1_5 */
 		LWS_GENHASH_TYPE_SHA256,
 		LWS_GENHMAC_TYPE_UNKNOWN,
 		LWS_JOSE_ENCTYPE_RSASSA_PKCS1_1_5,
 		LWS_JOSE_ENCTYPE_NONE,
-		"RSA1_5", NULL
+		"RSA1_5", NULL, 2048, 4096, 0
 	},
-	{	/* recommended+ */
+	{	/* recommended+: RSAES OAEP using default parameters */
 		LWS_GENHASH_TYPE_SHA1,
 		LWS_GENHMAC_TYPE_UNKNOWN,
 		LWS_JOSE_ENCTYPE_RSASSA_PKCS1_OAEP,
 		LWS_JOSE_ENCTYPE_NONE,
-		"RSA-OAEP", NULL
+		"RSA-OAEP", NULL, 2048, 4096, 0
 	},
-
-	{	/* recommended */
+	{	/* recommended+: RSAES OAEP using SHA-256 and MGF1 SHA-256 */
 		LWS_GENHASH_TYPE_SHA256,
 		LWS_GENHMAC_TYPE_UNKNOWN,
 		LWS_JOSE_ENCTYPE_RSASSA_PKCS1_OAEP,
 		LWS_JOSE_ENCTYPE_NONE,
-		"A128KW", NULL
+		"RSA-OAEP", NULL, 2048, 4096, 0
 	},
-	{	/* recommended */
-		LWS_GENHASH_TYPE_SHA256,
+
+	/*
+	 * Key Wrapping with AES Key Wrap
+	 *
+	 * This section defines the specifics of encrypting a JWE CEK with the
+	 * Advanced Encryption Standard (AES) Key Wrap Algorithm [RFC3394] using
+	 * the default initial value specified in Section 2.2.3.1 of that
+	 * document.
+	 *
+	 *
+	 */
+	{	/* recommended: AES Key Wrap with AES Key Wrap with defaults
+				using 128-bit key  */
+		LWS_GENHASH_TYPE_UNKNOWN,
 		LWS_GENHMAC_TYPE_UNKNOWN,
-		LWS_JOSE_ENCTYPE_RSASSA_PKCS1_OAEP,
+		LWS_JOSE_ENCTYPE_AES_ECB,
 		LWS_JOSE_ENCTYPE_NONE,
-		"A256KW", NULL
+		"A128KW", NULL, 128, 128, 64
 	},
 
-	{	/* recommended */
+	{	/* optional: AES Key Wrap with AES Key Wrap with defaults
+				using 192-bit key */
 		LWS_GENHASH_TYPE_UNKNOWN,
 		LWS_GENHMAC_TYPE_UNKNOWN,
+		LWS_JOSE_ENCTYPE_AES_ECB,
 		LWS_JOSE_ENCTYPE_NONE,
-		LWS_JOSE_ENCTYPE_AES_GCM,
-		"dir", NULL
+		"A192KW", NULL, 192, 192, 64
 	},
 
-	{	/* recommended+ */
-		LWS_GENHASH_TYPE_SHA256,
+	{	/* recommended: AES Key Wrap with AES Key Wrap with defaults
+				using 256-bit key */
+		LWS_GENHASH_TYPE_UNKNOWN,
 		LWS_GENHMAC_TYPE_UNKNOWN,
-		LWS_JOSE_ENCTYPE_RSASSA_PKCS1_OAEP,
+		LWS_JOSE_ENCTYPE_AES_ECB,
 		LWS_JOSE_ENCTYPE_NONE,
-		"ECDH-ES", NULL
+		"A256KW", NULL, 256, 256, 64
 	},
+
+	/*
+	 * This section defines the specifics of directly performing symmetric
+	 * key encryption without performing a key wrapping step.  In this case,
+	 * the shared symmetric key is used directly as the Content Encryption
+	 * Key (CEK) value for the "enc" algorithm.  An empty octet sequence is
+	 * used as the JWE Encrypted Key value.  The "alg" (algorithm) Header
+	 * Parameter value "dir" is used in this case.
+	 */
 	{	/* recommended */
+		LWS_GENHASH_TYPE_UNKNOWN,
+		LWS_GENHMAC_TYPE_UNKNOWN,
+		LWS_JOSE_ENCTYPE_NONE,
+		LWS_JOSE_ENCTYPE_NONE,
+		"dir", NULL, 0, 0, 0
+	},
+
+	/*
+	 * Key Agreement with Elliptic Curve Diffie-Hellman Ephemeral Static
+	 * (ECDH-ES)
+	 *
+	 * This section defines the specifics of key agreement with Elliptic
+	 * Curve Diffie-Hellman Ephemeral Static [RFC6090], in combination with
+	 * the Concat KDF, as defined in Section 5.8.1 of [NIST.800-56A].  The
+	 * key agreement result can be used in one of two ways:
+	 *
+	 * 1.  directly as the Content Encryption Key (CEK) for the "enc"
+	 *     algorithm, in the Direct Key Agreement mode, or
+	 *
+	 * 2.  as a symmetric key used to wrap the CEK with the "A128KW",
+	 *     "A192KW", or "A256KW" algorithms, in the Key Agreement with Key
+	 *     Wrapping mode.
+	 *
+	 * A new ephemeral public key value MUST be generated for each key
+	 * agreement operation.
+	 *
+	 * In Direct Key Agreement mode, the output of the Concat KDF MUST be a
+	 * key of the same length as that used by the "enc" algorithm.  In this
+	 * case, the empty octet sequence is used as the JWE Encrypted Key
+	 * value.  The "alg" (algorithm) Header Parameter value "ECDH-ES" is
+	 * used in the Direct Key Agreement mode.
+	 *
+	 * In Key Agreement with Key Wrapping mode, the output of the Concat KDF
+	 * MUST be a key of the length needed for the specified key wrapping
+	 * algorithm.  In this case, the JWE Encrypted Key is the CEK wrapped
+	 * with the agreed-upon key.
+	 */
+
+	{	/* recommended+: ECDH Ephemeral Static Key agreement Concat KDF */
 		LWS_GENHASH_TYPE_SHA256,
 		LWS_GENHMAC_TYPE_UNKNOWN,
-		LWS_JOSE_ENCTYPE_RSASSA_PKCS1_OAEP,
+		LWS_JOSE_ENCTYPE_ECDHES,
 		LWS_JOSE_ENCTYPE_NONE,
-		"ECDH-ES+A128KW", NULL
+		"ECDH-ES", NULL, 128, 128, 0
 	},
-	{	/* recommended */
+	{	/* recommended: ECDH-ES + Concat KDF + wrapped by AES128KW */
 		LWS_GENHASH_TYPE_SHA256,
 		LWS_GENHMAC_TYPE_UNKNOWN,
-		LWS_JOSE_ENCTYPE_RSASSA_PKCS1_OAEP,
+		LWS_JOSE_ENCTYPE_ECDHES,
+		LWS_JOSE_ENCTYPE_AES_ECB,
+		"ECDH-ES+A128KW", NULL, 128, 128, 0
+	},
+	{	/* optional: ECDH-ES + Concat KDF + wrapped by AES192KW */
+		LWS_GENHASH_TYPE_SHA256,
+		LWS_GENHMAC_TYPE_UNKNOWN,
+		LWS_JOSE_ENCTYPE_ECDHES,
+		LWS_JOSE_ENCTYPE_AES_ECB,
+		"ECDH-ES+A192KW", NULL, 192, 192, 0
+	},
+	{	/* recommended: ECDH-ES + Concat KDF + wrapped by AES256KW */
+		LWS_GENHASH_TYPE_SHA256,
+		LWS_GENHMAC_TYPE_UNKNOWN,
+		LWS_JOSE_ENCTYPE_ECDHES,
+		LWS_JOSE_ENCTYPE_AES_ECB,
+		"ECDH-ES+A256KW", NULL, 256, 256, 0
+	},
+
+	/*
+	 * Key Encryption with AES GCM
+	 *
+	 *  This section defines the specifics of encrypting a JWE Content
+	 *  Encryption Key (CEK) with Advanced Encryption Standard (AES) in
+	 *  Galois/Counter Mode (GCM) ([AES] and [NIST.800-38D]).
+	 *
+	 * Use of an Initialization Vector (IV) of size 96 bits is REQUIRED with
+	 * this algorithm.  The IV is represented in base64url-encoded form as
+	 * the "iv" (initialization vector) Header Parameter value.
+	 *
+	 * The Additional Authenticated Data value used is the empty octet
+	 * string.
+	 *
+	 * The requested size of the Authentication Tag output MUST be 128 bits,
+	 * regardless of the key size.
+	 *
+	 * The JWE Encrypted Key value is the ciphertext output.
+	 *
+	 * The Authentication Tag output is represented in base64url-encoded
+	 * form as the "tag" (authentication tag) Header Parameter value.
+	 *
+	 *
+	 * "iv" (Initialization Vector) Header Parameter
+	 *
+	 * The "iv" (initialization vector) Header Parameter value is the
+	 * base64url-encoded representation of the 96-bit IV value used for the
+	 * key encryption operation.  This Header Parameter MUST be present and
+	 * MUST be understood and processed by implementations when these
+	 * algorithms are used.
+	 *
+	 * "tag" (Authentication Tag) Header Parameter
+	 *
+	 * The "tag" (authentication tag) Header Parameter value is the
+	 * base64url-encoded representation of the 128-bit Authentication Tag
+	 * value resulting from the key encryption operation.  This Header
+	 * Parameter MUST be present and MUST be understood and processed by
+	 * implementations when these algorithms are used.
+	 */
+	{	/* optional: Key wrapping with AES GCM using 128-bit key  */
+		LWS_GENHASH_TYPE_UNKNOWN,
+		LWS_GENHMAC_TYPE_UNKNOWN,
+		LWS_JOSE_ENCTYPE_AES_ECB,
+		LWS_JOSE_ENCTYPE_NONE,
+		"A128GCMKW", NULL, 128, 128, 96
+	},
+
+	{	/* optional: Key wrapping with AES GCM using 192-bit key */
+		LWS_GENHASH_TYPE_UNKNOWN,
+		LWS_GENHMAC_TYPE_UNKNOWN,
+		LWS_JOSE_ENCTYPE_AES_ECB,
+		LWS_JOSE_ENCTYPE_NONE,
+		"A192GCMKW", NULL, 192, 192, 96
+	},
+
+	{	/* optional: Key wrapping with AES GCM using 256-bit key */
+		LWS_GENHASH_TYPE_UNKNOWN,
+		LWS_GENHMAC_TYPE_UNKNOWN,
+		LWS_JOSE_ENCTYPE_AES_ECB,
 		LWS_JOSE_ENCTYPE_NONE,
-		"ECDH-ES+A256KW", NULL
+		"A256GCMKW", NULL, 256, 256, 96
 	},
 
 	/* list terminator */
 	{ 0, 0, 0, 0, NULL, NULL }
 };
 
+/*
+ * The "enc" (encryption algorithm) Header Parameter identifies the
+ * content encryption algorithm used to perform authenticated encryption
+ * on the plaintext to produce the ciphertext and the Authentication
+ * Tag.  This algorithm MUST be an AEAD algorithm with a specified key
+ * length.  The encrypted content is not usable if the "enc" value does
+ * not represent a supported algorithm.  "enc" values should either be
+ * registered in the IANA "JSON Web Signature and Encryption Algorithms"
+ * registry established by [JWA] or be a value that contains a
+ * Collision-Resistant Name.  The "enc" value is a case-sensitive ASCII
+ * string containing a StringOrURI value.  This Header Parameter MUST be
+ * present and MUST be understood and processed by implementations.
+ */
 
 static const struct lws_jose_jwe_alg lws_gencrypto_jwe_enc_map[] = {
 	/*
+	 * AES_128_CBC_HMAC_SHA_256 / 512
+	 *
 	 * It uses the HMAC message authentication code [RFC2104] with the
 	 * SHA-256 hash function [SHS] to provide message authentication, with
 	 * the HMAC output truncated to 128 bits, corresponding to the
@@ -213,7 +497,71 @@ static const struct lws_jose_jwe_alg lws_gencrypto_jwe_enc_map[] = {
 		LWS_GENHMAC_TYPE_SHA256,
 		LWS_JOSE_ENCTYPE_NONE,
 		LWS_JOSE_ENCTYPE_AES_CBC,
-		"A128CBC-HS256", NULL
+		"A128CBC-HS256", NULL, 256, 256, 128
+	},
+	/*
+	 * AES_192_CBC_HMAC_SHA_384 is based on AES_128_CBC_HMAC_SHA_256, but
+	 * with the following differences:
+	 *
+	 * The input key K is 48 octets long instead of 32.
+	 * ENC_KEY_LEN is 24 octets instead of 16.
+	 * MAC_KEY_LEN is 24 octets instead of 16.
+	 * SHA-384 is used for the HMAC instead of SHA-256.
+	 * The HMAC SHA-384 value is truncated to T_LEN=24 octets instead of 16.
+	 */
+	{	/* required */
+		LWS_GENHASH_TYPE_UNKNOWN,
+		LWS_GENHMAC_TYPE_SHA384,
+		LWS_JOSE_ENCTYPE_NONE,
+		LWS_JOSE_ENCTYPE_AES_CBC,
+		"A192CBC-HS384", NULL, 384, 384, 192
+	},
+	/*
+	 * AES_256_CBC_HMAC_SHA_512 is based on AES_128_CBC_HMAC_SHA_256, but
+	 * with the following differences:
+	 *
+	 * The input key K is 64 octets long instead of 32.
+	 * ENC_KEY_LEN is 32 octets instead of 16.
+	 * MAC_KEY_LEN is 32 octets instead of 16.
+	 * SHA-512 is used for the HMAC instead of SHA-256.
+	 * The HMAC SHA-512 value is truncated to T_LEN=32 octets instead of 16.
+	 */
+	{	/* required */
+		LWS_GENHASH_TYPE_UNKNOWN,
+		LWS_GENHMAC_TYPE_SHA512,
+		LWS_JOSE_ENCTYPE_NONE,
+		LWS_JOSE_ENCTYPE_AES_CBC,
+		"A256CBC-HS512", NULL, 512, 512, 256
+	},
+
+	/*
+	 * The CEK is used as the encryption key.
+	 *
+	 * Use of an IV of size 96 bits is REQUIRED with this algorithm.
+	 *
+	 * The requested size of the Authentication Tag output MUST be 128 bits,
+	 * regardless of the key size.
+	 */
+	{	/* recommended: AES GCM using 128-bit key  */
+		LWS_GENHASH_TYPE_UNKNOWN,
+		LWS_GENHMAC_TYPE_UNKNOWN,
+		LWS_JOSE_ENCTYPE_NONE,
+		LWS_JOSE_ENCTYPE_AES_GCM,
+		"A128GCM", NULL, 128, 128, 96
+	},
+	{	/* optional: AES GCM using 192-bit key  */
+		LWS_GENHASH_TYPE_UNKNOWN,
+		LWS_GENHMAC_TYPE_UNKNOWN,
+		LWS_JOSE_ENCTYPE_NONE,
+		LWS_JOSE_ENCTYPE_AES_GCM,
+		"A192GCM", NULL, 192, 192, 96
+	},
+	{	/* recommended: AES GCM using 256-bit key */
+		LWS_GENHASH_TYPE_UNKNOWN,
+		LWS_GENHMAC_TYPE_UNKNOWN,
+		LWS_JOSE_ENCTYPE_NONE,
+		LWS_JOSE_ENCTYPE_AES_GCM,
+		"A256GCM", NULL, 256, 256, 96
 	},
 };
 
@@ -306,3 +654,28 @@ lws_genhmac_size(enum lws_genhmac_types type)
 
 	return 0;
 }
+
+int
+lws_gencrypto_bits_to_bytes(int bits)
+{
+	if (bits & 7)
+		return (bits / 8) + 1;
+
+	return bits / 8;
+}
+
+int
+lws_base64_size(int bytes)
+{
+	return ((bytes * 4) / 3) + 6;
+}
+
+void
+lws_gencrypto_destroy_elements(struct lws_gencrypto_keyelem *el, int m)
+{
+	int n;
+
+	for (n = 0; n < m; n++)
+		if (el[n].buf)
+			lws_free_set_NULL(el[n].buf);
+}
diff --git a/lib/tls/lws-genec-common.c b/lib/tls/lws-genec-common.c
index f9e7b122..d3e6da22 100644
--- a/lib/tls/lws-genec-common.c
+++ b/lib/tls/lws-genec-common.c
@@ -57,6 +57,8 @@ lws_genec_dump(struct lws_gencrypto_keyelem *el)
 {
 	int n;
 
+	(void)enames;
+
 	lwsl_info("  genec %p: crv: '%s'\n", el,
 		  !!el[LWS_GENCRYPTO_EC_KEYEL_CRV].buf ?
 		  (char *)el[LWS_GENCRYPTO_EC_KEYEL_CRV].buf: "no curve name");
diff --git a/lib/tls/mbedtls/lws-genaes.c b/lib/tls/mbedtls/lws-genaes.c
index 8f3d8789..0e4da817 100644
--- a/lib/tls/mbedtls/lws-genaes.c
+++ b/lib/tls/mbedtls/lws-genaes.c
@@ -29,9 +29,9 @@ static int operation_map[] = { MBEDTLS_AES_ENCRYPT, MBEDTLS_AES_DECRYPT };
 LWS_VISIBLE int
 lws_genaes_create(struct lws_genaes_ctx *ctx, enum enum_aes_operation op,
 		  enum enum_aes_modes mode, struct lws_gencrypto_keyelem *el,
-		  int padding, void *engine)
+		  enum enum_aes_padding padding, void *engine)
 {
-	int n;
+	int n = 0;
 
 	ctx->mode = mode;
 	ctx->k = el;
@@ -40,8 +40,12 @@ lws_genaes_create(struct lws_genaes_ctx *ctx, enum enum_aes_operation op,
 
 	switch (ctx->mode) {
 	case LWS_GAESM_XTS:
+#if defined(MBEDTLS_CIPHER_MODE_XTS)
 		mbedtls_aes_xts_init(&ctx->u.ctx_xts);
 		break;
+#else
+		return -1;
+#endif
 	case LWS_GAESM_GCM:
 		mbedtls_gcm_init(&ctx->u.ctx_gcm);
 		n = mbedtls_gcm_setkey(&ctx->u.ctx_gcm, MBEDTLS_CIPHER_ID_AES,
@@ -107,23 +111,22 @@ lws_genaes_create(struct lws_genaes_ctx *ctx, enum enum_aes_operation op,
 LWS_VISIBLE int
 lws_genaes_destroy(struct lws_genaes_ctx *ctx, unsigned char *tag, size_t tlen)
 {
-	int n;
+	int n = 0;
 
 	if (ctx->mode == LWS_GAESM_GCM) {
-		if (tag) {
-			n = mbedtls_gcm_finish(&ctx->u.ctx_gcm, tag, tlen);
-			if (n)
-				lwsl_notice("%s: mbedtls_gcm_finish: -0x%x\n",
-					    __func__, -n);
-			else
-				if (memcmp(ctx->tag, tag, ctx->taglen)) {
-					lwsl_err("%s: lws_genaes_crypt tag "
-						 "mismatch (bad first)\n",
-							__func__);
-					lwsl_hexdump_notice(tag, tlen);
-					lwsl_hexdump_notice(ctx->tag, ctx->taglen);
-					n = -1;
-				}
+		n = mbedtls_gcm_finish(&ctx->u.ctx_gcm, tag, tlen);
+		if (n)
+			lwsl_notice("%s: mbedtls_gcm_finish: -0x%x\n",
+				    __func__, -n);
+		if (tag && ctx->op == MBEDTLS_AES_DECRYPT && !n) {
+			if (lws_timingsafe_bcmp(ctx->tag, tag, ctx->taglen)) {
+				lwsl_err("%s: lws_genaes_crypt tag "
+					 "mismatch (bad first)\n",
+						__func__);
+				lwsl_hexdump_notice(tag, tlen);
+				lwsl_hexdump_notice(ctx->tag, ctx->taglen);
+				n = -1;
+			}
 		}
 		mbedtls_gcm_free(&ctx->u.ctx_gcm);
 		return n;
@@ -140,15 +143,134 @@ lws_genaes_destroy(struct lws_genaes_ctx *ctx, unsigned char *tag, size_t tlen)
 	return 0;
 }
 
+static int
+lws_genaes_rfc3394_wrap(int wrap, int cek_bits, const uint8_t *kek,
+			int kek_bits, const uint8_t *in, uint8_t *out)
+{
+	int n, m, ret = -1, c64 = cek_bits / 64;
+	mbedtls_aes_context ctx;
+	uint8_t a[8], b[16];
+
+	/*
+	 * notice the KEK key used to perform the wrapping or unwrapping is
+	 * always the size of the AES key used, eg, A128KW == 128 bits.  The
+	 * key being wrapped or unwrapped may be larger and is set by the
+	 * 'bits' parameter.
+	 *
+	 * If it's larger than the KEK key size bits, we iterate over it
+	 */
+
+	mbedtls_aes_init(&ctx);
+
+	if (wrap) {
+		/*
+		 * The inputs to the key wrapping process are the KEK and the
+		 * plaintext to be wrapped.  The plaintext consists of n 64-bit
+		 * blocks, containing the key data being wrapped.
+		 *
+		 * Inputs:      Plaintext, n 64-bit values {P1, P2, ..., Pn},
+		 *		and Key, K (the KEK).
+		 * Outputs:     Ciphertext, (n+1) 64-bit values
+		 *		{C0, C1, ..., Cn}.
+		 *
+		 * The default initial value (IV) is defined to be the
+		 * hexadecimal constant:
+		 *
+		 * A[0] = IV = A6A6A6A6A6A6A6A6
+		 */
+		memset(out, 0xa6, 8);
+		memcpy(out + 8, in, 8 * c64);
+		n = mbedtls_aes_setkey_enc(&ctx, kek, kek_bits);
+	} else {
+		/*
+		 * 2.2.2 Key Unwrap
+		 *
+		 * The inputs to the unwrap process are the KEK and (n+1)
+		 * 64-bit blocks of ciphertext consisting of previously
+		 * wrapped key.  It returns n blocks of plaintext consisting
+		 * of the n 64-bit blocks of the decrypted key data.
+		 *
+		 * Inputs:  Ciphertext, (n+1) 64-bit values {C0, C1, ..., Cn},
+		 * and Key, K (the KEK).
+		 *
+		 * Outputs: Plaintext, n 64-bit values {P1, P2, ..., Pn}.
+		 */
+		memcpy(a, in, 8);
+		memcpy(out, in + 8, 8 * c64);
+		n = mbedtls_aes_setkey_dec(&ctx, kek, kek_bits);
+	}
+
+	if (n < 0) {
+		lwsl_err("%s: setkey failed\n", __func__);
+		goto bail;
+	}
+
+	if (wrap) {
+		for (n = 0; n <= 5; n++) {
+			uint8_t *r = out + 8;
+			for (m = 1; m <= c64; m++) {
+				memcpy(b, out, 8);
+				memcpy(b + 8, r, 8);
+				if (mbedtls_internal_aes_encrypt(&ctx, b, b))
+					goto bail;
+
+				memcpy(out, b, 8);
+				out[7] ^= c64 * n + m;
+				memcpy(r, b + 8, 8);
+				r += 8;
+			}
+		}
+		ret = 0;
+	} else {
+		/*
+		 *
+		 */
+		for (n = 5; n >= 0; n--) {
+			uint8_t *r = out + (c64 - 1) * 8;
+			for (m = c64; m >= 1; m--) {
+				memcpy(b, a, 8);
+				b[7] ^= c64 * n + m;
+				memcpy(b + 8, r, 8);
+				if (mbedtls_internal_aes_decrypt(&ctx, b, b))
+					goto bail;
+
+				memcpy(a, b, 8);
+				memcpy(r, b + 8, 8);
+				r -= 8;
+			}
+		}
+
+		ret = 0;
+		for (n = 0; n < 8; n++)
+			if (a[n] != 0xa6)
+				ret = -1;
+	}
+
+bail:
+	if (ret)
+		lwsl_notice("%s: failed\n", __func__);
+	mbedtls_aes_free(&ctx);
+
+	return ret;
+}
+
 LWS_VISIBLE int
 lws_genaes_crypt(struct lws_genaes_ctx *ctx, const uint8_t *in, size_t len,
 		 uint8_t *out, uint8_t *iv_or_nonce_ctr_or_data_unit_16,
 		 uint8_t *stream_block_16, size_t *nc_or_iv_off, int taglen)
 {
-	uint8_t iv[16], sb[16];
-	int n;
+	uint8_t iv[LWS_JWE_AES_IV_BYTES], sb[16];
+	int n = 0;
 
 	switch (ctx->mode) {
+	case LWS_GAESM_KW:
+		/* a key of length ctx->k->len is wrapped by a 128-bit KEK */
+		n = lws_genaes_rfc3394_wrap(ctx->op == MBEDTLS_AES_ENCRYPT,
+				ctx->op == MBEDTLS_AES_ENCRYPT ? len * 8 :
+						(len - 8) * 8, ctx->k->buf,
+						ctx->k->len * 8,
+				in, out);
+		break;
 	case LWS_GAESM_CBC:
 		memcpy(iv, iv_or_nonce_ctr_or_data_unit_16, 16);
 		n = mbedtls_aes_crypt_cbc(&ctx->u.ctx, ctx->op, len, iv,
@@ -181,10 +303,14 @@ lws_genaes_crypt(struct lws_genaes_ctx *ctx, const uint8_t *in, size_t len,
 		break;
 
 	case LWS_GAESM_OFB:
+#if defined(MBEDTLS_CIPHER_MODE_OFB)
 		memcpy(iv, iv_or_nonce_ctr_or_data_unit_16, 16);
 		n = mbedtls_aes_crypt_ofb(&ctx->u.ctx, len, nc_or_iv_off, iv,
 					  in, out);
 		break;
+#else
+		return -1;
+#endif
 
 	case LWS_GAESM_XTS:
 #if defined(MBEDTLS_CIPHER_MODE_XTS)
@@ -233,7 +359,7 @@ lws_genaes_crypt(struct lws_genaes_ctx *ctx, const uint8_t *in, size_t len,
 	}
 
 	if (n) {
-		lwsl_notice("%s: enc: -0x%x, len %d\n", __func__, -n, (int)len);
+		lwsl_notice("%s: failed: -0x%x, len %d\n", __func__, -n, (int)len);
 
 		return -1;
 	}
diff --git a/lib/tls/mbedtls/lws-gencrypto.c b/lib/tls/mbedtls/lws-gencrypto.c
index 8d261934..abbfd563 100644
--- a/lib/tls/mbedtls/lws-gencrypto.c
+++ b/lib/tls/mbedtls/lws-gencrypto.c
@@ -52,8 +52,10 @@ lws_gencrypto_mbedtls_hash_to_MD_TYPE(enum lws_genhash_types hash_type)
 int
 lws_gencrypto_mbedtls_rngf(void *context, unsigned char *buf, size_t len)
 {
-	if ((size_t)lws_get_random(context, buf, len) == len)
+	if ((size_t)lws_get_random(context, buf, len) == len) {
+		// lwsl_hexdump_err(buf, len);
 		return 0;
-
+	}
+	lwsl_err("%s: rng failed\n", __func__);
 	return -1;
 }
diff --git a/lib/tls/mbedtls/lws-genec.c b/lib/tls/mbedtls/lws-genec.c
index 0b97ea85..8d080785 100644
--- a/lib/tls/mbedtls/lws-genec.c
+++ b/lib/tls/mbedtls/lws-genec.c
@@ -86,6 +86,8 @@ lws_genec_keypair_import(struct lws_genec_ctx *ctx, enum enum_lws_dh_side side,
 				    el[LWS_GENCRYPTO_EC_KEYEL_Y].len))
 		goto bail1;
 
+	mbedtls_mpi_lset(&kp.Q.Z, 1);
+
 	switch (ctx->genec_alg) {
 	case LEGENEC_ECDH:
 		if (mbedtls_ecdh_get_params(ctx->u.ctx_ecdh, &kp, side))
@@ -112,6 +114,7 @@ lws_genecdh_create(struct lws_genec_ctx *ctx, struct lws_context *context,
 		   const struct lws_ec_curves *curve_table)
 {
 	memset(ctx, 0, sizeof(*ctx));
+
 	ctx->context = context;
 	ctx->curve_table = curve_table;
 	ctx->genec_alg = LEGENEC_ECDH;
@@ -130,15 +133,16 @@ lws_genecdsa_create(struct lws_genec_ctx *ctx, struct lws_context *context,
 		    const struct lws_ec_curves *curve_table)
 {
 	memset(ctx, 0, sizeof(*ctx));
+
 	ctx->context = context;
 	ctx->curve_table = curve_table;
 	ctx->genec_alg = LEGENEC_ECDSA;
 
-	ctx->u.ctx_ecdh = lws_zalloc(sizeof(*ctx->u.ctx_ecdh), "genecdh");
-	if (!ctx->u.ctx_ecdh)
+	ctx->u.ctx_ecdsa = lws_zalloc(sizeof(*ctx->u.ctx_ecdsa), "genecdsa");
+	if (!ctx->u.ctx_ecdsa)
 		return 1;
 
-	mbedtls_ecdh_init(ctx->u.ctx_ecdh);
+	mbedtls_ecdsa_init(ctx->u.ctx_ecdsa);
 
 	return 0;
 }
@@ -210,7 +214,8 @@ lws_genecdh_new_keypair(struct lws_genec_ctx *ctx, enum enum_lws_dh_side side,
 	}
 
 	mbedtls_ecdsa_init(&ecdsa);
-	n = mbedtls_ecdsa_genkey(&ecdsa, curve->tls_lib_nid, lws_gencrypto_mbedtls_rngf,
+	n = mbedtls_ecdsa_genkey(&ecdsa, curve->tls_lib_nid,
+				 lws_gencrypto_mbedtls_rngf,
 				 ctx->context);
 	if (n) {
 		lwsl_err("mbedtls_ecdsa_genkey failed 0x%x\n", -n);
@@ -241,7 +246,8 @@ lws_genecdh_new_keypair(struct lws_genec_ctx *ctx, enum enum_lws_dh_side side,
 		goto bail1;
 	strcpy((char *)el[LWS_GENCRYPTO_EC_KEYEL_CRV].buf, curve_name);
 
-	for (n = LWS_GENCRYPTO_EC_KEYEL_X; n < LWS_GENCRYPTO_EC_KEYEL_COUNT; n++) {
+	for (n = LWS_GENCRYPTO_EC_KEYEL_X; n < LWS_GENCRYPTO_EC_KEYEL_COUNT;
+	     n++) {
 		el[n].len = curve->key_bytes;
 		el[n].buf = lws_malloc(curve->key_bytes, "ec");
 		if (!el[n].buf)
@@ -288,7 +294,7 @@ lws_genecdsa_new_keypair(struct lws_genec_ctx *ctx, const char *curve_name,
 		return -22;
 	}
 
-	mbedtls_ecdsa_init(ctx->u.ctx_ecdsa);
+	//mbedtls_ecdsa_init(ctx->u.ctx_ecdsa);
 	n = mbedtls_ecdsa_genkey(ctx->u.ctx_ecdsa, curve->tls_lib_nid,
 				 lws_gencrypto_mbedtls_rngf, ctx->context);
 	if (n) {
@@ -301,7 +307,7 @@ lws_genecdsa_new_keypair(struct lws_genec_ctx *ctx, const char *curve_name,
 	 * lws_gencrypto_keyelems, so they can be serialized, used in jwk etc
 	 */
 
-	kp = (mbedtls_ecp_keypair *)&ctx->u.ctx_ecdsa;
+	kp = (mbedtls_ecp_keypair *)ctx->u.ctx_ecdsa;
 
 	mpi[0] = &kp->Q.X;
 	mpi[1] = &kp->d;
@@ -314,15 +320,18 @@ lws_genecdsa_new_keypair(struct lws_genec_ctx *ctx, const char *curve_name,
 		goto bail1;
 	strcpy((char *)el[LWS_GENCRYPTO_EC_KEYEL_CRV].buf, curve_name);
 
-	for (n = LWS_GENCRYPTO_EC_KEYEL_X; n < LWS_GENCRYPTO_EC_KEYEL_COUNT; n++) {
+	for (n = LWS_GENCRYPTO_EC_KEYEL_X; n < LWS_GENCRYPTO_EC_KEYEL_COUNT;
+	     n++) {
 		el[n].len = curve->key_bytes;
 		el[n].buf = lws_malloc(curve->key_bytes, "ec");
 		if (!el[n].buf)
 			goto bail2;
 
-		if (mbedtls_mpi_write_binary(mpi[n - 1], el[n].buf,
-					     curve->key_bytes))
+
+		if (mbedtls_mpi_write_binary(mpi[n - 1], el[n].buf, el[n].len)) {
+			lwsl_err("%s: mbedtls_mpi_write_binary failed\n", __func__);
 			goto bail2;
+		}
 	}
 
 	return 0;
@@ -339,65 +348,121 @@ bail1:
 }
 
 LWS_VISIBLE LWS_EXTERN int
-lws_genecdsa_hash_sign(struct lws_genec_ctx *ctx, const uint8_t *in,
-		       enum lws_genhash_types hash_type,
+lws_genecdsa_hash_sign_jws(struct lws_genec_ctx *ctx, const uint8_t *in,
+		       enum lws_genhash_types hash_type, int keybits,
 		       uint8_t *sig, size_t sig_len)
 {
-	mbedtls_md_type_t md_type =
-			lws_gencrypto_mbedtls_hash_to_MD_TYPE(hash_type);
+	int n, keybytes = lws_gencrypto_bits_to_bytes(keybits);
+	size_t hlen = lws_genhash_size(hash_type);
+	mbedtls_mpi mpi_r, mpi_s;
 	size_t slen = sig_len;
-	int n;
 
 	if (ctx->genec_alg != LEGENEC_ECDSA)
 		return -1;
 
-	if (md_type < 0)
-		return -2;
+	/*
+	 * The ECDSA P-256 SHA-256 digital signature is generated as follows:
+	 *
+	 * 1.  Generate a digital signature of the JWS Signing Input using ECDSA
+	 *     P-256 SHA-256 with the desired private key.  The output will be
+	 *     the pair (R, S), where R and S are 256-bit unsigned integers.
+	 *
+	 * 2.  Turn R and S into octet sequences in big-endian order, with each
+	 *     array being be 32 octets long.  The octet sequence
+	 *     representations MUST NOT be shortened to omit any leading zero
+	 *     octets contained in the values.
+	 *
+	 * 3.  Concatenate the two octet sequences in the order R and then S.
+	 *     (Note that many ECDSA implementations will directly produce this
+	 *     concatenation as their output.)
+	 *
+	 * 4.  The resulting 64-octet sequence is the JWS Signature value.
+	 */
 
+	mbedtls_mpi_init(&mpi_r);
+	mbedtls_mpi_init(&mpi_s);
 
-	n = mbedtls_ecdsa_write_signature(ctx->u.ctx_ecdsa, md_type, in,
-					  lws_genhash_size(hash_type), sig,
-					  &slen, lws_gencrypto_mbedtls_rngf,
-					  ctx->context);
+	n = mbedtls_ecdsa_sign(&ctx->u.ctx_ecdsa->grp, &mpi_r, &mpi_s,
+			       &ctx->u.ctx_ecdsa->d, in, hlen,
+			lws_gencrypto_mbedtls_rngf, ctx->context);
 	if (n) {
-		lwsl_err("%s: mbedtls_ecdsa_write_signature failed: -0x%x\n",
+		lwsl_err("%s: mbedtls_ecdsa_sign failed: -0x%x\n",
 			 __func__, -n);
 
-		goto bail;
+		goto bail2;
 	}
 
+	if (mbedtls_mpi_write_binary(&mpi_r, sig, keybytes))
+		goto bail2;
+	mbedtls_mpi_free(&mpi_r);
+	if (mbedtls_mpi_write_binary(&mpi_s, sig + keybytes, keybytes))
+		goto bail1;
+	mbedtls_mpi_free(&mpi_s);
+
 	return (int)slen;
-bail:
+
+bail2:
+	mbedtls_mpi_free(&mpi_r);
+bail1:
+	mbedtls_mpi_free(&mpi_s);
 
 	return -3;
 }
 
 LWS_VISIBLE LWS_EXTERN int
-lws_genecdsa_hash_sig_verify(struct lws_genec_ctx *ctx, const uint8_t *in,
-			     enum lws_genhash_types hash_type,
-			     const uint8_t *sig, size_t sig_len)
+lws_genecdsa_hash_sig_verify_jws(struct lws_genec_ctx *ctx, const uint8_t *in,
+				 enum lws_genhash_types hash_type, int keybits,
+				 const uint8_t *sig, size_t sig_len)
 {
-	mbedtls_md_type_t md_type =
-			lws_gencrypto_mbedtls_hash_to_MD_TYPE(hash_type);
-	int n;
+	int n, keybytes = lws_gencrypto_bits_to_bytes(keybits);
+	size_t hlen = lws_genhash_size(hash_type);
+	mbedtls_mpi mpi_r, mpi_s;
 
 	if (ctx->genec_alg != LEGENEC_ECDSA)
 		return -1;
 
-	if (md_type < 0)
-		return -2;
+	if ((int)sig_len != keybytes * 2)
+		return -1;
+
+	/*
+	 * 1.  The JWS Signature value MUST be a 64-octet sequence.  If it is
+	 *     not a 64-octet sequence, the validation has failed.
+	 *
+	 * 2.  Split the 64-octet sequence into two 32-octet sequences.  The
+	 *     first octet sequence represents R and the second S.  The values R
+	 *     and S are represented as octet sequences using the Integer-to-
+	 *     OctetString Conversion defined in Section 2.3.7 of SEC1 [SEC1]
+	 *     (in big-endian octet order).
+	 *
+	 * 3.  Submit the JWS Signing Input, R, S, and the public key (x, y) to
+	 *     the ECDSA P-256 SHA-256 validator.
+	 */
+
+	mbedtls_mpi_init(&mpi_r);
+	mbedtls_mpi_init(&mpi_s);
+
+	if (mbedtls_mpi_read_binary(&mpi_r, sig, keybytes))
+		return -1;
+	if (mbedtls_mpi_read_binary(&mpi_s, sig + keybytes, keybytes))
+		goto bail1;
+
+	n = mbedtls_ecdsa_verify(&ctx->u.ctx_ecdsa->grp, in, hlen,
+				 &ctx->u.ctx_ecdsa->Q, &mpi_r, &mpi_s);
+
+	mbedtls_mpi_free(&mpi_s);
+	mbedtls_mpi_free(&mpi_r);
 
-	n = mbedtls_ecdsa_read_signature(ctx->u.ctx_ecdsa, in,
-					 lws_genhash_size(hash_type), sig,
-					 sig_len);
 	if (n) {
-		lwsl_err("%s: mbedtls_ecdsa_write_signature failed: -0x%x\n",
+		lwsl_err("%s: mbedtls_ecdsa_verify failed: -0x%x\n",
 			 __func__, -n);
 
 		goto bail;
 	}
 
 	return 0;
+bail1:
+	mbedtls_mpi_free(&mpi_r);
+
 bail:
 
 	return -3;
diff --git a/lib/tls/mbedtls/lws-genhash.c b/lib/tls/mbedtls/lws-genhash.c
index 01c45321..a5770d62 100644
--- a/lib/tls/mbedtls/lws-genhash.c
+++ b/lib/tls/mbedtls/lws-genhash.c
@@ -62,6 +62,9 @@ lws_genhash_init(struct lws_genhash_ctx *ctx, enum lws_genhash_types type)
 int
 lws_genhash_update(struct lws_genhash_ctx *ctx, const void *in, size_t len)
 {
+	if (!len)
+		return 0;
+
 	switch (ctx->type) {
 	case LWS_GENHASH_TYPE_SHA1:
 		MBA(mbedtls_sha1_update)(&ctx->u.sha1, in, len);
@@ -147,6 +150,9 @@ lws_genhmac_init(struct lws_genhmac_ctx *ctx, enum lws_genhmac_types type,
 int
 lws_genhmac_update(struct lws_genhmac_ctx *ctx, const void *in, size_t len)
 {
+	if (!len)
+		return 0;
+
 	if (mbedtls_md_hmac_update(&ctx->ctx, in, len))
 		return -1;
 
diff --git a/lib/tls/mbedtls/lws-genrsa.c b/lib/tls/mbedtls/lws-genrsa.c
index 4004777f..5eb6c5b7 100644
--- a/lib/tls/mbedtls/lws-genrsa.c
+++ b/lib/tls/mbedtls/lws-genrsa.c
@@ -23,6 +23,7 @@
  */
 #include "core/private.h"
 #include "tls/mbedtls/private.h"
+#include <mbedtls/rsa.h>
 
 LWS_VISIBLE void
 lws_genrsa_destroy_elements(struct lws_gencrypto_keyelem *el)
@@ -38,7 +39,8 @@ static int mode_map[] = { MBEDTLS_RSA_PKCS_V15, MBEDTLS_RSA_PKCS_V21 };
 
 LWS_VISIBLE int
 lws_genrsa_create(struct lws_genrsa_ctx *ctx, struct lws_gencrypto_keyelem *el,
-		  struct lws_context *context, enum enum_genrsa_mode mode)
+		  struct lws_context *context, enum enum_genrsa_mode mode,
+		  enum lws_genhash_types oaep_hashid)
 {
 	memset(ctx, 0, sizeof(*ctx));
 	ctx->ctx = lws_zalloc(sizeof(*ctx->ctx), "genrsa");
@@ -53,6 +55,9 @@ lws_genrsa_create(struct lws_genrsa_ctx *ctx, struct lws_gencrypto_keyelem *el,
 
 	mbedtls_rsa_init(ctx->ctx, mode_map[mode], 0);
 
+	ctx->ctx->padding = mode_map[mode];
+	ctx->ctx->hash_id = lws_gencrypto_mbedtls_hash_to_MD_TYPE(oaep_hashid);
+
 	{
 		int n;
 
@@ -71,6 +76,20 @@ lws_genrsa_create(struct lws_genrsa_ctx *ctx, struct lws_gencrypto_keyelem *el,
 
 				return -1;
 			}
+
+		/* mbedtls... compute missing P & Q */
+
+		if ( el[LWS_GENCRYPTO_RSA_KEYEL_D].len &&
+		    !el[LWS_GENCRYPTO_RSA_KEYEL_P].len &&
+		    !el[LWS_GENCRYPTO_RSA_KEYEL_Q].len) {
+			if (mbedtls_rsa_complete(ctx->ctx)) {
+				lwsl_notice("mbedtls_rsa_complete failed\n");
+				lws_free_set_NULL(ctx->ctx);
+
+				return -1;
+			}
+
+		}
 	}
 
 	ctx->ctx->len = el[LWS_GENCRYPTO_RSA_KEYEL_N].len;
@@ -153,15 +172,19 @@ lws_genrsa_public_decrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in,
 
 	ctx->ctx->len = in_len;
 
+	mbedtls_rsa_complete(ctx->ctx);
+
 	switch(ctx->mode) {
 	case LGRSAM_PKCS1_1_5:
-		n = mbedtls_rsa_rsaes_pkcs1_v15_decrypt(ctx->ctx, NULL, NULL,
+		n = mbedtls_rsa_rsaes_pkcs1_v15_decrypt(ctx->ctx, _rngf,
+							ctx->context,
 							MBEDTLS_RSA_PUBLIC,
 							&olen, in, out,
 							out_max);
 		break;
 	case LGRSAM_PKCS1_OAEP_PSS:
-		n = mbedtls_rsa_rsaes_oaep_decrypt(ctx->ctx, NULL, NULL,
+		n = mbedtls_rsa_rsaes_oaep_decrypt(ctx->ctx, _rngf,
+						   ctx->context,
 						   MBEDTLS_RSA_PUBLIC,
 						   NULL, 0,
 						   &olen, in, out, out_max);
@@ -178,13 +201,86 @@ lws_genrsa_public_decrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in,
 	return olen;
 }
 
+LWS_VISIBLE int
+lws_genrsa_private_decrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in,
+			   size_t in_len, uint8_t *out, size_t out_max)
+{
+	size_t olen = 0;
+	int n;
+
+	ctx->ctx->len = in_len;
+
+	mbedtls_rsa_complete(ctx->ctx);
+
+	switch(ctx->mode) {
+	case LGRSAM_PKCS1_1_5:
+		n = mbedtls_rsa_rsaes_pkcs1_v15_decrypt(ctx->ctx, _rngf,
+							ctx->context,
+							MBEDTLS_RSA_PRIVATE,
+							&olen, in, out,
+							out_max);
+		break;
+	case LGRSAM_PKCS1_OAEP_PSS:
+		n = mbedtls_rsa_rsaes_oaep_decrypt(ctx->ctx, _rngf,
+						   ctx->context,
+						   MBEDTLS_RSA_PRIVATE,
+						   NULL, 0,
+						   &olen, in, out, out_max);
+		break;
+	default:
+		return -1;
+	}
+	if (n) {
+		lwsl_notice("%s: -0x%x\n", __func__, -n);
+
+		return -1;
+	}
+
+	return olen;
+}
+
 LWS_VISIBLE int
 lws_genrsa_public_encrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in,
 			  size_t in_len, uint8_t *out)
 {
 	int n;
 
-	ctx->ctx->padding = mode_map[ctx->mode];
+	mbedtls_rsa_complete(ctx->ctx);
+
+	switch(ctx->mode) {
+	case LGRSAM_PKCS1_1_5:
+		n = mbedtls_rsa_rsaes_pkcs1_v15_encrypt(ctx->ctx, _rngf,
+							ctx->context,
+							MBEDTLS_RSA_PUBLIC,
+							in_len, in, out);
+		break;
+	case LGRSAM_PKCS1_OAEP_PSS:
+		n = mbedtls_rsa_rsaes_oaep_encrypt(ctx->ctx, _rngf,
+						   ctx->context,
+						   MBEDTLS_RSA_PUBLIC,
+						   NULL, 0,
+						   in_len, in, out);
+		break;
+	default:
+		return -1;
+	}
+	if (n < 0) {
+		lwsl_notice("%s: -0x%x: in_len: %d\n", __func__, -n,
+				(int)in_len);
+
+		return -1;
+	}
+
+	return mbedtls_mpi_size(&ctx->ctx->N);
+}
+
+LWS_VISIBLE int
+lws_genrsa_private_encrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in,
+			   size_t in_len, uint8_t *out)
+{
+	int n;
+
+	mbedtls_rsa_complete(ctx->ctx);
 
 	switch(ctx->mode) {
 	case LGRSAM_PKCS1_1_5:
@@ -210,7 +306,7 @@ lws_genrsa_public_encrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in,
 		return -1;
 	}
 
-	return 0;
+	return mbedtls_mpi_size(&ctx->ctx->N);
 }
 
 LWS_VISIBLE int
@@ -223,6 +319,8 @@ lws_genrsa_hash_sig_verify(struct lws_genrsa_ctx *ctx, const uint8_t *in,
 	if (h < 0)
 		return -1;
 
+	mbedtls_rsa_complete(ctx->ctx);
+
 	switch(ctx->mode) {
 	case LGRSAM_PKCS1_1_5:
 		n = mbedtls_rsa_rsassa_pkcs1_v15_verify(ctx->ctx, NULL, NULL,
@@ -256,6 +354,8 @@ lws_genrsa_hash_sign(struct lws_genrsa_ctx *ctx, const uint8_t *in,
 	if (h < 0)
 		return -1;
 
+	mbedtls_rsa_complete(ctx->ctx);
+
 	/*
 	 * The "sig" buffer must be as large as the size of ctx->N
 	 * (eg. 128 bytes if RSA-1024 is used).
diff --git a/lib/tls/mbedtls/mbedtls-server.c b/lib/tls/mbedtls/mbedtls-server.c
index fa0eef99..d75500d7 100644
--- a/lib/tls/mbedtls/mbedtls-server.c
+++ b/lib/tls/mbedtls/mbedtls-server.c
@@ -588,7 +588,7 @@ lws_tls_acme_sni_cert_destroy(struct lws_vhost *vhost)
 {
 }
 
-#if defined(LWS_WITH_JWS)
+#if defined(LWS_WITH_JOSE)
 static int
 _rngf(void *context, unsigned char *buf, size_t len)
 {
diff --git a/lib/tls/openssl/lws-genaes.c b/lib/tls/openssl/lws-genaes.c
index 76cf5254..43fc4ae5 100644
--- a/lib/tls/openssl/lws-genaes.c
+++ b/lib/tls/openssl/lws-genaes.c
@@ -32,9 +32,9 @@
 LWS_VISIBLE int
 lws_genaes_create(struct lws_genaes_ctx *ctx, enum enum_aes_operation op,
 		  enum enum_aes_modes mode, struct lws_gencrypto_keyelem *el,
-		  int padding, void *engine)
+		  enum enum_aes_padding padding, void *engine)
 {
-	int n;
+	int n = 0;
 
 	ctx->ctx = EVP_CIPHER_CTX_new();
 	if (!ctx->ctx)
@@ -49,6 +49,17 @@ lws_genaes_create(struct lws_genaes_ctx *ctx, enum enum_aes_operation op,
 	switch (ctx->k->len) {
 	case 128 / 8:
 		switch (mode) {
+		case LWS_GAESM_KW:
+#if defined(LWS_HAVE_EVP_aes_128_wrap)
+			EVP_CIPHER_CTX_set_flags(ctx->ctx,
+						EVP_CIPHER_CTX_FLAG_WRAP_ALLOW);
+			ctx->cipher = EVP_aes_128_wrap();
+			break;
+#else
+			lwsl_err("%s: your OpenSSL lacks AES wrap apis, update it\n",
+				 __func__);
+			return -1;
+#endif
 		case LWS_GAESM_CBC:
 			ctx->cipher = EVP_aes_128_cbc();
 			break;
@@ -75,12 +86,23 @@ lws_genaes_create(struct lws_genaes_ctx *ctx, enum enum_aes_operation op,
 			ctx->cipher = EVP_aes_128_gcm();
 			break;
 		default:
-			return -1;
+			goto bail;
 		}
 		break;
 
 	case 192 / 8:
 		switch (mode) {
+		case LWS_GAESM_KW:
+#if defined(LWS_HAVE_EVP_aes_128_wrap)
+			EVP_CIPHER_CTX_set_flags(ctx->ctx,
+						EVP_CIPHER_CTX_FLAG_WRAP_ALLOW);
+			ctx->cipher = EVP_aes_192_wrap();
+			break;
+#else
+                        lwsl_err("%s: your OpenSSL lacks AES wrap apis, update it\n",
+                                 __func__);
+                        return -1;
+#endif
 		case LWS_GAESM_CBC:
 			ctx->cipher = EVP_aes_192_cbc();
 			break;
@@ -101,17 +123,28 @@ lws_genaes_create(struct lws_genaes_ctx *ctx, enum enum_aes_operation op,
 			break;
 		case LWS_GAESM_XTS:
 			lwsl_err("%s: AES XTS 192 invalid\n", __func__);
-			return -1;
+			goto bail;
 		case LWS_GAESM_GCM:
 			ctx->cipher = EVP_aes_192_gcm();
 			break;
 		default:
-			return -1;
+			goto bail;
 		}
 		break;
 
 	case 256 / 8:
 		switch (mode) {
+		case LWS_GAESM_KW:
+#if defined(LWS_HAVE_EVP_aes_128_wrap)
+			EVP_CIPHER_CTX_set_flags(ctx->ctx,
+						EVP_CIPHER_CTX_FLAG_WRAP_ALLOW);
+			ctx->cipher = EVP_aes_256_wrap();
+			break;
+#else
+                        lwsl_err("%s: your OpenSSL lacks AES wrap apis, update it\n",
+                                 __func__);
+                        return -1;
+#endif
 		case LWS_GAESM_CBC:
 			ctx->cipher = EVP_aes_256_cbc();
 			break;
@@ -137,7 +170,7 @@ lws_genaes_create(struct lws_genaes_ctx *ctx, enum enum_aes_operation op,
 			ctx->cipher = EVP_aes_256_gcm();
 			break;
 		default:
-			return -1;
+			goto bail;
 		}
 		break;
 
@@ -147,14 +180,14 @@ lws_genaes_create(struct lws_genaes_ctx *ctx, enum enum_aes_operation op,
 			ctx->cipher = EVP_aes_256_xts();
 			break;
 		default:
-			return -1;
+			goto bail;
 		}
 	break;
 
 	default:
 		lwsl_err("%s: unsupported AES size %d bits\n", __func__,
 			 ctx->k->len * 8);
-		return -1;
+		goto bail;
 	}
 
 	switch (ctx->op) {
@@ -172,11 +205,15 @@ lws_genaes_create(struct lws_genaes_ctx *ctx, enum enum_aes_operation op,
 	if (!n) {
 		lwsl_err("%s: cipher init failed (cipher %p)\n", __func__,
 			 ctx->cipher);
-
-		return -1;
+		lws_tls_err_describe();
+		goto bail;
 	}
 
 	return 0;
+bail:
+	EVP_CIPHER_CTX_free(ctx->ctx);
+	ctx->ctx = NULL;
+	return -1;
 }
 
 LWS_VISIBLE int
@@ -196,31 +233,24 @@ lws_genaes_destroy(struct lws_genaes_ctx *ctx, unsigned char *tag, size_t tlen)
 				lwsl_err("%s: enc final failed\n", __func__);
 				n = -1;
 			}
+
 			if (ctx->mode == LWS_GAESM_GCM) {
-				memset(tag, 0, tlen);
 				if (EVP_CIPHER_CTX_ctrl(ctx->ctx,
 						EVP_CTRL_GCM_GET_TAG,
 						    ctx->taglen, tag) != 1) {
 					lwsl_err("get tag ctrl failed\n");
 					//lws_tls_err_describe();
 					n = 1;
-				} else
-				if (memcmp(tag, ctx->tag, ctx->taglen)) {
-					lwsl_err("%s: tag mismatch "
-						 "(bad first)\n", __func__);
-					//lws_tls_err_describe();
-					lwsl_hexdump_notice(tag, tlen);
-					lwsl_hexdump_notice(ctx->tag, ctx->taglen);
-					n = -1;
 				}
 			}
 			break;
 		case LWS_GAESO_DEC:
 			if (EVP_DecryptFinal_ex(ctx->ctx, buf, &outl) != 1) {
 				lwsl_err("%s: dec final failed\n", __func__);
-				//lws_tls_err_describe();
+				lws_tls_err_describe();
 				n = -1;
 			}
+
 			break;
 		}
 		if (outl)
@@ -240,7 +270,7 @@ lws_genaes_crypt(struct lws_genaes_ctx *ctx,
 		 uint8_t *iv_or_nonce_ctr_or_data_unit_16,
 		 uint8_t *stream_block_16, size_t *nc_or_iv_off, int taglen)
 {
-	int n, outl, olen;
+	int n = 0, outl, olen;
 
 	if (!ctx->init) {
 
@@ -277,19 +307,20 @@ lws_genaes_crypt(struct lws_genaes_ctx *ctx,
 			return -1;
 		}
 		ctx->init = 1;
-		if (ctx->mode == LWS_GAESM_GCM) {
-			/* AAD */
-			if (len)
-				if (EVP_EncryptUpdate(ctx->ctx, NULL, &olen,
-						      in, len) != 1) {
-					lwsl_err("%s: set aad failed\n",
-						 __func__);
-
-					return -1;
-				}
+	}
 
-			return 0;
-		}
+	if (ctx->mode == LWS_GAESM_GCM && !out) {
+		/* AAD */
+		if (len)
+			if (EVP_EncryptUpdate(ctx->ctx, NULL, &olen,
+					      in, len) != 1) {
+				lwsl_err("%s: set aad failed\n",
+					 __func__);
+
+				return -1;
+			}
+
+		return 0;
 	}
 
 	switch (ctx->op) {
@@ -299,12 +330,15 @@ lws_genaes_crypt(struct lws_genaes_ctx *ctx,
 	case LWS_GAESO_DEC:
 		n = EVP_DecryptUpdate(ctx->ctx, out, &outl, in, len);
 		break;
+	default:
+		return -1;
 	}
 
 	// lwsl_notice("discarding outl %d\n", (int)outl);
 
 	if (!n) {
 		lwsl_notice("%s: update failed\n", __func__);
+		lws_tls_err_describe();
 
 		return -1;
 	}
diff --git a/lib/tls/openssl/lws-gencrypto.c b/lib/tls/openssl/lws-gencrypto.c
index 00c63c81..995e2618 100644
--- a/lib/tls/openssl/lws-gencrypto.c
+++ b/lib/tls/openssl/lws-gencrypto.c
@@ -24,6 +24,11 @@
 #include "core/private.h"
 #include "tls/openssl/private.h"
 
+/*
+ * Care: many openssl apis return 1 for success.  These are translated to the
+ * lws convention of 0 for success.
+ */
+
 int
 lws_gencrypto_openssl_hash_to_NID(enum lws_genhash_types hash_type)
 {
diff --git a/lib/tls/openssl/lws-genec.c b/lib/tls/openssl/lws-genec.c
index b8205017..03b36c19 100644
--- a/lib/tls/openssl/lws-genec.c
+++ b/lib/tls/openssl/lws-genec.c
@@ -24,6 +24,56 @@
 #include "core/private.h"
 #include "tls/openssl/private.h"
 
+/*
+ * Care: many openssl apis return 1 for success.  These are translated to the
+ * lws convention of 0 for success.
+ */
+
+#if !defined(LWS_HAVE_ECDSA_SIG_set0)
+static void
+ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps)
+{
+    if (pr != NULL)
+        *pr = sig->r;
+    if (ps != NULL)
+        *ps = sig->s;
+}
+
+static int
+ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s)
+{
+	if (r == NULL || s == NULL)
+		return 0;
+	BN_clear_free(sig->r);
+	BN_clear_free(sig->s);
+	sig->r = r;
+	sig->s = s;
+
+	return 1;
+}
+#endif
+#if !defined(LWS_HAVE_BN_bn2binpad)
+static int BN_bn2binpad(const BIGNUM *a, unsigned char *to, int tolen)
+{
+    int i;
+    BN_ULONG l;
+
+    bn_check_top(a);
+    i = BN_num_bytes(a);
+
+    /* Add leading zeroes if necessary */
+    if (tolen > i) {
+        memset(to, 0, tolen - i);
+        to += tolen - i;
+    }
+    while (i--) {
+        l = a->d[i / BN_BYTES];
+        *(to++) = (unsigned char)(l >> (8 * (i % BN_BYTES))) & 0xff;
+    }
+    return tolen;
+}
+#endif
+
 const struct lws_ec_curves lws_ec_curves[] = {
 	/*
 	 * These are the curves we are willing to use by default...
@@ -88,15 +138,16 @@ lws_genec_eckey_import(int nid, EVP_PKEY *pkey, struct lws_gencrypto_keyelem *el
 	}
 
 	n = EC_KEY_set_private_key(ec, bn_d);
-	BN_free(bn_d);
+	BN_clear_free(bn_d);
 	if (n != 1) {
 		lwsl_err("%s: EC_KEY_set_private_key fail\n", __func__);
 		goto bail;
 	}
 
-	if (EVP_PKEY_assign_EC_KEY(pkey, ec) != 1) {
+	n = EVP_PKEY_assign_EC_KEY(pkey, ec);
+	if (n != 1) {
 		lwsl_err("%s: EVP_PKEY_set1_EC_KEY failed\n", __func__);
-		goto bail;
+		return -1;
 	}
 
 	return 0;
@@ -141,6 +192,7 @@ lws_genec_keypair_import(const struct lws_ec_curves *curve_table,
 	*pctx = EVP_PKEY_CTX_new(pkey, NULL);
 	EVP_PKEY_free(pkey);
 	pkey = NULL;
+
 	if (!*pctx)
 		goto bail;
 
@@ -210,6 +262,11 @@ lws_genec_keypair_destroy(EVP_PKEY_CTX **pctx)
 {
 	if (!*pctx)
 		return;
+
+//	lwsl_err("%p\n", EVP_PKEY_get1_EC_KEY(EVP_PKEY_CTX_get0_pkey(*pctx)));
+
+//	EC_KEY_free(EVP_PKEY_get1_EC_KEY(EVP_PKEY_CTX_get0_pkey(*pctx)));
+
 	EVP_PKEY_CTX_free(*pctx);
 	*pctx = NULL;
 }
@@ -234,9 +291,6 @@ lws_genec_new_keypair(struct lws_genec_ctx *ctx, enum enum_lws_dh_side side,
 	BIGNUM *bn[3];
 	EC_KEY *ec;
 
-	if (ctx->genec_alg != LEGENEC_ECDH)
-		return -1;
-
 	curve = lws_genec_curve(ctx->curve_table, curve_name);
 	if (!curve) {
 		lwsl_err("%s: curve '%s' not supported\n",
@@ -246,11 +300,15 @@ lws_genec_new_keypair(struct lws_genec_ctx *ctx, enum enum_lws_dh_side side,
 	}
 
 	ec = EC_KEY_new_by_curve_name(curve->tls_lib_nid);
-	if (!ec)
+	if (!ec) {
+		lwsl_err("%s: unknown nid %d\n", __func__, curve->tls_lib_nid);
 		return -23;
+	}
 
-	if (EC_KEY_generate_key(ec) != 1)
+	if (EC_KEY_generate_key(ec) != 1) {
+		lwsl_err("%s: EC_KEY_generate_key failed\n", __func__);
 		goto bail;
+	}
 
 	pkey = EVP_PKEY_new();
 	if (!pkey)
@@ -273,8 +331,10 @@ lws_genec_new_keypair(struct lws_genec_ctx *ctx, enum enum_lws_dh_side side,
 	 */
 
 	pubkey = EC_KEY_get0_public_key(ec);
-	if (!pubkey)
+	if (!pubkey) {
+		lwsl_err("%s: EC_KEY_get0_public_key failed\n", __func__);
 		goto bail1;
+	}
 
 	bn[0] = BN_new();
 	bn[1] = (BIGNUM *)EC_KEY_get0_private_key(ec);
@@ -290,8 +350,10 @@ lws_genec_new_keypair(struct lws_genec_ctx *ctx, enum enum_lws_dh_side side,
 	el[LWS_GENCRYPTO_EC_KEYEL_CRV].len = strlen(curve_name) + 1;
 	el[LWS_GENCRYPTO_EC_KEYEL_CRV].buf =
 			lws_malloc(el[LWS_GENCRYPTO_EC_KEYEL_CRV].len, "ec");
-	if (!el[LWS_GENCRYPTO_EC_KEYEL_CRV].buf)
+	if (!el[LWS_GENCRYPTO_EC_KEYEL_CRV].buf) {
+		lwsl_err("%s: OOM\n", __func__);
 		goto bail2;
+	}
 
 	strcpy((char *)el[LWS_GENCRYPTO_EC_KEYEL_CRV].buf, curve_name);
 
@@ -302,7 +364,7 @@ lws_genec_new_keypair(struct lws_genec_ctx *ctx, enum enum_lws_dh_side side,
 		if (!el[n].buf)
 			goto bail2;
 
-		m = BN_bn2bin(bn[n - 1], el[n].buf);
+		m = BN_bn2binpad(bn[n - 1], el[n].buf, el[n].len);
 		if (m != el[n].len)
 			goto bail2;
 	}
@@ -310,8 +372,8 @@ lws_genec_new_keypair(struct lws_genec_ctx *ctx, enum enum_lws_dh_side side,
 	ret = 0;
 
 bail2:
-	BN_free(bn[0]);
-	BN_free(bn[2]);
+	BN_clear_free(bn[0]);
+	BN_clear_free(bn[2]);
 bail1:
 	EVP_PKEY_free(pkey);
 bail:
@@ -341,6 +403,7 @@ lws_genecdsa_new_keypair(struct lws_genec_ctx *ctx, const char *curve_name,
 	return lws_genec_new_keypair(ctx, LDHS_OURS, curve_name, el);
 }
 
+#if 0
 LWS_VISIBLE LWS_EXTERN int
 lws_genecdsa_hash_sign(struct lws_genec_ctx *ctx, const uint8_t *in,
 		       enum lws_genhash_types hash_type,
@@ -385,47 +448,161 @@ bail:
 
 	return -1;
 }
+#endif
 
 LWS_VISIBLE LWS_EXTERN int
-lws_genecdsa_hash_sig_verify(struct lws_genec_ctx *ctx, const uint8_t *in,
-			   enum lws_genhash_types hash_type,
-			   const uint8_t *sig, size_t sig_len)
+lws_genecdsa_hash_sign_jws(struct lws_genec_ctx *ctx, const uint8_t *in,
+			   enum lws_genhash_types hash_type, int keybits,
+			   uint8_t *sig, size_t sig_len)
 {
-	const EVP_MD *md = lws_gencrypto_openssl_hash_to_EVP_MD(hash_type);
-	EVP_MD_CTX *mdctx = NULL;
-	int ret = -1;
+	int ret = -1, n, keybytes = lws_gencrypto_bits_to_bytes(keybits);
+	const BIGNUM *r = NULL, *s = NULL;
+	ECDSA_SIG *ecdsasig;
+	EC_KEY *eckey;
 
-	if (ctx->genec_alg != LEGENEC_ECDSA)
+	if (ctx->genec_alg != LEGENEC_ECDSA) {
+		lwsl_notice("%s: ctx alg %d\n", __func__, ctx->genec_alg);
 		return -1;
+	}
 
-	if (!md)
+	if ((int)sig_len < keybytes * 2) {
+		lwsl_notice("%s: sig buff %d < %d\n", __func__,
+			    (int)sig_len, keybytes * 2);
 		return -1;
+	}
 
-	mdctx = EVP_MD_CTX_create();
-	if (!mdctx)
+	eckey = EVP_PKEY_get1_EC_KEY(EVP_PKEY_CTX_get0_pkey(ctx->ctx));
+
+	/*
+	 * The ECDSA P-256 SHA-256 digital signature is generated as follows:
+	 *
+	 * 1.  Generate a digital signature of the JWS Signing Input using ECDSA
+	 *     P-256 SHA-256 with the desired private key.  The output will be
+	 *     the pair (R, S), where R and S are 256-bit unsigned integers.
+	 *
+	 * 2.  Turn R and S into octet sequences in big-endian order, with each
+	 *     array being be 32 octets long.  The octet sequence
+	 *     representations MUST NOT be shortened to omit any leading zero
+	 *     octets contained in the values.
+	 *
+	 * 3.  Concatenate the two octet sequences in the order R and then S.
+	 *     (Note that many ECDSA implementations will directly produce this
+	 *     concatenation as their output.)
+	 *
+	 * 4.  The resulting 64-octet sequence is the JWS Signature value.
+	 */
+
+	ecdsasig = ECDSA_do_sign(in, lws_genhash_size(hash_type), eckey);
+	EC_KEY_free(eckey);
+	if (!ecdsasig) {
+		lwsl_notice("%s: ECDSA_do_sign fail\n", __func__);
 		goto bail;
+	}
 
-	if (EVP_DigestVerifyInit(mdctx, NULL, md, NULL,
-			       EVP_PKEY_CTX_get0_pkey(ctx->ctx))) {
-		lwsl_err("%s: EVP_DigestSignInit failed\n", __func__);
+	ECDSA_SIG_get0(ecdsasig, &r, &s);
+
+	/*
+	 * in the 521-bit case, we have to pad the last byte as it only
+	 * generates 65 bytes
+	 */
 
+	n = BN_bn2binpad(r, sig, keybytes);
+	if (n != keybytes) {
+		lwsl_notice("%s: bignum r fail %d %d\n", __func__, n, keybytes);
 		goto bail;
 	}
-	if (EVP_DigestVerifyUpdate(mdctx, in, EVP_MD_size(md))) {
-		lwsl_err("%s: EVP_DigestSignUpdate failed\n", __func__);
 
+	n = BN_bn2binpad(s, sig + keybytes, keybytes);
+	if (n != keybytes) {
+		lwsl_notice("%s: bignum s fail %d %d\n", __func__, n, keybytes);
 		goto bail;
 	}
-	if (EVP_DigestVerifyFinal(mdctx, sig, sig_len)) {
-		lwsl_err("%s: EVP_DigestSignFinal failed\n", __func__);
 
+	ret = 0;
+
+bail:
+	if (ecdsasig)
+		ECDSA_SIG_free(ecdsasig);
+
+	return ret;
+}
+
+/* in is the JWS Signing Input hash */
+
+LWS_VISIBLE LWS_EXTERN int
+lws_genecdsa_hash_sig_verify_jws(struct lws_genec_ctx *ctx, const uint8_t *in,
+				 enum lws_genhash_types hash_type, int keybits,
+				 const uint8_t *sig, size_t sig_len)
+{
+	int ret = -1, n, keybytes = lws_gencrypto_bits_to_bytes(keybits),
+	    hlen = lws_genhash_size(hash_type);
+	ECDSA_SIG *ecsig = ECDSA_SIG_new();
+	BIGNUM *r = NULL, *s = NULL;
+	EC_KEY *eckey;
+
+	if (!ecsig)
+		return -1;
+
+	if (ctx->genec_alg != LEGENEC_ECDSA)
+		goto bail;
+
+	if ((int)sig_len != keybytes * 2) {
+		lwsl_err("%s: sig buf too small %d vs %d\n", __func__,
+			 (int)sig_len, keybytes * 2);
+		goto bail;
+	}
+	/*
+	 * 1.  The JWS Signature value MUST be a 64-octet sequence.  If it is
+	 *     not a 64-octet sequence, the validation has failed.
+	 *
+	 * 2.  Split the 64-octet sequence into two 32-octet sequences.  The
+	 *     first octet sequence represents R and the second S.  The values R
+	 *     and S are represented as octet sequences using the Integer-to-
+	 *     OctetString Conversion defined in Section 2.3.7 of SEC1 [SEC1]
+	 *     (in big-endian octet order).
+	 *
+	 * 3.  Submit the JWS Signing Input, R, S, and the public key (x, y) to
+	 *     the ECDSA P-256 SHA-256 validator.
+	 */
+
+	r = BN_bin2bn(sig, keybytes, NULL);
+	if (!r) {
+		lwsl_err("%s: BN_bin2bn (r) fail\n", __func__);
+		goto bail;
+	}
+
+	s = BN_bin2bn(sig + keybytes, keybytes, NULL);
+	if (!s) {
+		lwsl_err("%s: BN_bin2bn (s) fail\n", __func__);
+		goto bail1;
+	}
+
+	if (ECDSA_SIG_set0(ecsig, r, s) != 1) {
+		lwsl_err("%s: ECDSA_SIG_set0 fail\n", __func__);
+		goto bail1;
+	}
+
+	eckey = EVP_PKEY_get1_EC_KEY(EVP_PKEY_CTX_get0_pkey(ctx->ctx));
+
+	n = ECDSA_do_verify(in, hlen, ecsig, eckey);
+	EC_KEY_free(eckey);
+	if (n != 1) {
+		lwsl_err("%s: ECDSA_do_verify fail\n", __func__);
+		lws_tls_err_describe();
 		goto bail;
 	}
 
 	ret = 0;
+	goto bail;
+
+bail1:
+	if (r)
+		BN_free(r);
+	if (s)
+		BN_free(s);
+
 bail:
-	if (mdctx)
-		EVP_MD_CTX_free(mdctx);
+	ECDSA_SIG_free(ecsig);
 
 	return ret;
 }
diff --git a/lib/tls/openssl/lws-genhash.c b/lib/tls/openssl/lws-genhash.c
index c6ca2c5e..e9d5125b 100644
--- a/lib/tls/openssl/lws-genhash.c
+++ b/lib/tls/openssl/lws-genhash.c
@@ -23,6 +23,11 @@
  */
 #include "libwebsockets.h"
 
+/*
+ * Care: many openssl apis return 1 for success.  These are translated to the
+ * lws convention of 0 for success.
+ */
+
 int
 lws_genhash_init(struct lws_genhash_ctx *ctx, enum lws_genhash_types type)
 {
@@ -60,6 +65,9 @@ lws_genhash_init(struct lws_genhash_ctx *ctx, enum lws_genhash_types type)
 int
 lws_genhash_update(struct lws_genhash_ctx *ctx, const void *in, size_t len)
 {
+	if (!len)
+		return 0;
+
 	return EVP_DigestUpdate(ctx->mdctx, in, len) != 1;
 }
 
diff --git a/lib/tls/openssl/lws-genrsa.c b/lib/tls/openssl/lws-genrsa.c
index ca3c2d53..826c3124 100644
--- a/lib/tls/openssl/lws-genrsa.c
+++ b/lib/tls/openssl/lws-genrsa.c
@@ -24,14 +24,15 @@
 #include "core/private.h"
 #include "tls/openssl/private.h"
 
+/*
+ * Care: many openssl apis return 1 for success.  These are translated to the
+ * lws convention of 0 for success.
+ */
+
 LWS_VISIBLE void
 lws_genrsa_destroy_elements(struct lws_gencrypto_keyelem *el)
 {
-	int n;
-
-	for (n = 0; n < LWS_GENCRYPTO_RSA_KEYEL_COUNT; n++)
-		if (el[n].buf)
-			lws_free_set_NULL(el[n].buf);
+	lws_gencrypto_destroy_elements(el, LWS_GENCRYPTO_RSA_KEYEL_COUNT);
 }
 
 static int mode_map_crypt[] = { RSA_PKCS1_PADDING, RSA_PKCS1_OAEP_PADDING },
@@ -74,7 +75,8 @@ bail:
 
 LWS_VISIBLE int
 lws_genrsa_create(struct lws_genrsa_ctx *ctx, struct lws_gencrypto_keyelem *el,
-		  struct lws_context *context, enum enum_genrsa_mode mode)
+		  struct lws_context *context, enum enum_genrsa_mode mode,
+		  enum lws_genhash_types oaep_hashid)
 {
 	int n;
 
@@ -129,7 +131,7 @@ lws_genrsa_create(struct lws_genrsa_ctx *ctx, struct lws_gencrypto_keyelem *el,
 bail:
 	for (n = 0; n < 5; n++)
 		if (ctx->bn[n]) {
-			BN_free(ctx->bn[n]);
+			BN_clear_free(ctx->bn[n]);
 			ctx->bn[n] = NULL;
 		}
 
@@ -168,7 +170,7 @@ lws_genrsa_new_keypair(struct lws_context *context, struct lws_genrsa_ctx *ctx,
 	}
 
 	n = RSA_generate_key_ex(ctx->rsa, bits, bn, NULL);
-	BN_free(bn);
+	BN_clear_free(bn);
 	if (n != 1)
 		goto cleanup_1;
 
@@ -219,27 +221,59 @@ LWS_VISIBLE int
 lws_genrsa_public_encrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in,
 			  size_t in_len, uint8_t *out)
 {
-	if (RSA_public_encrypt((int)in_len, in, out, ctx->rsa,
-			       mode_map_crypt[ctx->mode]) < 0) {
+	int n = RSA_public_encrypt((int)in_len, in, out, ctx->rsa,
+				   mode_map_crypt[ctx->mode]);
+	if (n < 0) {
 		lwsl_err("%s: RSA_public_encrypt failed\n", __func__);
 		lws_tls_err_describe();
 		return -1;
 	}
 
-	return 0;
+	return n;
+}
+
+LWS_VISIBLE int
+lws_genrsa_private_encrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in,
+			   size_t in_len, uint8_t *out)
+{
+	int n = RSA_private_encrypt((int)in_len, in, out, ctx->rsa,
+			        mode_map_crypt[ctx->mode]);
+	if (n < 0) {
+		lwsl_err("%s: RSA_private_encrypt failed\n", __func__);
+		lws_tls_err_describe();
+		return -1;
+	}
+
+	return n;
 }
 
 LWS_VISIBLE int
 lws_genrsa_public_decrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in,
 			  size_t in_len, uint8_t *out, size_t out_max)
 {
-	if (RSA_public_decrypt((int)in_len, in, out, ctx->rsa,
-			       mode_map_crypt[ctx->mode]) < 0) {
+	int n = RSA_public_decrypt((int)in_len, in, out, ctx->rsa,
+			       mode_map_crypt[ctx->mode]);
+	if (n < 0) {
 		lwsl_err("%s: RSA_public_decrypt failed\n", __func__);
 		return -1;
 	}
 
-	return 0;
+	return n;
+}
+
+LWS_VISIBLE int
+lws_genrsa_private_decrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in,
+			   size_t in_len, uint8_t *out, size_t out_max)
+{
+	int n = RSA_private_decrypt((int)in_len, in, out, ctx->rsa,
+			        mode_map_crypt[ctx->mode]);
+	if (n < 0) {
+		lwsl_err("%s: RSA_private_decrypt failed\n", __func__);
+		lws_tls_err_describe();
+		return -1;
+	}
+
+	return n;
 }
 
 LWS_VISIBLE int
@@ -271,7 +305,8 @@ lws_genrsa_hash_sig_verify(struct lws_genrsa_ctx *ctx, const uint8_t *in,
 	}
 
 	if (n != 1) {
-		lwsl_notice("%s: -0x%x\n", __func__, -n);
+		lwsl_notice("%s: fail\n", __func__);
+		lws_tls_err_describe();
 
 		return -1;
 	}
diff --git a/lib/tls/openssl/openssl-client.c b/lib/tls/openssl/openssl-client.c
index 62e250b5..ed2bbdf5 100644
--- a/lib/tls/openssl/openssl-client.c
+++ b/lib/tls/openssl/openssl-client.c
@@ -21,6 +21,11 @@
 
 #include "core/private.h"
 
+/*
+ * Care: many openssl apis return 1 for success.  These are translated to the
+ * lws convention of 0 for success.
+ */
+
 int lws_openssl_describe_cipher(struct lws *wsi);
 
 extern int openssl_websocket_private_data_index,
diff --git a/lib/tls/openssl/openssl-server.c b/lib/tls/openssl/openssl-server.c
index d680ea83..96d3767c 100644
--- a/lib/tls/openssl/openssl-server.c
+++ b/lib/tls/openssl/openssl-server.c
@@ -21,6 +21,11 @@
 
 #include "core/private.h"
 
+/*
+ * Care: many openssl apis return 1 for success.  These are translated to the
+ * lws convention of 0 for success.
+ */
+
 extern int openssl_websocket_private_data_index,
 	   openssl_SSL_CTX_private_data_index;
 
diff --git a/lib/tls/openssl/ssl.c b/lib/tls/openssl/ssl.c
index db4f7b72..06859b3e 100644
--- a/lib/tls/openssl/ssl.c
+++ b/lib/tls/openssl/ssl.c
@@ -25,6 +25,11 @@
 int openssl_websocket_private_data_index,
 	   openssl_SSL_CTX_private_data_index;
 
+/*
+ * Care: many openssl apis return 1 for success.  These are translated to the
+ * lws convention of 0 for success.
+ */
+
 int lws_openssl_describe_cipher(struct lws *wsi)
 {
 #if !defined(LWS_WITH_NO_LOGS)
diff --git a/lib/tls/private.h b/lib/tls/private.h
index 6a1cd001..a299b5ec 100644
--- a/lib/tls/private.h
+++ b/lib/tls/private.h
@@ -293,6 +293,11 @@ lws_ssl_info_callback(const lws_tls_conn *ssl, int where, int ret);
 int
 lws_tls_fake_POLLIN_for_buffered(struct lws_context_per_thread *pt);
 
+int
+lws_gencrypto_bits_to_bytes(int bits);
+
+void
+lws_gencrypto_destroy_elements(struct lws_gencrypto_keyelem *el, int m);
 
 /* genec */
 
diff --git a/minimal-examples/README.md b/minimal-examples/README.md
index d80dece6..2f271dbc 100644
--- a/minimal-examples/README.md
+++ b/minimal-examples/README.md
@@ -1,6 +1,7 @@
 |name|demonstrates|
 ---|---
 client-server|Minimal examples providing client and server connections simultaneously
+crypto|Minimal examples related to using lws crypto apis
 dbus-server|Minimal examples showing how to integrate DBUS into lws event loop
 http-client|Minimal examples providing an http client
 http-server|Minimal examples providing an http server
diff --git a/minimal-examples/api-tests/README.md b/minimal-examples/api-tests/README.md
index b047af52..ff8d48ed 100644
--- a/minimal-examples/api-tests/README.md
+++ b/minimal-examples/api-tests/README.md
@@ -1,5 +1,10 @@
+These are buildable test apps that run in CI to confirm correct api operation.
+
 |name|tests|
 ---|---
-api-test-lwsac|LWS Allocated Chunks
-api-test-lws_tokenize|Generic secure string tokenizer
+api-test-lwsac|LWS Allocated Chunks api
+api-test-lws_tokenize|Generic secure string tokenizer api
+api-test-fts|LWS Full-text Search api
+api-test-gencrypto|LWS Generic Crypto apis
+api-test-jose|LWS JOSE apis
 
diff --git a/minimal-examples/api-tests/api-test-gencrypto/lws-genaes.c b/minimal-examples/api-tests/api-test-gencrypto/lws-genaes.c
index b14e08e5..f2f6f20f 100644
--- a/minimal-examples/api-tests/api-test-gencrypto/lws-genaes.c
+++ b/minimal-examples/api-tests/api-test-gencrypto/lws-genaes.c
@@ -64,7 +64,7 @@ test_genaes_cbc(void)
 		return -1;
 	}
 
-	if (memcmp(cbc256_enc, res, 16)) {
+	if (lws_timingsafe_bcmp(cbc256_enc, res, 16)) {
 		lwsl_err("%s: lws_genaes_crypt encoding mismatch\n", __func__);
 		lwsl_hexdump_notice(res, 16);
 		return -1;
@@ -88,7 +88,7 @@ test_genaes_cbc(void)
 		return -1;
 	}
 
-	if (memcmp(cbc256, res1, 16)) {
+	if (lws_timingsafe_bcmp(cbc256, res1, 16)) {
 		lwsl_err("%s: lws_genaes_crypt decoding mismatch\n", __func__);
 		lwsl_hexdump_notice(res, 16);
 		return -1;
@@ -151,7 +151,7 @@ test_genaes_cfb128(void)
 		return -1;
 	}
 
-	if (memcmp(cfb128_enc, res, 16)) {
+	if (lws_timingsafe_bcmp(cfb128_enc, res, 16)) {
 		lwsl_err("%s: lws_genaes_crypt encoding mismatch\n", __func__);
 		lwsl_hexdump_notice(res, 16);
 		return -1;
@@ -175,7 +175,7 @@ test_genaes_cfb128(void)
 		return -1;
 	}
 
-	if (memcmp(cfb128, res1, 16)) {
+	if (lws_timingsafe_bcmp(cfb128, res1, 16)) {
 		lwsl_err("%s: lws_genaes_crypt decoding mismatch\n", __func__);
 		lwsl_hexdump_notice(res1, 16);
 		return -1;
@@ -237,7 +237,7 @@ test_genaes_cfb8(void)
 		return -1;
 	}
 
-	if (memcmp(cfb8_enc, res, 16)) {
+	if (lws_timingsafe_bcmp(cfb8_enc, res, 16)) {
 		lwsl_err("%s: lws_genaes_crypt encoding mismatch\n", __func__);
 		lwsl_hexdump_notice(res, 16);
 		return -1;
@@ -259,7 +259,7 @@ test_genaes_cfb8(void)
 		return -1;
 	}
 
-	if (memcmp(cfb8, res1, 16)) {
+	if (lws_timingsafe_bcmp(cfb8, res1, 16)) {
 		lwsl_err("%s: lws_genaes_crypt decoding mismatch\n", __func__);
 		lwsl_hexdump_notice(res1, 16);
 		return -1;
@@ -325,7 +325,7 @@ test_genaes_ctr(void)
 		return -1;
 	}
 
-	if (memcmp(ctr_enc, res, 16)) {
+	if (lws_timingsafe_bcmp(ctr_enc, res, 16)) {
 		lwsl_err("%s: lws_genaes_crypt encoding mismatch\n", __func__);
 		lwsl_hexdump_notice(res, 16);
 		return -1;
@@ -350,7 +350,7 @@ test_genaes_ctr(void)
 		return -1;
 	}
 
-	if (memcmp(ctr, res1, 16)) {
+	if (lws_timingsafe_bcmp(ctr, res1, 16)) {
 		lwsl_err("%s: lws_genaes_crypt decoding mismatch\n", __func__);
 		lwsl_hexdump_notice(res1, 16);
 		return -1;
@@ -415,7 +415,7 @@ test_genaes_ecb(void)
 		return -1;
 	}
 
-	if (memcmp(ecb_enc, res, 16)) {
+	if (lws_timingsafe_bcmp(ecb_enc, res, 16)) {
 		lwsl_err("%s: lws_genaes_crypt encoding mismatch\n", __func__);
 		lwsl_hexdump_notice(res, 16);
 		return -1;
@@ -436,7 +436,7 @@ test_genaes_ecb(void)
 		return -1;
 	}
 
-	if (memcmp(ecb, res1, 16)) {
+	if (lws_timingsafe_bcmp(ecb, res1, 16)) {
 		lwsl_err("%s: lws_genaes_crypt decoding mismatch\n", __func__);
 		lwsl_hexdump_notice(res, 16);
 		return -1;
@@ -450,6 +450,9 @@ bail:
 	return -1;
 }
 
+#if defined(MBEDTLS_CONFIG_H) && !defined(MBEDTLS_CIPHER_MODE_OFB)
+#else
+
 static const uint8_t
 	/*
 	 * produced with (plaintext.txt contains "test plaintext\0\0")
@@ -506,7 +509,7 @@ test_genaes_ofb(void)
 		return -1;
 	}
 
-	if (memcmp(ofb_enc, res, 16)) {
+	if (lws_timingsafe_bcmp(ofb_enc, res, 16)) {
 		lwsl_err("%s: lws_genaes_crypt encoding mismatch\n", __func__);
 		lwsl_hexdump_notice(res, 16);
 		return -1;
@@ -530,7 +533,7 @@ test_genaes_ofb(void)
 		return -1;
 	}
 
-	if (memcmp(ofb, res1, 16)) {
+	if (lws_timingsafe_bcmp(ofb, res1, 16)) {
 		lwsl_err("%s: lws_genaes_crypt decoding mismatch\n", __func__);
 		lwsl_hexdump_notice(res, 16);
 		return -1;
@@ -544,6 +547,8 @@ bail:
 	return -1;
 }
 
+#endif
+
 static const uint8_t
 	/*
 	 * Fedora openssl tool doesn't support xts... this data produced
@@ -594,7 +599,7 @@ test_genaes_xts(void)
 		return -1;
 	}
 
-	if (memcmp(xts_enc, res, 16)) {
+	if (lws_timingsafe_bcmp(xts_enc, res, 16)) {
 		lwsl_err("%s: lws_genaes_crypt encoding mismatch\n", __func__);
 		lwsl_hexdump_notice(res, 16);
 		return -1;
@@ -615,7 +620,7 @@ test_genaes_xts(void)
 		return -1;
 	}
 
-	if (memcmp(xts, res1, 16)) {
+	if (lws_timingsafe_bcmp(xts, res1, 16)) {
 		lwsl_err("%s: lws_genaes_crypt decoding mismatch\n", __func__);
 		lwsl_hexdump_notice(res, 16);
 		return -1;
@@ -697,7 +702,7 @@ test_genaes_gcm(void)
 		return -1;
 	}
 
-	if (memcmp(gcm_ct, res, sizeof(gcm_ct))) {
+	if (lws_timingsafe_bcmp(gcm_ct, res, sizeof(gcm_ct))) {
 		lwsl_err("%s: lws_genaes_crypt encoding mismatch\n", __func__);
 		lwsl_hexdump_notice(res, sizeof(gcm_ct));
 		return -1;
@@ -730,7 +735,7 @@ test_genaes_gcm(void)
 		return -1;
 	}
 
-	if (memcmp(gcm_pt, res, sizeof(gcm_pt))) {
+	if (lws_timingsafe_bcmp(gcm_pt, res, sizeof(gcm_pt))) {
 		lwsl_err("%s: lws_genaes_crypt decoding mismatch\n", __func__);
 		lwsl_hexdump_notice(res, sizeof(gcm_ct));
 		return -1;
@@ -763,8 +768,11 @@ test_genaes(struct lws_context *context)
 	if (test_genaes_ecb())
 		goto bail;
 
+#if defined(MBEDTLS_CONFIG_H) && !defined(MBEDTLS_CIPHER_MODE_OFB)
+#else
 	if (test_genaes_ofb())
 		goto bail;
+#endif
 
 #if defined(MBEDTLS_CONFIG_H) && !defined(MBEDTLS_CIPHER_MODE_XTS)
 #else
diff --git a/minimal-examples/api-tests/api-test-gencrypto/lws-genec.c b/minimal-examples/api-tests/api-test-gencrypto/lws-genec.c
index d640650d..db852c9a 100644
--- a/minimal-examples/api-tests/api-test-gencrypto/lws-genec.c
+++ b/minimal-examples/api-tests/api-test-gencrypto/lws-genec.c
@@ -54,7 +54,7 @@ test_genec1(struct lws_context *context)
 
 	lws_jwk_dump(&jwk);
 
-	if (jwk.kty != LWS_GENCRYPTO_KYT_EC) {
+	if (jwk.kty != LWS_GENCRYPTO_KTY_EC) {
 		lws_jwk_destroy(&jwk);
 		lwsl_err("%s: jwk is not an EC key\n", __func__);
 		return 1;
@@ -76,7 +76,7 @@ test_genec1(struct lws_context *context)
 		goto bail;
 	}
 
-	if (memcmp(cbc256_enc, res, 16)) {
+	if (lws_timingsafe_bcmp(cbc256_enc, res, 16)) {
 		lwsl_err("%s: lws_genec_crypt encoding mismatch\n", __func__);
 		lwsl_hexdump_notice(res, 16);
 		goto bail;
@@ -95,7 +95,7 @@ test_genec1(struct lws_context *context)
 		goto bail;
 	}
 
-	if (memcmp(cbc256, res1, 16)) {
+	if (lws_timingsafe_bcmp(cbc256, res1, 16)) {
 		lwsl_err("%s: lws_genec_crypt decoding mismatch\n", __func__);
 		lwsl_hexdump_notice(res, 16);
 		goto bail;
diff --git a/minimal-examples/api-tests/api-test-jose/jwe.c b/minimal-examples/api-tests/api-test-jose/jwe.c
index 27b8b9b3..f619a53a 100644
--- a/minimal-examples/api-tests/api-test-jose/jwe.c
+++ b/minimal-examples/api-tests/api-test-jose/jwe.c
@@ -9,331 +9,1992 @@
 
 #include <libwebsockets.h>
 
+/*
+ * These are the inputs and outputs from the worked example in RFC7516
+ * Appendix A.1   {"alg":"RSA-OAEP","enc":"A256GCM"}
+ */
 
-/* A.2.  Example JWE using RSAES-PKCS1-v1_5 and AES_128_CBC_HMAC_SHA_256 */
 
-/* "Live long and prosper." */
-static
-uint8_t
+static char
 
-#if 0
-lws_jwe_ex_a2_plaintext[] = {
-	76, 105, 118, 101, 32, 108, 111, 110,
-	103, 32, 97, 110, 100, 32,  112, 114,
-	111, 115, 112, 101, 114, 46
-},
-#endif
-*lws_jwe_ex_a2_jose_hdr = (uint8_t *)
-	"{\"alg\":\"RSA1_5\",\"enc\":\"A128CBC-HS256\"}",
+*ex_a1_ptext =
+	"The true sign of intelligence is not knowledge but imagination.",
 
-*lws_jwe_ex_a2_jose_hdr_b64utf8 = (unsigned char *)
-	"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0",
+*ex_a1_compact =
+	"eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ."
+	"OKOawDo13gRp2ojaHV7LFpZcgV7T6DVZKTyKOMTYUmKoTCVJRgckCL9kiMT03JGe"
+	"ipsEdY3mx_etLbbWSrFr05kLzcSr4qKAq7YN7e9jwQRb23nfa6c9d-StnImGyFDb"
+	"Sv04uVuxIp5Zms1gNxKKK2Da14B8S4rzVRltdYwam_lDp5XnZAYpQdb76FdIKLaV"
+	"mqgfwX7XWRxv2322i-vDxRfqNzo_tETKzpVLzfiwQyeyPGLBIO56YJ7eObdv0je8"
+	"1860ppamavo35UgoRdbYaBcoh9QcfylQr66oc6vFWXRcZ_ZT2LawVCWTIy3brGPi"
+	"6UklfCpIMfIjf7iGdXKHzg."
+	"48V1_ALb6US04U3b."
+	"5eym8TW_c8SuK0ltJ3rpYIzOeDQz7TALvtu6UG9oMo4vpzs9tX_EFShS8iB7j6ji"
+	"SdiwkIr3ajwQzaBtQD_A."
+	"XFBoMYUZodetZdvTiFvSkQ",
 
-lws_jwe_ex_a2_cek[] = {
-	  4, 211,  31, 197,  84, 157, 252, 254,
-	 11, 100, 157, 250,  63, 170, 106, 206,
-	107, 124, 212,  45, 111, 107,   9, 219,
-	200, 177,   0, 240, 143, 156,  44, 207
-},
+	*ex_a1_jwk_json =
+	"{\"kty\":\"RSA\","
+	  "\"n\":\"oahUIoWw0K0usKNuOR6H4wkf4oBUXHTxRvgb48E-BVvxkeDNjbC4he8rUW"
+		"cJoZmds2h7M70imEVhRU5djINXtqllXI4DFqcI1DgjT9LewND8MW2Krf3S"
+		"psk_ZkoFnilakGygTwpZ3uesH-PFABNIUYpOiN15dsQRkgr0vEhxN92i2a"
+		"sbOenSZeyaxziK72UwxrrKoExv6kc5twXTq4h-QChLOln0_mtUZwfsRaMS"
+		"tPs6mS6XrgxnxbWhojf663tuEQueGC-FCMfra36C9knDFGzKsNa7LZK2dj"
+		"YgyD3JR_MB_4NUJW_TqOQtwHYbxevoJArm-L5StowjzGy-_bq6Gw\","
+	  "\"e\":\"AQAB\","
+	  "\"d\":\"kLdtIj6GbDks_ApCSTYQtelcNttlKiOyPzMrXHeI-yk1F7-kpDxY4-WY5N"
+		"WV5KntaEeXS1j82E375xxhWMHXyvjYecPT9fpwR_M9gV8n9Hrh2anTpTD9"
+		"3Dt62ypW3yDsJzBnTnrYu1iwWRgBKrEYY46qAZIrA2xAwnm2X7uGR1hghk"
+		"qDp0Vqj3kbSCz1XyfCs6_LehBwtxHIyh8Ripy40p24moOAbgxVw3rxT_vl"
+		"t3UVe4WO3JkJOzlpUf-KTVI2Ptgm-dARxTEtE-id-4OJr0h-K-VFs3VSnd"
+		"VTIznSxfyrj8ILL6MG_Uv8YAu7VILSB3lOW085-4qE3DzgrTjgyQ\","
+	  "\"p\":\"1r52Xk46c-LsfB5P442p7atdPUrxQSy4mti_tZI3Mgf2EuFVbUoDBvaRQ-"
+		"SWxkbkmoEzL7JXroSBjSrK3YIQgYdMgyAEPTPjXv_hI2_1eTSPVZfzL0lf"
+		"fNn03IXqWF5MDFuoUYE0hzb2vhrlN_rKrbfDIwUbTrjjgieRbwC6Cl0\","
+	  "\"q\":\"wLb35x7hmQWZsWJmB_vle87ihgZ19S8lBEROLIsZG4ayZVe9Hi9gDVCOBm"
+		"UDdaDYVTSNx_8Fyw1YYa9XGrGnDew00J28cRUoeBB_jKI1oma0Orv1T9aX"
+		"IWxKwd4gvxFImOWr3QRL9KEBRzk2RatUBnmDZJTIAfwTs0g68UZHvtc\","
+	  "\"dp\":\"ZK-YwE7diUh0qR1tR7w8WHtolDx3MZ_OTowiFvgfeQ3SiresXjm9gZ5KL"
+		"hMXvo-uz-KUJWDxS5pFQ_M0evdo1dKiRTjVw_x4NyqyXPM5nULPkcpU827"
+		"rnpZzAJKpdhWAgqrXGKAECQH0Xt4taznjnd_zVpAmZZq60WPMBMfKcuE\","
+	  "\"dq\":\"Dq0gfgJ1DdFGXiLvQEZnuKEN0UUmsJBxkjydc3j4ZYdBiMRAy86x0vHCj"
+		"ywcMlYYg4yoC4YZa9hNVcsjqA3FeiL19rk8g6Qn29Tt0cj8qqyFpz9vNDB"
+		"UfCAiJVeESOjJDZPYHdHY8v1b-o-Z2X5tvLx-TCekf7oxyeKDUqKWjis\","
+	  "\"qi\":\"VIMpMYbPf47dT1w_zDUXfPimsSegnMOA1zTaX7aGk_8urY6R8-ZW1FxU7"
+		"AlWAyLWybqq6t16VFd7hQd0y6flUK4SlOydB61gwanOsXGOAOv82cHq0E3"
+		"eL4HrtZkUuKvnPrMnsUUFlfUdybVzxyjz9JF_XyaY14ardLSjf4L_FNY\""
+	"}"
+;
 
-*lws_jwe_ex_a2_jwk_json = (uint8_t *)
-"{"
- "\"kty\":\"RSA\","
- "\"n\":\"sXchDaQebHnPiGvyDOAT4saGEUetSyo9MKLOoWFsueri23bOdgWp4Dy1Wl"
-	 "UzewbgBHod5pcM9H95GQRV3JDXboIRROSBigeC5yjU1hGzHHyXss8UDpre"
-	 "cbAYxknTcQkhslANGRUZmdTOQ5qTRsLAt6BTYuyvVRdhS8exSZEy_c4gs_"
-	 "7svlJJQ4H9_NxsiIoLwAEk7-Q3UXERGYw_75IDrGA84-lA_-Ct4eTlXHBI"
-	 "Y2EaV7t7LjJaynVJCpkv4LKjTTAumiGUIuQhrNhZLuF_RJLqHpM2kgWFLU"
-	 "7-VTdL1VbC2tejvcI2BlMkEpk1BzBZI0KQB0GaDWFLN-aEAw3vRw\","
- "\"e\":\"AQAB\","
- "\"d\":\"VFCWOqXr8nvZNyaaJLXdnNPXZKRaWCjkU5Q2egQQpTBMwhprMzWzpR8Sxq"
-	 "1OPThh_J6MUD8Z35wky9b8eEO0pwNS8xlh1lOFRRBoNqDIKVOku0aZb-ry"
-	 "nq8cxjDTLZQ6Fz7jSjR1Klop-YKaUHc9GsEofQqYruPhzSA-QgajZGPbE_"
-	 "0ZaVDJHfyd7UUBUKunFMScbflYAAOYJqVIVwaYR5zWEEceUjNnTNo_CVSj"
-	 "-VvXLO5VZfCUAVLgW4dpf1SrtZjSt34YLsRarSb127reG_DUwg9Ch-Kyvj"
-	 "T1SkHgUWRVGcyly7uvVGRSDwsXypdrNinPA4jlhoNdizK2zF2CWQ\","
- "\"p\":\"9gY2w6I6S6L0juEKsbeDAwpd9WMfgqFoeA9vEyEUuk4kLwBKcoe1x4HG68"
-	 "ik918hdDSE9vDQSccA3xXHOAFOPJ8R9EeIAbTi1VwBYnbTp87X-xcPWlEP"
-	 "krdoUKW60tgs1aNd_Nnc9LEVVPMS390zbFxt8TN_biaBgelNgbC95sM\","
- "\"q\":\"uKlCKvKv_ZJMVcdIs5vVSU_6cPtYI1ljWytExV_skstvRSNi9r66jdd9-y"
-	 "BhVfuG4shsp2j7rGnIio901RBeHo6TPKWVVykPu1iYhQXw1jIABfw-MVsN"
-	 "-3bQ76WLdt2SDxsHs7q7zPyUyHXmps7ycZ5c72wGkUwNOjYelmkiNS0\","
- "\"dp\":\"w0kZbV63cVRvVX6yk3C8cMxo2qCM4Y8nsq1lmMSYhG4EcL6FWbX5h9yuv"
-	 "ngs4iLEFk6eALoUS4vIWEwcL4txw9LsWH_zKI-hwoReoP77cOdSL4AVcra"
-	 "Hawlkpyd2TWjE5evgbhWtOxnZee3cXJBkAi64Ik6jZxbvk-RR3pEhnCs\","
- "\"dq\":\"o_8V14SezckO6CNLKs_btPdFiO9_kC1DsuUTd2LAfIIVeMZ7jn1Gus_Ff"
-	 "7B7IVx3p5KuBGOVF8L-qifLb6nQnLysgHDh132NDioZkhH7mI7hPG-PYE_"
-	 "odApKdnqECHWw0J-F0JWnUd6D2B_1TvF9mXA2Qx-iGYn8OVV1Bsmp6qU\","
- "\"qi\":\"eNho5yRBEBxhGBtQRww9QirZsB66TrfFReG_CcteI1aCneT0ELGhYlRlC"
-	 "tUkTRclIfuEPmNsNDPbLoLqqCVznFbvdB7x-Tl-m0l_eFTj2KiqwGqE9PZ"
-	 "B9nNTwMVvH3VRRSLWACvPnSiwP8N5Usy-WRXS-V7TbpxIhvepTfE0NNo\""
-"}"
+static int
+test_jwe_a1(struct lws_context *context)
+{
+	struct lws_jose jose;
+	struct lws_jws jws;
+	struct lws_jwk jwk;
+	char temp[2048], compact[2048];
+	int n, ret = -1, temp_len = sizeof(temp);
 
-#if 0
-,
-lws_jwe_ex_a2_jwk_enc_key[] = {
-	  80, 104,  72,  58,  11, 130, 236, 139,
-	 132, 189, 255, 205,  61,  86, 151, 176,
-	  99,  40,  44, 233, 176, 189, 205,  70,
-	 202, 169,  72,  40, 226, 181, 156, 223,
-	 120, 156, 115, 232, 150, 209, 145, 133,
-	 104, 112, 237, 156, 116, 250,  65, 102,
-	 212, 210, 103, 240, 177,  61,  93,  40,
-	  71, 231, 223, 226, 240, 157,  15,  31,
-	 150,  89, 200, 215, 198, 203, 108,  70,
-	 117,  66, 212, 238, 193, 205,  23, 161,
-	 169, 218, 243, 203, 128, 214, 127, 253,
-	 215, 139,  43,  17, 135, 103, 179, 220,
-	  28,   2, 212, 206, 131, 158, 128,  66,
-	  62, 240,  78, 186, 141, 125, 132, 227,
-	  60, 137,  43,  31, 152, 199,  54,  72,
-	  34, 212, 115,  11, 152, 101,  70,  42,
-	 219, 233, 142,  66, 151, 250, 126, 146,
-	 141, 216, 190,  73,  50, 177, 146,   5,
-	  52, 247,  28, 197,  21,  59, 170, 247,
-	 181,  89, 131, 241, 169, 182, 246,  99,
-	  15,  36, 102, 166, 182, 172, 197, 136,
-	 230, 120,  60,  58, 219, 243, 149,  94,
-	 222, 150, 154, 194, 110, 227, 225, 112,
-	  39,  89, 233, 112, 207, 211, 241, 124,
-	 174,  69, 221, 179, 107, 196, 225, 127,
-	 167, 112, 226,  12, 242,  16,  24,  28,
-	 120, 182, 244, 213, 244, 153, 194, 162,
-	  69, 160, 244, 248,  63, 165, 141,   4,
-	 207, 249, 193,  79, 131,   0, 169, 233,
-	 127, 167, 101, 151, 125,  56, 112, 111,
-	 248,  29, 232,  90,  29, 147, 110, 169,
-	 146, 114, 165, 204,  71, 136,  41, 252
-}
-,
-*lws_jwe_ex_a2_jwk_enc_key_b64 = (uint8_t *)
-	"UGhIOguC7IuEvf_NPVaXsGMoLOmwvc1GyqlIKOK1nN94nHPoltGRhWhw7Zx0-kFm"
-	"1NJn8LE9XShH59_i8J0PH5ZZyNfGy2xGdULU7sHNF6Gp2vPLgNZ__deLKxGHZ7Pc"
-	"HALUzoOegEI-8E66jX2E4zyJKx-YxzZIItRzC5hlRirb6Y5Cl_p-ko3YvkkysZIF"
-	"NPccxRU7qve1WYPxqbb2Yw8kZqa2rMWI5ng8OtvzlV7elprCbuPhcCdZ6XDP0_F8"
-	"rkXds2vE4X-ncOIM8hAYHHi29NX0mcKiRaD0-D-ljQTP-cFPgwCp6X-nZZd9OHBv"
-	"-B3oWh2TbqmScqXMR4gp_A",
+	lws_jose_init(&jose);
+	lws_jws_init(&jws, &jwk, context);
 
-lws_jwe_ex_a2_iv[] = {
-	  3,  22,  60,  12,  43,  67, 104, 105,
-	108, 108, 105,  99, 111, 116, 104, 101
-},
+	if (lws_jwk_import(&jwk, NULL, NULL, ex_a1_jwk_json,
+			   strlen(ex_a1_jwk_json)) < 0) {
+		lwsl_notice("%s: Failed to decode JWK test key\n", __func__);
+		goto bail;
+	}
 
-*lws_jwe_ex_a2_iv_b64 = (uint8_t *)
-	"AxY8DCtDaGlsbGljb3RoZQ",
-
-lws_jwe_ex_a2_aad[] = {
-	101, 121,  74, 104,  98,  71,  99, 105,
-	 79, 105,  74,  83,  85,  48,  69, 120,
-	 88, 122,  85, 105,  76,  67,  74, 108,
-	 98, 109,  77, 105,  79, 105,  74,  66,
-	 77,  84,  73,  52,  81,  48,  74,  68,
-	 76,  85, 104,  84,  77, 106,  85,  50,
-	 73, 110,  48
-},
+	/* converts a compact serialization to jws b64 + decoded maps */
+	if (lws_jws_compact_decode(ex_a1_compact, strlen(ex_a1_compact),
+				   &jws.map, &jws.map_b64, temp, &temp_len) != 5) {
+		lwsl_err("%s: lws_jws_compact_decode failed\n", __func__);
+		goto bail;
+	}
 
-lws_jwe_ex_a2_ciphertext[] = {
-	 40,  57,  83, 181, 119,  33, 133, 148,
-	198, 185, 243,  24, 152, 230,   6,  75,
-	129, 223, 127,  19, 210,  82, 183, 230,
-	168,  33, 215, 104, 143, 112,  56, 102
-},
+	n = lws_jwe_auth_and_decrypt(&jose, &jws);
+	lws_jwk_destroy(&jwk);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_auth_and_decrypt failed\n",
+			 __func__);
+		goto bail;
+	}
+
+	/* allowing for trailing padding, confirm the plaintext */
+	if (jws.map.len[LJWE_CTXT] < strlen(ex_a1_ptext) ||
+	    lws_timingsafe_bcmp(jws.map.buf[LJWE_CTXT], ex_a1_ptext,
+			        strlen(ex_a1_ptext))) {
+		lwsl_err("%s: plaintext AES decrypt wrong\n", __func__);
+		lwsl_hexdump_notice(ex_a1_ptext, strlen(ex_a1_ptext));
+		lwsl_hexdump_notice(jws.map.buf[LJWE_CTXT],
+				    jws.map.len[LJWE_CTXT]);
+		goto bail;
+	}
 
-*lws_jwe_ex_a2_ciphertext_b64 = (uint8_t *)
-	"KDlTtXchhZTGufMYmOYGS4HffxPSUrfmqCHXaI9wOGY",
+	/*
+	 * Canned decrypt worked properly... let's also try encoding the
+	 * plaintext ourselves and decoding that...
+	 */
+	lws_jws_destroy(&jws);
+	lws_jose_destroy(&jose);
+	temp_len = sizeof(temp);
+	lws_jose_init(&jose);
+	lws_jws_init(&jws, &jwk, context);
 
-lws_jwe_ex_a2_authtag[] = {
-	246,  17, 244, 190,   4,  95,  98,   3,
-	231,   0, 115, 157, 242, 203, 100, 191
-},
+	if (lws_jwk_import(&jwk, NULL, NULL, ex_a1_jwk_json,
+			   strlen(ex_a1_jwk_json)) < 0) {
+		lwsl_notice("%s: Failed to decode JWK test key\n", __func__);
+		goto bail;
+	}
+
+	if (lws_gencrypto_jwe_alg_to_definition("RSA-OAEP", &jose.alg)) {
+		lwsl_err("Unknown cipher alg \"RSA-OAEP\"\n");
+		goto bail1;
+	}
+	if (lws_gencrypto_jwe_enc_to_definition("A256GCM", &jose.enc_alg)) {
+		lwsl_err("Unknown payload enc alg \"A256GCM\"\n");
+		goto bail1;
+	}
+
+	/* we require a JOSE-formatted header to do the encryption */
+
+	if (temp_len < 256)
+		goto bail1;
+	jws.map.buf[LJWS_JOSE] = temp;
+	jws.map.len[LJWS_JOSE] = lws_snprintf(temp, temp_len,
+			"{\"alg\":\"%s\",\"enc\":\"%s\"}", "RSA-OAEP", "A256GCM");
+	temp_len -= jws.map.len[LJWS_JOSE];
+
+	/*
+	 * dup the plaintext into the ciphertext element, it will be
+	 * encrypted in-place to a ciphertext of the same length
+	 */
+
+	if (lws_jws_dup_element(&jws.map, LJWE_CTXT,
+				lws_concat_temp(temp, temp_len), &temp_len,
+				ex_a1_ptext, strlen(ex_a1_ptext), 0)) {
+		lwsl_notice("%s: Not enough temp space for ptext\n", __func__);
+		goto bail;
+	}
 
-*lws_jwe_ex_a2_authtag_b64 = (uint8_t *)
-	"9hH0vgRfYgPnAHOd8stkvw",
+	/* CEK size is determined by hash / hmac size */
 
-*lws_jwe_ex_a2_aggregated = (uint8_t *)
-	"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0."
+	n = lws_gencrypto_bits_to_bytes(jose.enc_alg->keybits_fixed);
+	if (lws_jws_randomize_element(context, &jws.map, LJWE_EKEY,
+				      lws_concat_temp(temp, temp_len),
+				      &temp_len, n,
+				      LWS_JWE_LIMIT_KEY_ELEMENT_BYTES)) {
+		lwsl_err("Problem getting random\n");
+		goto bail1;
+	}
+
+	n = lws_jwe_encrypt(&jose, &jws, lws_concat_temp(temp, temp_len),
+			    &temp_len);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_encrypt failed\n", __func__);
+		goto bail1;
+	}
+	n = lws_jwe_write_compact(&jose, &jws, compact, sizeof(compact));
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_write_compact failed: %d\n",
+			 __func__, n);
+		goto bail1;
+	}
+
+	// puts(compact);
+
+	/*
+	 * Okay... what happens when we try to decode what we created?
+	 */
+
+	lws_jws_destroy(&jws);
+	lws_jws_init(&jws, &jwk, context);
+	temp_len = sizeof(temp);
+
+	/* converts a compact serialization to jws b64 + decoded maps */
+	if (lws_jws_compact_decode(compact, strlen(compact),
+				   &jws.map, &jws.map_b64, temp, &temp_len) != 5) {
+		lwsl_err("%s: lws_jws_compact_decode failed\n", __func__);
+		goto bail;
+	}
+
+	n = lws_jwe_auth_and_decrypt(&jose, &jws);
+	lws_jwk_destroy(&jwk);
+	if (n < 0) {
+		lwsl_err("%s: generated lws_jwe_auth_and_decrypt failed\n",
+			 __func__);
+		goto bail;
+	}
+
+	ret = 0;
+
+bail1:
+	lws_jwk_destroy(&jwk);
+bail:
+	lws_jose_destroy(&jose);
+	if (ret)
+		lwsl_err("%s: selftest failed +++++++++++++++++++\n", __func__);
+	else
+		lwsl_notice("%s: selftest OK\n", __func__);
+
+	return ret;
+}
+
+
+/* A.2.  Example JWE using RSAES-PKCS1-v1_5 and AES_128_CBC_HMAC_SHA_256
+ *
+ * This example encrypts the plaintext "Live long and prosper." to the
+ * recipient using RSAES-PKCS1-v1_5 for key encryption and
+ * AES_128_CBC_HMAC_SHA_256 for content encryption.
+ */
+
+/* "Live long and prosper." */
+static uint8_t
+
+ex_a2_ptext[] = {
+	76, 105, 118, 101, 32, 108, 111, 110,
+	103, 32, 97, 110, 100, 32,  112, 114,
+	111, 115, 112, 101, 114, 46
+}, *lws_jwe_ex_a2_jwk_json = (uint8_t *)
+	"{"
+	 "\"kty\":\"RSA\","
+	 "\"n\":\"sXchDaQebHnPiGvyDOAT4saGEUetSyo9MKLOoWFsueri23bOdgWp4Dy1Wl"
+		 "UzewbgBHod5pcM9H95GQRV3JDXboIRROSBigeC5yjU1hGzHHyXss8UDpre"
+		 "cbAYxknTcQkhslANGRUZmdTOQ5qTRsLAt6BTYuyvVRdhS8exSZEy_c4gs_"
+		 "7svlJJQ4H9_NxsiIoLwAEk7-Q3UXERGYw_75IDrGA84-lA_-Ct4eTlXHBI"
+		 "Y2EaV7t7LjJaynVJCpkv4LKjTTAumiGUIuQhrNhZLuF_RJLqHpM2kgWFLU"
+		 "7-VTdL1VbC2tejvcI2BlMkEpk1BzBZI0KQB0GaDWFLN-aEAw3vRw\","
+	 "\"e\":\"AQAB\","
+	 "\"d\":\"VFCWOqXr8nvZNyaaJLXdnNPXZKRaWCjkU5Q2egQQpTBMwhprMzWzpR8Sxq"
+		 "1OPThh_J6MUD8Z35wky9b8eEO0pwNS8xlh1lOFRRBoNqDIKVOku0aZb-ry"
+		 "nq8cxjDTLZQ6Fz7jSjR1Klop-YKaUHc9GsEofQqYruPhzSA-QgajZGPbE_"
+		 "0ZaVDJHfyd7UUBUKunFMScbflYAAOYJqVIVwaYR5zWEEceUjNnTNo_CVSj"
+		 "-VvXLO5VZfCUAVLgW4dpf1SrtZjSt34YLsRarSb127reG_DUwg9Ch-Kyvj"
+		 "T1SkHgUWRVGcyly7uvVGRSDwsXypdrNinPA4jlhoNdizK2zF2CWQ\","
+	 "\"p\":\"9gY2w6I6S6L0juEKsbeDAwpd9WMfgqFoeA9vEyEUuk4kLwBKcoe1x4HG68"
+		 "ik918hdDSE9vDQSccA3xXHOAFOPJ8R9EeIAbTi1VwBYnbTp87X-xcPWlEP"
+		 "krdoUKW60tgs1aNd_Nnc9LEVVPMS390zbFxt8TN_biaBgelNgbC95sM\","
+	 "\"q\":\"uKlCKvKv_ZJMVcdIs5vVSU_6cPtYI1ljWytExV_skstvRSNi9r66jdd9-y"
+		 "BhVfuG4shsp2j7rGnIio901RBeHo6TPKWVVykPu1iYhQXw1jIABfw-MVsN"
+		 "-3bQ76WLdt2SDxsHs7q7zPyUyHXmps7ycZ5c72wGkUwNOjYelmkiNS0\","
+	 "\"dp\":\"w0kZbV63cVRvVX6yk3C8cMxo2qCM4Y8nsq1lmMSYhG4EcL6FWbX5h9yuv"
+		 "ngs4iLEFk6eALoUS4vIWEwcL4txw9LsWH_zKI-hwoReoP77cOdSL4AVcra"
+		 "Hawlkpyd2TWjE5evgbhWtOxnZee3cXJBkAi64Ik6jZxbvk-RR3pEhnCs\","
+	 "\"dq\":\"o_8V14SezckO6CNLKs_btPdFiO9_kC1DsuUTd2LAfIIVeMZ7jn1Gus_Ff"
+		 "7B7IVx3p5KuBGOVF8L-qifLb6nQnLysgHDh132NDioZkhH7mI7hPG-PYE_"
+		 "odApKdnqECHWw0J-F0JWnUd6D2B_1TvF9mXA2Qx-iGYn8OVV1Bsmp6qU\","
+	 "\"qi\":\"eNho5yRBEBxhGBtQRww9QirZsB66TrfFReG_CcteI1aCneT0ELGhYlRlC"
+		 "tUkTRclIfuEPmNsNDPbLoLqqCVznFbvdB7x-Tl-m0l_eFTj2KiqwGqE9PZ"
+		 "B9nNTwMVvH3VRRSLWACvPnSiwP8N5Usy-WRXS-V7TbpxIhvepTfE0NNo\""
+	"}",
+
+*ex_a2_compact = (uint8_t *)
+	"eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0"
+	"."
 	"UGhIOguC7IuEvf_NPVaXsGMoLOmwvc1GyqlIKOK1nN94nHPoltGRhWhw7Zx0-kFm"
 	"1NJn8LE9XShH59_i8J0PH5ZZyNfGy2xGdULU7sHNF6Gp2vPLgNZ__deLKxGHZ7Pc"
 	"HALUzoOegEI-8E66jX2E4zyJKx-YxzZIItRzC5hlRirb6Y5Cl_p-ko3YvkkysZIF"
 	"NPccxRU7qve1WYPxqbb2Yw8kZqa2rMWI5ng8OtvzlV7elprCbuPhcCdZ6XDP0_F8"
 	"rkXds2vE4X-ncOIM8hAYHHi29NX0mcKiRaD0-D-ljQTP-cFPgwCp6X-nZZd9OHBv"
-	"-B3oWh2TbqmScqXMR4gp_A."
-	"AxY8DCtDaGlsbGljb3RoZQ."
-	"KDlTtXchhZTGufMYmOYGS4HffxPSUrfmqCHXaI9wOGY."
+	"-B3oWh2TbqmScqXMR4gp_A"
+	"."
+	"AxY8DCtDaGlsbGljb3RoZQ"
+	"."
+	"KDlTtXchhZTGufMYmOYGS4HffxPSUrfmqCHXaI9wOGY"
+	"."
 	"9hH0vgRfYgPnAHOd8stkvw"
-#endif
 ;
 
-/*
- * These are the inputs and outputs from the worked example in RFC7515
- * Appendix A.1.
- *
- * 1) has a fixed header + payload, and a fixed SHA256 HMAC key, and must give
- * a fixed BASE64URL result.
+static int
+test_jwe_a2(struct lws_context *context)
+{
+	struct lws_jose jose;
+	struct lws_jws jws;
+	struct lws_jwk jwk;
+	char temp[2048];
+	int n, ret = -1, temp_len = sizeof(temp);
+
+	lws_jose_init(&jose);
+	lws_jws_init(&jws, &jwk, context);
+
+	if (lws_jwk_import(&jwk, NULL, NULL, (char *)lws_jwe_ex_a2_jwk_json,
+			   strlen((char *)lws_jwe_ex_a2_jwk_json)) < 0) {
+		lwsl_notice("%s: Failed to decode JWK test key\n", __func__);
+		goto bail;
+	}
+
+	/* converts a compact serialization to jws b64 + decoded maps */
+	if (lws_jws_compact_decode((const char *)ex_a2_compact,
+				   strlen((char *)ex_a2_compact),
+				   &jws.map, &jws.map_b64,
+				   (char *)temp, &temp_len) != 5) {
+		lwsl_err("%s: lws_jws_compact_decode failed\n", __func__);
+		goto bail;
+	}
+
+	n = lws_jwe_auth_and_decrypt(&jose, &jws);
+	lws_jwk_destroy(&jwk);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_auth_and_decrypt failed\n",
+			 __func__);
+		goto bail;
+	}
+
+	/* allowing for trailing padding, confirm the plaintext */
+	if (jws.map.len[LJWE_CTXT] < sizeof(ex_a2_ptext) ||
+	    lws_timingsafe_bcmp(jws.map.buf[LJWE_CTXT], ex_a2_ptext,
+			        sizeof(ex_a2_ptext))) {
+		lwsl_err("%s: plaintext AES decrypt wrong\n", __func__);
+		lwsl_hexdump_notice(ex_a2_ptext, sizeof(ex_a2_ptext));
+		lwsl_hexdump_notice(jws.map.buf[LJWE_CTXT],
+				    jws.map.len[LJWE_CTXT]);
+		goto bail;
+	}
+
+	ret = 0;
+
+bail:
+	lws_jws_destroy(&jws);
+	lws_jose_destroy(&jose);
+	if (ret)
+		lwsl_err("%s: selftest failed +++++++++++++++++++\n", __func__);
+	else
+		lwsl_notice("%s: selftest OK\n", __func__);
+
+	return ret;
+}
+
+/* JWE creation using RSAES-PKCS1-v1_5 and AES_128_CBC_HMAC_SHA_256
  *
- * 2) has a fixed header + payload and is signed with a key given in JWK format
+ * This example encrypts a different, larger plaintext using the jwk key from
+ * the test above, and AES_128_CBC_HMAC_SHA_256 for content encryption.
  */
-int
-test_jwe(struct lws_context *context)
+
+static const char *rsa256a128_jose =
+		"{ \"alg\":\"RSA1_5\",\"enc\":\"A128CBC-HS256\"}";
+
+static uint8_t
+
+	/* plaintext is 1024 bytes from /dev/urandom */
+
+ra_ptext_1024[] = {
+		0xfe, 0xc6, 0x4f, 0x3e, 0x4a, 0x19, 0xe9, 0xd7,
+		0xc2, 0x13, 0xe7, 0xc5, 0x78, 0x6e, 0x71, 0xf6,
+		0x6e, 0xdd, 0x04, 0xaf, 0xaa, 0x4e, 0xa8, 0xad,
+		0xd8, 0xe0, 0xb3, 0x32, 0x97, 0x43, 0x7c, 0xd8,
+		0xd1, 0x5f, 0x56, 0xac, 0x70, 0xaf, 0x7d, 0x0b,
+		0x40, 0xa1, 0x96, 0x71, 0x7c, 0xc4, 0x4a, 0x37,
+		0x0b, 0xa6, 0x06, 0xb3, 0x8c, 0x87, 0xee, 0xb6,
+		0x15, 0xfe, 0xaa, 0x60, 0x7e, 0x7f, 0xdc, 0xb0,
+		0xff, 0x96, 0x4b, 0x30, 0x60, 0xcf, 0xc6, 0x5d,
+		0x09, 0x6a, 0x6f, 0x66, 0x0c, 0x5f, 0xb0, 0x6f,
+		0x61, 0xa6, 0x26, 0x02, 0xbd, 0x46, 0xda, 0xa3,
+		0x73, 0x19, 0x17, 0xff, 0xe0, 0x5f, 0x30, 0x72,
+		0x7d, 0x17, 0xd8, 0xb2, 0xbe, 0x84, 0x3e, 0x4d,
+		0x76, 0xbd, 0x62, 0x5d, 0x63, 0xfe, 0x11, 0x32,
+		0x11, 0x41, 0xdc, 0xed, 0x96, 0xfd, 0x31, 0x38,
+		0x6a, 0x84, 0x55, 0x7a, 0x33, 0x3f, 0x37, 0xc3,
+		0x37, 0x7b, 0xc1, 0xb7, 0x89, 0x00, 0x39, 0xa6,
+		0x94, 0x91, 0xb7, 0x19, 0x6b, 0x1d, 0x99, 0xeb,
+		0xf6, 0x10, 0xb9, 0xd2, 0xcd, 0x15, 0x0d, 0xbc,
+		0x24, 0x34, 0x9a, 0x52, 0x64, 0x21, 0x72, 0x1e,
+		0x9a, 0x00, 0xf2, 0xcf, 0xf1, 0x7d, 0x1a, 0x12,
+		0x8d, 0x39, 0xbc, 0xf9, 0x09, 0xfd, 0xd9, 0x22,
+		0x27, 0x28, 0xe1, 0x3a, 0x0b, 0x82, 0xba, 0x9a,
+		0xe5, 0x9d, 0xa8, 0x12, 0x6e, 0xf5, 0x4b, 0xc7,
+		0x2b, 0x9c, 0xdc, 0xfe, 0xf3, 0xe8, 0x74, 0x65,
+		0x3d, 0xe0, 0xaa, 0x64, 0xf3, 0x43, 0xa4, 0x88,
+		0xa8, 0xbe, 0x60, 0xdb, 0xfd, 0x2d, 0x3b, 0x84,
+		0x82, 0x8f, 0x4d, 0xbb, 0xe4, 0xa9, 0x59, 0xe3,
+		0x6c, 0x52, 0x45, 0xe4, 0x34, 0xdb, 0x28, 0x0e,
+		0x4a, 0x44, 0xb6, 0x9a, 0x25, 0x9b, 0x3b, 0xae,
+		0xe1, 0x12, 0x1d, 0x1c, 0x66, 0x7d, 0xb9, 0x5b,
+		0x5f, 0xc2, 0x4a, 0xaa, 0xd2, 0xe9, 0x65, 0xe2,
+		0x85, 0x6f, 0xf6, 0x67, 0x66, 0x8e, 0x0b, 0xd2,
+		0x60, 0xf8, 0x43, 0x60, 0x04, 0x9b, 0xa9, 0x3a,
+		0x6a, 0x3c, 0x02, 0x3c, 0x08, 0x9d, 0x60, 0x1c,
+		0xc4, 0x27, 0x3e, 0xff, 0xd0, 0x70, 0x94, 0x43,
+		0x3e, 0x9e, 0x69, 0x19, 0x22, 0xf0, 0xec, 0x26,
+		0x2d, 0xa5, 0x71, 0xf3, 0x92, 0x61, 0x95, 0xce,
+		0xc3, 0xc0, 0xa0, 0xc3, 0x98, 0x22, 0xdd, 0x32,
+		0x3c, 0x48, 0xcb, 0xd1, 0x61, 0xa0, 0xaa, 0x9a,
+		0x7e, 0x5a, 0xfa, 0x26, 0x46, 0x49, 0xfc, 0x9c,
+		0xaa, 0x21, 0x06, 0x45, 0xf1, 0xa0, 0xc9, 0xef,
+		0x6b, 0x89, 0xf2, 0x01, 0x20, 0x54, 0xfa, 0x0a,
+		0x23, 0xff, 0xbd, 0x64, 0x35, 0x94, 0xfd, 0x35,
+		0x70, 0x52, 0x94, 0x66, 0xc5, 0xd0, 0x27, 0xc1,
+		0x8f, 0x6d, 0xc4, 0xa3, 0x34, 0xc2, 0xea, 0xf0,
+		0xb3, 0x0d, 0x6c, 0x13, 0xb5, 0xc9, 0x6e, 0x5c,
+		0xeb, 0x8b, 0x7b, 0xf5, 0x21, 0x4c, 0xe3, 0xb7,
+		0x73, 0x6d, 0x07, 0xaa, 0x44, 0xc4, 0xba, 0xc5,
+		0xa5, 0x0e, 0x75, 0x28, 0xb7, 0x50, 0x22, 0x54,
+		0xa7, 0xe1, 0x2e, 0xfd, 0x20, 0xcd, 0xa4, 0x31,
+		0xa3, 0xb2, 0x73, 0x98, 0x7c, 0x3c, 0x8f, 0xa3,
+		0x40, 0x8a, 0xaf, 0x31, 0xfa, 0xf9, 0x70, 0x4d,
+		0x83, 0x10, 0xc4, 0xa0, 0x9c, 0xd6, 0xa3, 0xd5,
+		0x07, 0xaf, 0xaf, 0x35, 0x15, 0xd0, 0x84, 0x09,
+		0x20, 0x36, 0x88, 0xac, 0x6f, 0x16, 0x5e, 0x03,
+		0xa9, 0xfc, 0xb3, 0x2d, 0x01, 0x57, 0xb3, 0xed,
+		0x4b, 0x55, 0x2b, 0xbc, 0x92, 0x87, 0x3e, 0x27,
+		0xc4, 0x2c, 0x44, 0xac, 0x05, 0x5f, 0x26, 0xe7,
+		0xe9, 0xb0, 0x2d, 0x6b, 0x3c, 0x8c, 0xd2, 0xb4,
+		0x3c, 0xb4, 0x86, 0xfe, 0x68, 0x99, 0x2a, 0x42,
+		0xac, 0xa4, 0xb3, 0x89, 0x61, 0xb3, 0xd1, 0xdf,
+		0x9b, 0x58, 0xc7, 0x81, 0x62, 0x87, 0x26, 0x52,
+		0x51, 0xe7, 0x7d, 0x7c, 0x37, 0x14, 0xe5, 0x19,
+		0x28, 0x34, 0x3e, 0x95, 0x17, 0x36, 0x12, 0xf9,
+		0x5e, 0xc1, 0x3c, 0x9c, 0x28, 0x70, 0x06, 0xdf,
+		0xc4, 0x6d, 0x25, 0x04, 0x46, 0xe0, 0x95, 0xf0,
+		0xc8, 0x57, 0x48, 0x27, 0x26, 0xf3, 0xf7, 0x19,
+		0xbe, 0xea, 0xb4, 0xd4, 0x64, 0xaf, 0x67, 0x7c,
+		0xf5, 0xa9, 0xfb, 0x85, 0x4a, 0x43, 0x9c, 0x62,
+		0x06, 0x5e, 0x28, 0x2a, 0x7b, 0x1e, 0xb3, 0x07,
+		0xe7, 0x19, 0x32, 0xa4, 0x4e, 0xb4, 0xce, 0xe0,
+		0x92, 0x56, 0xf5, 0x10, 0xcb, 0x56, 0x34, 0x4b,
+		0x0d, 0xe1, 0xd3, 0x6d, 0xfe, 0xf0, 0x44, 0xf7,
+		0x22, 0x1d, 0x5e, 0x6b, 0xa7, 0xa5, 0x83, 0x2e,
+		0xeb, 0x14, 0xf2, 0xd7, 0x27, 0x5a, 0x2a, 0xd2,
+		0x55, 0x35, 0xe6, 0x7e, 0xd9, 0x3b, 0xac, 0x4e,
+		0x5a, 0x22, 0x46, 0xd5, 0x7b, 0x57, 0x9c, 0x58,
+		0xfe, 0xd0, 0xda, 0xbf, 0x7d, 0xe9, 0x8c, 0xb7,
+		0xba, 0x88, 0xf1, 0xc3, 0x82, 0x53, 0xc3, 0x66,
+		0x20, 0x51, 0x12, 0xd3, 0xf9, 0xaf, 0xe9, 0xcb,
+		0xc1, 0x7a, 0xe6, 0x22, 0x44, 0xa5, 0xdf, 0x18,
+		0xb3, 0x6e, 0x6c, 0xba, 0xf3, 0xc6, 0x24, 0x5a,
+		0x1c, 0x67, 0xa6, 0xa5, 0xb4, 0xb1, 0x35, 0xdf,
+		0x5a, 0x60, 0x5c, 0x0b, 0x66, 0xd3, 0x1f, 0x4e,
+		0x7c, 0xcb, 0x93, 0x7e, 0x2f, 0x6d, 0xbd, 0xce,
+		0x26, 0x52, 0x44, 0xee, 0xbb, 0xd8, 0x8f, 0xf2,
+		0x67, 0x38, 0x0d, 0x3b, 0xaa, 0x21, 0x73, 0xf8,
+		0x3b, 0x54, 0x9d, 0x4e, 0x5e, 0xf1, 0xa2, 0x18,
+		0x5a, 0xf1, 0x6c, 0x32, 0xbf, 0x0a, 0x73, 0x14,
+		0x48, 0x4f, 0x56, 0xc0, 0x87, 0x6d, 0x3b, 0x16,
+		0xcc, 0x3f, 0x44, 0x19, 0x85, 0x22, 0x43, 0x5f,
+		0x8c, 0x29, 0xbd, 0xa0, 0xce, 0x84, 0xd9, 0x4a,
+		0xcf, 0x00, 0x6b, 0x37, 0x35, 0xe0, 0xb3, 0xc9,
+		0xd1, 0x58, 0xd1, 0x1b, 0xc3, 0x6f, 0xe3, 0x50,
+		0xdb, 0xa6, 0x5e, 0x03, 0x18, 0xe5, 0xe2, 0xc1,
+		0x97, 0xd5, 0xf8, 0x42, 0x6f, 0xe6, 0x61, 0x80,
+		0xc9, 0x7c, 0xc6, 0x83, 0xf0, 0xad, 0x70, 0x13,
+		0x0e, 0x26, 0x75, 0xc0, 0x12, 0x23, 0x14, 0xef,
+		0x1f, 0xdf, 0xfd, 0x47, 0x99, 0x9f, 0x22, 0xf3,
+		0x57, 0x21, 0xdc, 0x38, 0xe4, 0x79, 0x87, 0x5b,
+		0x67, 0x66, 0xdd, 0x0b, 0xe0, 0xae, 0xb5, 0x97,
+		0xd8, 0xa6, 0x5d, 0x02, 0xcf, 0x6b, 0x84, 0x19,
+		0xc1, 0xbb, 0x25, 0xd2, 0x10, 0xb9, 0x63, 0xeb,
+		0x4b, 0x27, 0x8d, 0x05, 0x31, 0xce, 0x3b, 0x0c,
+		0x5f, 0xd4, 0x83, 0x47, 0xa4, 0x8b, 0xc4, 0x76,
+		0x33, 0x74, 0x1a, 0x07, 0xf8, 0x18, 0x82, 0x1c,
+		0x8e, 0x01, 0x75, 0x78, 0xea, 0xd9, 0x72, 0x61,
+		0x71, 0xa9, 0x09, 0x44, 0x7b, 0x0f, 0x12, 0xcf,
+		0x4c, 0x76, 0x7b, 0x69, 0xc8, 0x64, 0x98, 0x60,
+		0x45, 0xb6, 0xc7, 0x6b, 0xd8, 0x43, 0x99, 0x08,
+		0xc9, 0xd3, 0x6f, 0x01, 0x4f, 0x57, 0x6f, 0x49,
+		0x4f, 0x4f, 0x72, 0xa4, 0xa2, 0x45, 0xe1, 0x0e,
+		0xf2, 0x08, 0x3e, 0x67, 0xc3, 0x83, 0x5b, 0xb1,
+		0x24, 0xc0, 0xe0, 0x3a, 0xf5, 0x1f, 0xf2, 0x06,
+		0x4b, 0xa7, 0x6f, 0xd2, 0xb2, 0x81, 0x96, 0x91,
+		0x42, 0xb1, 0x53, 0x65, 0x3a, 0x12, 0xcd, 0x33,
+		0xb3, 0x7e, 0x79, 0xc0, 0x46, 0xf6, 0xd8, 0x4a,
+		0x22, 0x35, 0xb8, 0x3f, 0xe4, 0x08, 0x88, 0x49,
+		0x3c, 0x73, 0x9a, 0x44, 0xe3, 0x3b, 0xcc, 0xc4,
+		0xae, 0x7c, 0xbe, 0xfd, 0xa6, 0x4a, 0xd4, 0x26,
+		0x52, 0x58, 0x81, 0x30, 0x66, 0x44, 0x54, 0xc8,
+		0xe4, 0x7c, 0x5b, 0x63, 0x06, 0x60, 0x94, 0x62,
+		0xe5, 0x47, 0x45, 0xfb, 0x58, 0xf5, 0x6a, 0x7c,
+		0xb2, 0x35, 0x08, 0x03, 0x15, 0x68, 0xb3, 0x13,
+		0xa5, 0xbd, 0xf2, 0x1e, 0x2e, 0x1c, 0x8f, 0xc6,
+		0xc7, 0xd1, 0xa9, 0x64, 0x37, 0x2b, 0x23, 0xfa,
+		0x7e, 0x56, 0x22, 0xf0, 0x8a, 0xbd, 0xeb, 0x04
+},
+
+r256a128_cek[] = {
+		0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+		0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+		0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+		0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
+}
+;
+
+static int
+test_jwe_ra_ptext_1024(struct lws_context *context, char *jwk_txt, int jwk_len)
 {
-	//const struct lws_jose_jwe_alg *jose_alg;
-	struct lws_genrsa_ctx rsactx;
+	struct lws_jose jose, dec_jose;
+	char temp[4096], compact[4096];
+	struct lws_jws jws;
 	struct lws_jwk jwk;
-	uint8_t enc_cek[/* sizeof(lws_jwe_ex_a2_jwk_enc_key) */ 256 + 2048];
-	char buf[2048], *p = buf, *end = buf + sizeof(buf) - 1;
-	int n;
+	int n, ret = -1, temp_len = sizeof(temp);
 
-	/* Test 1: A.2 */
+	lws_jose_init(&jose);
+	lws_jose_init(&dec_jose);
+	lws_jws_init(&jws, &jwk, context);
 
-	/* Decode the JWK JSON key */
+	/* reuse the rsa private key from the JWE Appendix 2 test above */
 
-	if (lws_jwk_import(&jwk, NULL, NULL, (char *)lws_jwe_ex_a2_jwk_json,
-			   strlen((char *)lws_jwe_ex_a2_jwk_json)) < 0) {
-		lwsl_notice("Failed to decode JWK test key\n");
-		return -1;
+	if (lws_jwk_import(&jwk, NULL, NULL, jwk_txt, jwk_len) < 0) {
+		lwsl_notice("%s: Failed to decode JWK test key\n", __func__);
+		goto bail;
 	}
 
-	if (jwk.kty != LWS_GENCRYPTO_KYT_RSA) {
-		lwsl_err("%s: unexpected kty %d\n", __func__, jwk.kty);
+	/* dup the plaintext, it will be replaced in-situ by the ciphertext */
 
-		return -1;
+	if (lws_jws_dup_element(&jws.map, LJWE_CTXT,
+				lws_concat_temp(temp, temp_len), &temp_len,
+				ra_ptext_1024, sizeof(ra_ptext_1024), 0)) {
+		lwsl_notice("%s: Not enough temp space for ptext\n", __func__);
+		goto bail;
 	}
 
-	/* A.2.1: encode JOSE header and confirm matches official string */
+	/* dup the cek, since it will be replaced by the encrypted key */
 
-	n = lws_jws_encode_section((char *)lws_jwe_ex_a2_jose_hdr,
-				   strlen((char *)lws_jwe_ex_a2_jose_hdr), 1,
-				   &p, end);
-	if (n < 0)
+	if (lws_jws_dup_element(&jws.map, LJWE_EKEY,
+				lws_concat_temp(temp, temp_len), &temp_len,
+				r256a128_cek, sizeof(r256a128_cek),
+				LWS_JWE_LIMIT_KEY_ELEMENT_BYTES)) {
+		lwsl_notice("%s: Not enough temp space for EKEY\n", __func__);
 		goto bail;
-	if (strcmp(buf, (char *)lws_jwe_ex_a2_jose_hdr_b64utf8))
+	}
+
+	jws.map.buf[LJWE_JOSE] = rsa256a128_jose;
+	jws.map.len[LJWE_JOSE] = strlen(rsa256a128_jose);
+
+	n = lws_jwe_parse_jose(&jose, jws.map.buf[LJWE_JOSE],
+			       jws.map.len[LJWE_JOSE],
+			       lws_concat_temp(temp, temp_len), &temp_len);
+	if (n < 0) {
+		lwsl_err("%s: JOSE parse failed\n", __func__);
+
+		goto bail1;
+	}
+
+	n = lws_jwe_encrypt(&jose, &jws, lws_concat_temp(temp, temp_len),
+			    &temp_len);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_encrypt failed\n", __func__);
+		goto bail1;
+	}
+
+	n = lws_jwe_write_compact(&jose, &jws, compact, sizeof(compact));
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_write_compact failed: %d\n", __func__, n);
+		goto bail1;
+	}
+
+	// puts(compact);
+
+	lws_jws_destroy(&jws);
+	lws_jws_init(&jws, &jwk, context);
+	temp_len = sizeof(temp);
+
+	/* now we created the encrypted version, see if we can decrypt it */
+
+	if (lws_jws_compact_decode(compact, n, &jws.map, &jws.map_b64,
+				   temp, &temp_len) != 5) {
+		lwsl_err("%s: failed to parse generated compact\n", __func__);
+
+		goto bail1;
+	}
+
+	n = lws_jwe_auth_and_decrypt(&dec_jose, &jws);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_auth_and_decrypt failed\n",
+			 __func__);
+		goto bail1;
+	}
+
+	/* allowing for trailing padding, confirm the plaintext */
+	if (jws.map.len[LJWE_CTXT] < sizeof(ra_ptext_1024) ||
+	    lws_timingsafe_bcmp(jws.map.buf[LJWE_CTXT], ra_ptext_1024,
+			        sizeof(ra_ptext_1024))) {
+		lwsl_err("%s: plaintext AES decrypt wrong\n", __func__);
+		lwsl_hexdump_notice(ra_ptext_1024, sizeof(ra_ptext_1024));
+		lwsl_hexdump_notice(jws.map.buf[LJWE_CTXT],
+				    jws.map.len[LJWE_CTXT]);
+		goto bail1;
+	}
+
+	ret = 0;
+
+bail1:
+	lws_jwk_destroy(&jwk);
+bail:
+	lws_jws_destroy(&jws);
+	lws_jose_destroy(&dec_jose);
+	lws_jose_destroy(&jose);
+	if (ret)
+		lwsl_err("%s: selftest failed +++++++++++++++++++\n", __func__);
+	else
+		lwsl_notice("%s: selftest OK\n", __func__);
+
+	return ret;
+}
+
+static const char *rsa256a192_jose =
+		"{ \"alg\":\"RSA1_5\",\"enc\":\"A192CBC-HS384\"}";
+
+static const uint8_t r256a192_cek[] = {
+		0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+		0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+		0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+		0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+		0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+		0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f
+}
+;
+
+static int
+test_jwe_r256a192_ptext(struct lws_context *context, char *jwk_txt, int jwk_len)
+{
+	struct lws_jose jose, dec_jose;
+	struct lws_jws jws;
+	struct lws_jwk jwk;
+	char temp[4096], compact[4096];
+	int n, ret = -1, temp_len = sizeof(temp);
+
+	lws_jose_init(&jose);
+	lws_jose_init(&dec_jose);
+	lws_jws_init(&jws, &jwk, context);
+
+	/* reuse the rsa private key from the JWE Appendix 2 test above */
+
+	if (lws_jwk_import(&jwk, NULL, NULL, jwk_txt, jwk_len) < 0) {
+		lwsl_notice("%s: Failed to decode JWK test key\n", __func__);
+		goto bail;
+	}
+
+	/*
+	 * dup the plaintext into the ciphertext element, it will be
+	 * encrypted in-place to a ciphertext of the same length
+	 */
+
+	if (lws_jws_dup_element(&jws.map, LJWE_CTXT,
+				lws_concat_temp(temp, temp_len), &temp_len,
+				ra_ptext_1024, sizeof(ra_ptext_1024), 0)) {
+		lwsl_notice("%s: Not enough temp space for ptext\n", __func__);
+		goto bail;
+	}
+
+	/* copy the cek, since it will be replaced by the encrypted key */
+
+	if (lws_jws_dup_element(&jws.map, LJWE_EKEY,
+				lws_concat_temp(temp, temp_len), &temp_len,
+				r256a192_cek, sizeof(r256a192_cek),
+				LWS_JWE_LIMIT_KEY_ELEMENT_BYTES)) {
+		lwsl_err("Problem getting random\n");
+		goto bail1;
+	}
+
+	jws.map.buf[LJWE_JOSE] = rsa256a192_jose;
+	jws.map.len[LJWE_JOSE] = strlen(rsa256a192_jose);
+
+	n = lws_jwe_parse_jose(&jose, jws.map.buf[LJWE_JOSE],
+			       jws.map.len[LJWE_JOSE],
+			       lws_concat_temp(temp, temp_len), &temp_len);
+	if (n < 0) {
+		lwsl_err("%s: JOSE parse failed\n", __func__);
+
+		goto bail1;
+	}
+
+	n = lws_jwe_encrypt(&jose, &jws, lws_concat_temp(temp, temp_len),
+			    &temp_len);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_encrypt failed\n", __func__);
+		goto bail1;
+	}
+
+	n = lws_jwe_write_compact(&jose, &jws, compact, sizeof(compact));
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_write_compact failed: %d\n", __func__, n);
+		goto bail1;
+	}
+
+	// puts(compact);
+
+	/* now we created the encrypted version, see if we can decrypt it */
+
+	n = lws_jwe_auth_and_decrypt(&dec_jose, &jws);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_auth_and_decrypt failed\n",
+			 __func__);
+		goto bail1;
+	}
+
+	/* allowing for trailing padding, confirm the plaintext */
+	if (jws.map.len[LJWE_CTXT] < sizeof(ra_ptext_1024) ||
+	    lws_timingsafe_bcmp(jws.map.buf[LJWE_CTXT], ra_ptext_1024,
+			        sizeof(ra_ptext_1024))) {
+		lwsl_err("%s: plaintext AES decrypt wrong\n", __func__);
+		lwsl_hexdump_notice(ra_ptext_1024, sizeof(ra_ptext_1024));
+		lwsl_hexdump_notice(jws.map.buf[LJWE_CTXT],
+				    jws.map.len[LJWE_CTXT]);
+		goto bail1;
+	}
+
+	ret = 0;
+
+bail1:
+	lws_jwk_destroy(&jwk);
+bail:
+	lws_jws_destroy(&jws);
+	lws_jose_destroy(&dec_jose);
+	lws_jose_destroy(&jose);
+	if (ret)
+		lwsl_err("%s: selftest failed +++++++++++++++++++\n", __func__);
+	else
+		lwsl_notice("%s: selftest OK\n", __func__);
+
+	return ret;
+}
+
+
+static const char *rsa256a256_jose =
+		"{ \"alg\":\"RSA1_5\",\"enc\":\"A256CBC-HS512\"}";
+
+static const uint8_t r256a256_cek[] = {
+		0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+		0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+		0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+		0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+		0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+		0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+		0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+		0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f
+}
+;
+
+static int
+test_jwe_r256a256_ptext(struct lws_context *context, char *jwk_txt, int jwk_len)
+{
+	struct lws_jose jose, dec_jose;
+	struct lws_jws jws;
+	struct lws_jwk jwk;
+	char temp[4096], compact[4096];
+	int n, ret = -1, temp_len = sizeof(temp);
+
+	lws_jose_init(&jose);
+	lws_jose_init(&dec_jose);
+	lws_jws_init(&jws, &jwk, context);
+
+	/* reuse the rsa private key from the JWE Appendix 2 test above */
+
+	if (lws_jwk_import(&jwk, NULL, NULL, jwk_txt, jwk_len) < 0) {
+		lwsl_notice("%s: Failed to decode JWK test key\n", __func__);
 		goto bail;
+	}
 
-	/* A.2.3: Encrypt the CEK with the recipient's public key using the
-	 *        RSAES-PKCS1-v1_5 algorithm to produce the JWE Encrypted Key.
+	/*
+	 * dup the plaintext into the ciphertext element, it will be
+	 * encrypted in-place to a ciphertext of the same length
 	 */
 
-	if (lws_genrsa_create(&rsactx, jwk.e, context, LGRSAM_PKCS1_1_5)) {
-		lwsl_notice("%s: lws_genrsa_public_decrypt_create\n",
-			    __func__);
+	if (lws_jws_dup_element(&jws.map, LJWE_CTXT,
+				lws_concat_temp(temp, temp_len), &temp_len,
+				ra_ptext_1024, sizeof(ra_ptext_1024), 0)) {
+		lwsl_notice("%s: Not enough temp space for ptext\n", __func__);
 		goto bail;
 	}
 
-	memset(enc_cek, 0, sizeof(enc_cek));
+	/* copy the cek, since it will be replaced by the encrypted key */
+
+	if (lws_jws_dup_element(&jws.map, LJWE_EKEY,
+				lws_concat_temp(temp, temp_len), &temp_len,
+				r256a256_cek, sizeof(r256a256_cek),
+				LWS_JWE_LIMIT_KEY_ELEMENT_BYTES)) {
+		lwsl_err("Problem getting random\n");
+		goto bail1;
+	}
+
+	jws.map.buf[LJWE_JOSE] = rsa256a256_jose;
+	jws.map.len[LJWE_JOSE] = strlen(rsa256a256_jose);
 
-	n = lws_genrsa_public_encrypt(&rsactx, lws_jwe_ex_a2_cek,
-				      sizeof(lws_jwe_ex_a2_cek), enc_cek);
-	lws_genrsa_destroy(&rsactx);
+	n = lws_jwe_parse_jose(&jose, rsa256a256_jose, strlen(rsa256a256_jose),
+			       lws_concat_temp(temp, temp_len), &temp_len);
 	if (n < 0) {
-		lwsl_err("%s: encrypt cek fail\n", __func__);
+		lwsl_err("%s: JOSE parse failed\n", __func__);
+
+		goto bail1;
+	}
+
+	n = lws_jwe_encrypt(&jose, &jws, lws_concat_temp(temp, temp_len),
+			    &temp_len);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_encrypt failed\n", __func__);
+		goto bail1;
+	}
+
+	n = lws_jwe_write_compact(&jose, &jws, compact, sizeof(compact));
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_write_compact failed: %d\n", __func__, n);
+		goto bail1;
+	}
+
+	// puts(compact);
+
+	/* now we created the encrypted version, see if we can decrypt it */
+
+	n = lws_jwe_auth_and_decrypt(&dec_jose, &jws);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_auth_and_decrypt failed\n",
+			 __func__);
+		goto bail1;
+	}
+
+	/* allowing for trailing padding, confirm the plaintext */
+	if (jws.map.len[LJWE_CTXT] < sizeof(ra_ptext_1024) ||
+	    lws_timingsafe_bcmp(jws.map.buf[LJWE_CTXT], ra_ptext_1024,
+			        sizeof(ra_ptext_1024))) {
+		lwsl_err("%s: plaintext AES decrypt wrong\n", __func__);
+		lwsl_hexdump_notice(ra_ptext_1024, sizeof(ra_ptext_1024));
+		lwsl_hexdump_notice(jws.map.buf[LJWE_CTXT],
+				    jws.map.len[LJWE_CTXT]);
+		goto bail1;
+	}
+
+	ret = 0;
+
+bail1:
+	lws_jwk_destroy(&jwk);
+bail:
+	lws_jws_destroy(&jws);
+	lws_jose_destroy(&dec_jose);
+	lws_jose_destroy(&jose);
+	if (ret)
+		lwsl_err("%s: selftest failed +++++++++++++++++++\n", __func__);
+	else
+		lwsl_notice("%s: selftest OK\n", __func__);
+
+	return ret;
+}
+
+/* produced by running the minimal example `lws-crypto-jwk -t RSA -b 2048 -c` */
+
+static const char *rsa_key_2048 =
+	"{"
+		"\"e\":\"AQAB\","
+		"\"kty\":\"RSA\","
+		"\"n\":\"lBJdvUq-9_8hlcduIWuBjRb0tGzzAvS4foqoNCO7g-rOXMdeAcmq"
+		 "aSzWTbkaGIc3L1I4-Q3TOZtxn2UhuDlShZRIhM6JCQuUVNVAF3TD7oXxHtZ"
+		 "LJ7y_BqCUlrAmW31lu-nVmhY2G3xW26yXWUsDbCxz0hfLbVnXRSvVKLzYWm"
+		 "_yyrFyEWfxB8peDocvKGh879z_aPCKE3PDOEl2AsgzYfpnWCLytkgnrTeL6"
+		 "qY8HXxvvV-Jw-XMaRiwH0VldpIjs4DaoN35Kj1Ex7QOZznTkbYtMIqse8bR"
+		 "LoR8Irkxbc5ncUAuX1KSV6lpPtelsA3RtEjJ4NHV-5eEABiYh8_CFQ\","
+		"\"d\":\"DDpguQ9RVQFMoJC5z2hlkvq91kvsXPv2Y9Dcki256xYlg55H7Pre"
+		 "p__hahrABR2Jg6QVJhArt5ABjUnDQ_JL69HH6VvLD6RVVBTQ-FRBZ_3HYKY"
+		 "Oynx5BA7tJm1BRatF5FkBCvq27i8nAc4vfjAb22o9CFvEW3FLaKAgOCncQ3"
+		 "Tnbz9CddH89n7DXw4kBFI8q5ugF_aRIg5-i42W_hQinLaBhZ_zhAuE-nvlt"
+		 "ZnhDal8cX3T60lNoUrDOlirqEOXKO3gXCHpm3csZ6nabHYD1UCyHOmi2RsR"
+		 "pzjaiqjXdPbwPzQoh2DcYpavNrf1mtHiqTwLZDTJIRHWHufJzHf-sw\","
+		"\"p\":\"ySeC3FtvzduDEL-FX4JqbRN06PdBhUmosCkymmbBjriuLNpkGkG-"
+		 "1ex7r-M8neUBZbctmDdih6cpLZ8hjZv3eEDZ4b5Z2LqZnja4QvVoWLUs4Fb"
+		 "NN_PxJCR5H28uUfT6ThxqT0Nb2enb8Dyp0Qxvd7eJUeYz6jOt7pEK-ErTB4"
+		 "M\","
+		"\"q\":\"vHG2Pd6QUH7vFZjJtXwmlVnrz5tdJvUPQvz7ggeM69cqhf4vLajz"
+		 "sqP9GhJr7bEkp6vKVdZGmfEdiFRD8cssIZq651oAO5Wr7zZd2mR_hG9jZx7"
+		 "8Davfuxr4SZNN-bmoxO6dbDi-X2c7fvMI2YeJwL4groNKyiosdUYILTrYRI"
+		 "c\","
+		"\"dp\":\"h5Gqf2rcokgEQGBjuigCJDtNuskRjoxDNV6-rRL99nt_X9lcR9n"
+		 "xjOnRvowOyXeTBoN7JjCFpllBxm6ORYtNMO28KomIsimo6NmGPBJ7XfXVJe"
+		 "k6bDBrX-l4_HeJJ1FM9SHvgDYsjGQxh-rKpIqWAYBf-yOD758e5T85vndnX"
+		 "JM\","
+		"\"dq\":\"K9LiB-dfdmjenw4mMp-JtYfw8Bn4gtvQzcpZjzbETgB-8iRXwm2"
+		 "dJvk-HjcUhHWCyb-I0YeAacKKFK9MEconHDWIq87haPn4vyvMjcJ7aUgiPN"
+		 "QW1_MVl8TA4xNvudi0Z__5-jYEB9nRG0fX0gbUQU-19_-uf-9o4WkE88fQj"
+		 "bc\","
+		"\"qi\":\"LEkTRqmomn9UiASeRfAKw-Z5q7cye9CSL4luSexFvA3Du7Oin-s"
+		 "L9a7F3nJN4CuYzhtNMxQ0hM7k6ExzhDhXDlNRHxnNEDt81-CFRV98v7GVWV"
+		 "SH1KnaKf9wgegxSSm-x536ki2SI8EN4k4qkqRF0iLVHZK7CgnWMbtt6tnpp"
+		 "3k\""
+	"}";
+/* produced by running the minimal example `lws-crypto-jwk -t RSA -b 4096 -c` */
+
+static const char *rsa_key_4096 =
+	"{"
+		"\"e\":\"AQAB\","
+		"\"kty\":\"RSA\","
+		"\"n\":\"uiLBz1SUgd4eQ0okg6tlPdk9QUhTsqXmiJXygWVFgzT45E5_Rfkq"
+		 "vZ2fwAqQ8DvxkDTUWiKpeXMpPRNWG5GxuBuq9n7xdA1vn1eQi8LoekB28dg"
+		 "3MwMfozVSKCzyxG1f81xPE5x3EMVhCcx6hshhlMEHkzNNhE07d-oRO87ZC0"
+		 "z_5L3Vh03uJBXaDKVlsgHAazoHLhn6G4odqv-ro54T6Nx1eEtyTnMmFY5ND"
+		 "V4rN0SjQvSefbZZtsrtby8Z0JmeyvynmDwOINj7FpmPmpFLoWGXntc2yxPP"
+		 "8SHnqfT9ESh94fxCMxRhDNohgpegRHyiYwj3M5ZYY6reCZYfOQONSWmc8yp"
+		 "NBMJqj4LuJ2bTMGAFS17ZP4ZZWm5RP9ax100Dgk0yxP1UrybG5dCfJRQvHC"
+		 "ncxG_aL6cSQu2o4fXqlJsNHxk3FjHtV_CMZ3tqvGTvwrs4yxvKwKv6r3fRh"
+		 "KL01bGOePzp9THkHW2-lzVj6kUwnxBdHGZE6fcAnczOdp8ZIEdV1w6ThimC"
+		 "m3Bw_TIyl3tkuxRWXpc_d6Q4iiSVKGKCvUvfAlESpTA4tIhQkij-T9FEoj2"
+		 "WE2H1D35AKmjcfLCh6yszu8cmDNedn862pwnawE2RvRFAyuI113fLQeCbCz"
+		 "tQ1JHuD8cnQt0hpGzReTa5UJ8OEOGIlyXNdWZyTpk\","
+		"\"d\":\"G2ZW582AT-6xvz-IiP5fuJ9EMloygeuEeEo0aMJO3X3cfoUknJkN"
+		 "ZtyvYa5cgBSe3la8hKkyD9_5K9WvGP9VLTAbdk4g_m-k5QyXiU9PeAGJ0Nd"
+		 "-Zqq4y0Zj2eil8u7Tz0fhFxay-zvG6VGZnsIcBTD2C7_jUwyoaqJA17A_CH"
+		 "gU-ifMqS56VgMGdlKZmf7Cg7ZGzM1DoS6vZ9bbfgoczaw4OZVHlg9Cxa0NI"
+		 "CDi1S-sJcTLGN_RLISKN5H0J54ZfzF6fUEn5kNykLTZrAvj2XV7g4UUOogn"
+		 "1cvjJYRcBVzTzQKcfxbqo2DvymDGFZbQM6pj80rYJ5HFPh2EapjggPN8hXp"
+		 "NlTNDEvC84QFv0lo2E-0nVWQqcyHtXd431O1JH2h5X822zKjXxkaztQSCj9"
+		 "YP7AdAeoxIaWOa3aO1vcwURH2WWaNV-_KXVkPJNzfo9-bGYwblMw_RIqIkN"
+		 "BDayTb8rBuQHTCE_tSEHgoSnkityGpr8j_vgA-Fa-SqmdqUlbklVpwA_Mq_"
+		 "UH7RCaqe91dWxRhS_7c85tFMRFCKOcaRXkwxEpP2LD1AYe8yvVQlr0Se8_d"
+		 "RefuQcC-BECwMW-TCgR3VxAuL7ExNTYe4bhBD8WYXsHP7wDXWX2Q4v7IRzj"
+		 "cfVIdpTNYuWEd69PvXBCuy75hmDniSmS3Xps3ItGU\","
+		"\"p\":\"961BtLSIZkHO7Vu1KfaA3urcwGpISKJiTSB5Nh6npxJr9mSjzv_f"
+		 "e8VoxCX6CWGY0SEeQNUQ6ceTnAAxkSHtZJQGed598jBtxIexAWEE7oc9s9d"
+		 "b0cWu4QWIVZYXrcOTEWmK1kWN4PXmnnQknrWQF49adn81BaOXqoL-tahe7f"
+		 "faXzXe0RXuohK543ZKbuuHQ2TxqFG7CZpXiH_qn1Syao32u0V3iDFpmmCUV"
+		 "h9O2JCzfo8sAosTrnQwC0pXz3Nvr_9Cnk6bMluJoMrwB1Ywg_DPQ1WvpYHO"
+		 "URezEOqVC8Y3zrko199TMX2COKGNFgutVpnzxs2_h0PyINUmwrY4zQ\","
+		"\"q\":\"wGQRaxy_gBafbrVJy4f32O0a2FQHzmS--WgHhoteDoF6ZAajLcV0"
+		 "GEvb-AVmFER1Wii62BFaFJOYQIegELvnBFFzD6oHJRX7bM4m36G8J_TC1o9"
+		 "T1IFnxOpaoFDf4JWf2k7DCXClGg_zueyOD8fj8F6j2nqpOfytuLmikHcWMc"
+		 "dGTHTCRtQmvOk3pm0uk2qR0cQb5L3Ocv45tCKr55tMc6Zx3DKkMt1kmUwd2"
+		 "HFfk_0WM6R7q4LNGIjwl8dwiERppLKA8xao9i3jOOdFEfAD-Zqv8H-32cyH"
+		 "Mg6Guo4tPNAYSzcsz8nbEYPtKVVm-PDuM2cx0iaKnS8BIK2XTbzc_Q\","
+		"\"dp\":\"ZXLWIwp_hEMYWyjhP9r0VlqlKTtfeEDrOuQ-Qei0iz6EclwurK8"
+		 "p_yyRCSb1D7qmOaLzHWMollllINUDeIsJDdWEAY8cz4L-sy1RV1tCBeHnaC"
+		 "6iMX5jb1Aw072y3T3qk4tDjxjWUHroh6bTCR8dckkJqNfaBAFKMlGNuyLIH"
+		 "3kSPUV3ivUM1d4NvhnJyz02HmjOgz9W-Uv65rJei_zJR9P2aCbAG00CEHXW"
+		 "zJ_uT86VdxV11WTaHu8Abt94sER8Tv6jbuyLrUjJSs9VGew32xNcEhya4ZQ"
+		 "VyimG8zri6fu7CDXXgPS8wtzB5ihl_c2ypnJQ4_GKrgEqwEAOrFqvUQ\","
+		"\"dq\":\"uzlmngcm8R6S3qi7fL7_2fG7uyPjSN5P3uR21l8QFCu6kFbJO8S"
+		 "4muBP20hds4F_dlLGqXgRYo7TjpCtmztQsKoWv_ql41hGCfeAawa41WViqm"
+		 "xmlxmrgzzRHsw1YhgZrNgTAz_E290EQT3Mbd0HnCZtbDMMNisIYAj_A3lwd"
+		 "tbHOaYyXb0dSZ_nkSUVO05tQ2aGAo8Xtl5ih0NqaQR_XNhwW2pI0lsTB__D"
+		 "15tU-O5FSdJaq2ip8KNrBzmF8IYrDKTNykKWAKRdSEX_uFoLdD8t0mxn3SM"
+		 "luffa8vdjXJfh3GiASmHUt3HcPOooQEAufoWBPVJWeGqCvWtRH8yYfQ\","
+		"\"qi\":\"h-e9es5J49OUF48gSXUI8cynZ8ydv5cThXc1deV3mil_7_7Hg8E"
+		 "jV3gAErO4l-irHJplFmHFZvU1ud4zs1gtBt5TA-EeeepYOHMSssWDvDK3WI"
+		 "zsM6C3vcNTSkT-ihaSFmPWHCVwJ1R3auWfeI2In3at0jd4t-OK-cCcGZXb7"
+		 "90-EnyyDcdFTU9WfwVSOJffRGjoUYX8DexavClv7CBzPhpdUzGoeyarNaG4"
+		 "z9MI8Q8txHyHgc_D70lZUum1cj0bZwgEj6yDzOPzSgUmICFJiLDDj93oPaI"
+		 "v-5CQ_Ckju7icexc_kuuYTKBOLTj_vfaURnV3KCHul2UljUYOxkfeNQ\""
+	"}";
+
+static const char *rsa_key_4096_no_optional =
+	"{"
+		"\"e\":\"AQAB\","
+		"\"kty\":\"RSA\","
+		"\"n\":\"uiLBz1SUgd4eQ0okg6tlPdk9QUhTsqXmiJXygWVFgzT45E5_Rfkq"
+		 "vZ2fwAqQ8DvxkDTUWiKpeXMpPRNWG5GxuBuq9n7xdA1vn1eQi8LoekB28dg"
+		 "3MwMfozVSKCzyxG1f81xPE5x3EMVhCcx6hshhlMEHkzNNhE07d-oRO87ZC0"
+		 "z_5L3Vh03uJBXaDKVlsgHAazoHLhn6G4odqv-ro54T6Nx1eEtyTnMmFY5ND"
+		 "V4rN0SjQvSefbZZtsrtby8Z0JmeyvynmDwOINj7FpmPmpFLoWGXntc2yxPP"
+		 "8SHnqfT9ESh94fxCMxRhDNohgpegRHyiYwj3M5ZYY6reCZYfOQONSWmc8yp"
+		 "NBMJqj4LuJ2bTMGAFS17ZP4ZZWm5RP9ax100Dgk0yxP1UrybG5dCfJRQvHC"
+		 "ncxG_aL6cSQu2o4fXqlJsNHxk3FjHtV_CMZ3tqvGTvwrs4yxvKwKv6r3fRh"
+		 "KL01bGOePzp9THkHW2-lzVj6kUwnxBdHGZE6fcAnczOdp8ZIEdV1w6ThimC"
+		 "m3Bw_TIyl3tkuxRWXpc_d6Q4iiSVKGKCvUvfAlESpTA4tIhQkij-T9FEoj2"
+		 "WE2H1D35AKmjcfLCh6yszu8cmDNedn862pwnawE2RvRFAyuI113fLQeCbCz"
+		 "tQ1JHuD8cnQt0hpGzReTa5UJ8OEOGIlyXNdWZyTpk\","
+		"\"d\":\"G2ZW582AT-6xvz-IiP5fuJ9EMloygeuEeEo0aMJO3X3cfoUknJkN"
+		 "ZtyvYa5cgBSe3la8hKkyD9_5K9WvGP9VLTAbdk4g_m-k5QyXiU9PeAGJ0Nd"
+		 "-Zqq4y0Zj2eil8u7Tz0fhFxay-zvG6VGZnsIcBTD2C7_jUwyoaqJA17A_CH"
+		 "gU-ifMqS56VgMGdlKZmf7Cg7ZGzM1DoS6vZ9bbfgoczaw4OZVHlg9Cxa0NI"
+		 "CDi1S-sJcTLGN_RLISKN5H0J54ZfzF6fUEn5kNykLTZrAvj2XV7g4UUOogn"
+		 "1cvjJYRcBVzTzQKcfxbqo2DvymDGFZbQM6pj80rYJ5HFPh2EapjggPN8hXp"
+		 "NlTNDEvC84QFv0lo2E-0nVWQqcyHtXd431O1JH2h5X822zKjXxkaztQSCj9"
+		 "YP7AdAeoxIaWOa3aO1vcwURH2WWaNV-_KXVkPJNzfo9-bGYwblMw_RIqIkN"
+		 "BDayTb8rBuQHTCE_tSEHgoSnkityGpr8j_vgA-Fa-SqmdqUlbklVpwA_Mq_"
+		 "UH7RCaqe91dWxRhS_7c85tFMRFCKOcaRXkwxEpP2LD1AYe8yvVQlr0Se8_d"
+		 "RefuQcC-BECwMW-TCgR3VxAuL7ExNTYe4bhBD8WYXsHP7wDXWX2Q4v7IRzj"
+		 "cfVIdpTNYuWEd69PvXBCuy75hmDniSmS3Xps3ItGU\","
+		"\"p\":\"961BtLSIZkHO7Vu1KfaA3urcwGpISKJiTSB5Nh6npxJr9mSjzv_f"
+		 "e8VoxCX6CWGY0SEeQNUQ6ceTnAAxkSHtZJQGed598jBtxIexAWEE7oc9s9d"
+		 "b0cWu4QWIVZYXrcOTEWmK1kWN4PXmnnQknrWQF49adn81BaOXqoL-tahe7f"
+		 "faXzXe0RXuohK543ZKbuuHQ2TxqFG7CZpXiH_qn1Syao32u0V3iDFpmmCUV"
+		 "h9O2JCzfo8sAosTrnQwC0pXz3Nvr_9Cnk6bMluJoMrwB1Ywg_DPQ1WvpYHO"
+		 "URezEOqVC8Y3zrko199TMX2COKGNFgutVpnzxs2_h0PyINUmwrY4zQ\","
+		"\"q\":\"wGQRaxy_gBafbrVJy4f32O0a2FQHzmS--WgHhoteDoF6ZAajLcV0"
+		 "GEvb-AVmFER1Wii62BFaFJOYQIegELvnBFFzD6oHJRX7bM4m36G8J_TC1o9"
+		 "T1IFnxOpaoFDf4JWf2k7DCXClGg_zueyOD8fj8F6j2nqpOfytuLmikHcWMc"
+		 "dGTHTCRtQmvOk3pm0uk2qR0cQb5L3Ocv45tCKr55tMc6Zx3DKkMt1kmUwd2"
+		 "HFfk_0WM6R7q4LNGIjwl8dwiERppLKA8xao9i3jOOdFEfAD-Zqv8H-32cyH"
+		 "Mg6Guo4tPNAYSzcsz8nbEYPtKVVm-PDuM2cx0iaKnS8BIK2XTbzc_Q\""
+	"}";
+
+/* This is a compact JWE containing the plaintext ra_ptext_1024 for the key
+ * lws_jwe_ex_a2_jwk_json... produced by  test test above running on OpenSSL.
+ */
+
+static char *jwe_compact_rsa_cbc_openssl =
+	"eyAiYWxnIjoiUlNBMV81IiwiZW5jIjoiQTEyOENCQy1IUzI1NiJ9"
+	"."
+	"mWXwMv4hxwgKbUAyMFAuHxiKjg62Z5owkFYLgxho5FNT3Hm5ZGiF8plS5W3NwUTmv8t6C"
+	"I0kV5cOOJXE_PXPaOptsie2aoQR-_Bs6gAFixa7aZNsnsMF4lMAiIy7VkrvP2qh0s04y2"
+	"2poOLfmS93tB9AyWdlnQ6Z-U1wzrM9kncqO9GpPol9M4WnAss1ZtTE-9Tbc7dMHURHbZb"
+	"vHn2h625pBD8oD_s0osRav8YEw7jNeQjW_ch4pI6HRox-hf0dyLtk9yFCtBjxbCvysadW"
+	"SlZPJBj0HYv0BVqCK0fETi7URx4MCJ3zgCJnpAuQo2yq1yQzXwOYcFoLIvY0jIm44A"
+	"."
+	"WINMABhU_GQKJarmmTP_-g"
+	"."
+	"V9kHAh9ajE558EPj_zX6p_C903MevMPJLcMU4MWhfhwe1cFW_0io-LvZfcF_Xj7aNoIZd"
+	"vPXJ0On_jHPFsnwe4dus6kuh8RrSKFFV0sGIv-FFXrKB99FFRY_8BTPsYFrcqt_8EV2Af"
+	"p7toaVOO15WXOEH6Ym81a3aOWCVGdj_akMN46Qx_JrQaql-Xs_fL2HdpaEWHHTV2ac9aY"
+	"ah7o0Ojl9UnzkHyXieRgrjXymvCcT0te3D4OQJhrv7TzH_hfKu621O-Frmkr-NvQGSNcl"
+	"fVgRkte2ks34j5HPqEbJQWWKG3IDfkPRvWmDZzEXW_JTrK_1r1FM-aYtY79tLnir8Zw7I"
+	"WCczD-XmtlOJNYA2Ss5dbjoJDtevbqaZWVl-sDSwO1xdf-DUfiemep7S7IFoFAdl0vXLT"
+	"YtuNBxuFw-cP2Kwi8RyF__uENo4vD003cI4htqSYIYXeyAVqWIkmsP1BFpT7MGixfvhAu"
+	"VCj_ToJmowGY3bOHiMuzyT9M7wtCCiCySEBARVU-EdQBXj8X-quSj-0OnBtxXChUS4QXw"
+	"q2pNn3UKSMsxqvHR25HQq_6U2AbvNHxKhup3luzn0T27uy0l3XeWSz_48SwJZKRnbYPtC"
+	"n5Jd5mRdr5GxihpNwupaO4BWnHZo_fHUTI9-Z18lpj_4QB-c3dzDL15xFN4HEZ5lv2iO5"
+	"zMiRI_NlVVDdA9lqGpn4IyO44osHQieBraUjWF8X5cSXDoqktXDVymAdrxe0fYZQca6Bq"
+	"CsBqFTYae4CG01SpG46ysfwAXmsTEKPzj7uiOguFCRB4hClTd-Q8R2axj9JNT1jU_Vb7U"
+	"GKFBGeDJt5PDXJyvW5rHyiQDewykf0Lpvdp39yITT8qARmJl2SwCrDCPADZ4TwwobT42B"
+	"J_Cq5IKgEOeuS3S7NOdOfXxmAcNfN0yujKbmfiOxnXhwnepQ-TnpgTV0nv8snBRITN7mS"
+	"EgflqQlKAZus_0mDbHmBmw1nY-0q4qMWI03IEwMC57-p4JLshnWgIAupnFCGp9nyi4E_s"
+	"GVyQlGCxzC5VSH1Hba3rvbulQGxx_kGk0j56NGhGsQEzqvSuI4xgIsGMPo1Ii7xUh68dd"
+	"BzJRzaov9oDTgnWM5-hoEQQoazW7hDKAFPYccC6zqX0fnI7vBIIBZsjUsol6-5bdujpb4"
+	"l3LRGCjULXlSPbnNGzyk5R-mIwQC8aM9wcIiZZdcdHdr4meMNr3HmpG_B5xtBmENAJAvU"
+	"K3DO6pro2xhypuNKYtOAdH0Xyl8QBPIJ0EFVH6_1V-H_gHs2MLMIqGfUmFCuRev60APcw"
+	"Pbf-GZxLeXLutPq2DOl1HD0XLNtYL1dB1aw2j4L8OJREOC_N-KpIH3g"
+	"."
+	"n4QRlTzW2urRnNiJlwQkZw"
+;
+
+
+static int
+test_jwe_r256a128_jwe_openssl(struct lws_context *context)
+{
+	struct lws_jose jose;
+	struct lws_jws jws;
+	struct lws_jwk jwk;
+	char temp[2048];
+	int n, ret = -1, temp_len = sizeof(temp);
+
+	lws_jose_init(&jose);
+	lws_jws_init(&jws, &jwk, context);
+
+	if (lws_jwk_import(&jwk, NULL, NULL, (char *)lws_jwe_ex_a2_jwk_json,
+			   strlen((char *)lws_jwe_ex_a2_jwk_json)) < 0) {
+		lwsl_notice("%s: Failed to decode JWK test key\n", __func__);
 		goto bail;
 	}
-#if 0
-	if (memcmp(enc_cek, lws_jwe_ex_a2_jwk_enc_key, sizeof(enc_cek))) {
-		lwsl_err("%s: encrypt cek wrong output\n", __func__);
-		lwsl_hexdump_notice(enc_cek, sizeof(enc_cek));
-		lwsl_hexdump_notice(lws_jwe_ex_a2_jwk_enc_key,
-				    sizeof(lws_jwe_ex_a2_jwk_enc_key));
+
+	/* converts a compact serialization to jws b64 + decoded maps */
+	if (lws_jws_compact_decode((const char *)jwe_compact_rsa_cbc_openssl,
+				   strlen((char *)jwe_compact_rsa_cbc_openssl),
+				   &jws.map, &jws.map_b64,
+				   temp, &temp_len) != 5) {
+		lwsl_err("%s: lws_jws_compact_decode failed\n", __func__);
 		goto bail;
 	}
 
+	n = lws_jwe_auth_and_decrypt(&jose, &jws);
+	lws_jwk_destroy(&jwk);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_auth_and_decrypt failed\n",
+			 __func__);
+		goto bail;
+	}
+
+	/* allowing for trailing padding, confirm the plaintext */
+	if (jws.map.len[LJWE_CTXT] < sizeof(ra_ptext_1024) ||
+	    lws_timingsafe_bcmp(jws.map.buf[LJWE_CTXT], ra_ptext_1024,
+			        sizeof(ra_ptext_1024))) {
+		lwsl_err("%s: plaintext RSA/AES decrypt wrong\n", __func__);
+		lwsl_hexdump_notice(ra_ptext_1024, sizeof(ra_ptext_1024));
+		lwsl_hexdump_notice(jws.map.buf[LJWE_CTXT],
+				    jws.map.len[LJWE_CTXT]);
+		goto bail;
+	}
+
+	ret = 0;
+
+bail:
+	lws_jws_destroy(&jws);
+	lws_jose_destroy(&jose);
+	if (ret)
+		lwsl_err("%s: selftest failed +++++++++++++++++++\n", __func__);
+	else
+		lwsl_notice("%s: selftest OK\n", __func__);
+
+	return ret;
+}
+
+
+/* This is a compact JWE containing the plaintext ra_ptext_1024 for the key
+ * lws_jwe_ex_a2_jwk_json... produced by  test test above running on mbedTLS.
+ */
+
+static char
+*jwe_compact_rsa_cbc_mbedtls =
+	"eyAiYWxnIjoiUlNBMV81IiwiZW5jIjoiQTEyOENCQy1IUzI1NiJ9.oBqKJ06UJs2oryPLWZKyI8743GC0geUt_xaKLMaPtApp__swG2w0IhNtmkIBKA9LeeGyiCWKpGGzOlQUR5YSxrT99PnincHXw_pkCprOvi4j3oxThJ2pFRx-CBc9ZgPJ3Kje1QifOueT3vQt_65iiyXmqyc5PDxzuV0L_KtrA_jEsm2m1JVBMOX--qzXjYyqx_dc87d43TXY_4kuTmAtqVpQe7ixKJlUViPVSzuASyeLEUTIaNlALuEWial1wP-ICF37OQzOcZRH3OVZObrcZi1aWkDOLxF4qO4I_GtpuAgZT732a7gnobR-T2oyBpimcqCVEk88Wa7cYyBXZvAOUA.fNLEFh1mjdlyc3WKw0I2Kg.e8X-11K9yXK0KkK-8ikplEWFViruqduaKPDOA7x6lKpBk8l3RFX1aqC4s0WVc1eN0qd-fB__EoO_AIG1xsfw1ie2IDWV0p18ZaRkQRN9Th5UU-W9C9XyPFQUxcl7ShKRE-yKJU-VdZDk6L2-07FH3s-voVKx0oqLIYqkkXp9a2jvnzrZ0Psujs4PSCHOZEgcS8PNdMmdsjDHLsb0NDMifOSlXk2Mp6V2SizXRIPJtOkVJGKwuBc7FbdO02GnzzVXldiLC7GI0zoRsnSJndF8yc3pMrMQhoVRktkBClAcIujD_OxJwHG-i3OJqUg1uVfci86RoQrnULoygvB7apX_WMxF7eXXJdXbG8sPLLCf0SW4sgvuSclOHL2UXzGi6Tp_l1XjxFQTzVEfUaj7i0gD2wM74Ru79RX8yO0m-5qOOwkySU1lEXqbLTuxjJXD9WLcTQQmF0Nm5myTUyNOl7xKpeDpnNt5A0L8o6SW6iJ3DwZEzhMxk3JWQOYtQP1J2sgwAKEDM6SkGzTy9QXpCEoraKp2UEzunux9S6-roYpzgEFT2RZrq3Hg_JyequTtrcNaoiEKd5szJvE6pUc25WEjDzgg79v_n40gQm688mO62kiVBThVmc88u2JVlNpzVQFUfKt-bu2Xxiqn5lRfEMK93EEPZRd8n12vBq5aJKvvEpPN1AC4HaMepf78Ob0GNTYGR-70zSS0ErecCeIgUJ1CttE2Nn0qEOfbQcO48SjeIltecl9DRzeLT3tPN3Z4BqbzSX8kKU5LStUX5YC-obM_0Ss7swXJM19I1O-QH8VbHZl-9TADR6BLzmrsJQ9_BL_uTB6uPdLhYfqWw6VUf0eMLaqvsY92vV5-JVQqyv7s70FNLT1-8P94k79ZGiLvNdDNZgGsmRQOwA2Vk6snHI0oUYGj7NeEK4O64ZfNRZJgPfWnxtQ-LIhSYCJvxFGL7ZMoA_ijKl9_v_bRqd03_7o8YQisw2luDYqLa87Dh9u9tacOoraGAzcEBIAh-BOcnIrQEt5KoSbly5xNAkfqj7QDvL0vPHArZ5E3Gb_k3VbKjsqCzvisNMEjm887Z-Dc6tW4Y2OceYf-rfUDvJ3EXZ66CWSQ7yKhPVcP1RRtNUFEqLoIAkA4aEAAS2ZPKVHIJQwyMzbbNFAuvY_7piNYprAI5lySFcA1cz_hKl6s9xmqbAkH2XGZZduw5Nv-aY_LMXujjhmblqE2Ocej91xTdgMe74Ftr1b3y9FvPPVSqNjpTSfujCi5L57LOpjT78do8eSrDz6coG0zeRUybjWeTszoiYbif_NlyAcMScO5OMZHNkre6L8u-AVeYSKTGsdpK7em_iLN8cGSEjZABNAr_A9Lfg.6Qb_Qf-ktX0DRHWUHAJxDQ"
+;
+
+static int
+test_jwe_r256a128_jwe_mbedtls(struct lws_context *context)
+{
+	struct lws_jose jose;
+	struct lws_jws jws;
+	struct lws_jwk jwk;
+	char temp[2048];
+	int n, ret = -1, temp_len = sizeof(temp);
 
-	enc_ptr = p + 1; /* + 1 skips the . */
-	n = lws_jws_encode_section(test2, strlen(test2), 0, &p, end);
-	if (n < 0)
+	lws_jose_init(&jose);
+	lws_jws_init(&jws, &jwk, context);
+
+	if (lws_jwk_import(&jwk, NULL, NULL, (char *)lws_jwe_ex_a2_jwk_json,
+			   strlen((char *)lws_jwe_ex_a2_jwk_json)) < 0) {
+		lwsl_notice("%s: Failed to decode JWK test key\n", __func__);
 		goto bail;
-	if (strcmp(enc_ptr, test2_enc))
+	}
+
+	/* converts a compact serialization to jws b64 + decoded maps */
+	if (lws_jws_compact_decode((const char *)jwe_compact_rsa_cbc_mbedtls,
+				   strlen((char *)jwe_compact_rsa_cbc_mbedtls),
+				   &jws.map, &jws.map_b64, temp, &temp_len) != 5) {
+		lwsl_err("%s: lws_jws_compact_decode failed\n", __func__);
 		goto bail;
+	}
 
-	/* 1.3: use HMAC SHA-256 with known key on the hdr . payload */
+	n = lws_jwe_auth_and_decrypt(&jose, &jws);
+	lws_jwk_destroy(&jwk);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_auth_and_decrypt failed\n",
+			 __func__);
+		goto bail;
+	}
 
-	if (lws_genhmac_init(&ctx, LWS_GENHMAC_TYPE_SHA256,
-			     jwk.el.e[LWS_GENCRYPTO_RSA_KEYEL_E].buf,
-			     jwk.el.e[LWS_GENCRYPTO_RSA_KEYEL_E].len))
+	/* allowing for trailing padding, confirm the plaintext */
+	if (jws.map.len[LJWE_CTXT] < sizeof(ra_ptext_1024) ||
+	    lws_timingsafe_bcmp(jws.map.buf[LJWE_CTXT], ra_ptext_1024,
+			        sizeof(ra_ptext_1024))) {
+		lwsl_err("%s: plaintext RSA/AES decrypt wrong\n", __func__);
+		lwsl_hexdump_notice(ra_ptext_1024, sizeof(ra_ptext_1024));
+		lwsl_hexdump_notice(jws.map.buf[LJWE_CTXT],
+				    jws.map.len[LJWE_CTXT]);
 		goto bail;
-	if (lws_genhmac_update(&ctx, (uint8_t *)buf, p - buf))
-		goto bail_destroy_hmac;
-	lws_genhmac_destroy(&ctx, digest);
+	}
+
+	ret = 0;
 
-	/* 1.4: append a base64 encode of the computed HMAC digest */
+bail:
+	lws_jws_destroy(&jws);
+	lws_jose_destroy(&jose);
+	if (ret)
+		lwsl_err("%s: selftest failed +++++++++++++++++++\n", __func__);
+	else
+		lwsl_notice("%s: selftest OK\n", __func__);
+
+	return ret;
+}
+
+
+
+/* A.3.  Example JWE Using AES Key Wrap and AES_128_CBC_HMAC_SHA_256
+ *
+ * This example encrypts the plaintext "Live long and prosper." to the
+ * recipient using AES Key Wrap for key encryption and
+ * AES_128_CBC_HMAC_SHA_256 for content encryption.
+ */
+
+/* "Live long and prosper." */
+static uint8_t
+
+ex_a3_ptext[] = {
+	76, 105, 118, 101, 32, 108, 111, 110,
+	103, 32, 97, 110, 100, 32,  112, 114,
+	111, 115, 112, 101, 114, 46
+},
+
+*ex_a3_compact = (uint8_t *)
+	"eyJhbGciOiJBMTI4S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0"
+	"."
+	"6KB707dM9YTIgHtLvtgWQ8mKwboJW3of9locizkDTHzBC2IlrT1oOQ"
+	"."
+	"AxY8DCtDaGlsbGljb3RoZQ"
+	"."
+	"KDlTtXchhZTGufMYmOYGS4HffxPSUrfmqCHXaI9wOGY"
+	"."
+	"U0m_YmjN04DJvceFICbCVQ",
 
-	enc_ptr = p + 1; /* + 1 skips the . */
-	n = lws_jws_encode_section((const char *)digest, 32, 0, &p, end);
-	if (n < 0)
+*ex_a3_key = (uint8_t *)
+	"{\"kty\":\"oct\","
+	   "\"k\":\"GawgguFyGrWKav7AX4VKUg\""
+	"}"
+;
+
+static int
+test_jwe_a3(struct lws_context *context)
+{
+	struct lws_jose jose;
+	struct lws_jws jws;
+	struct lws_jwk jwk;
+	char temp[2048];
+	int n, ret = -1, temp_len = sizeof(temp);
+
+	lws_jose_init(&jose);
+	lws_jws_init(&jws, &jwk, context);
+
+	if (lws_jwk_import(&jwk, NULL, NULL, (char *)ex_a3_key,
+			   strlen((char *)ex_a3_key)) < 0) {
+		lwsl_notice("%s: Failed to decode JWK test key\n", __func__);
 		goto bail;
-	if (strcmp(enc_ptr, hash_enc)) /* check against known B64URL hash */
+	}
+
+	/* converts a compact serialization to jws b64 + decoded maps */
+	if (lws_jws_compact_decode((const char *)ex_a3_compact,
+				   strlen((char *)ex_a3_compact),
+				   &jws.map, &jws.map_b64, temp, &temp_len)  != 5) {
+		lwsl_err("%s: lws_jws_compact_decode failed\n", __func__);
 		goto bail;
+	}
 
-	/* 1.5: Check we can agree the signature matches the payload */
+	n = lws_jwe_auth_and_decrypt(&jose, &jws);
+	lws_jwk_destroy(&jwk);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_auth_and_decrypt failed\n",
+			 __func__);
+		goto bail;
+	}
 
-	if (lws_jws_confirm_sig(buf, p - buf, &jwk) < 0) {
-		lwsl_notice("confirm sig failed\n");
+	/* allowing for trailing padding, confirm the plaintext */
+	if (jws.map.len[LJWE_CTXT] < sizeof(ex_a3_ptext) ||
+	    lws_timingsafe_bcmp(jws.map.buf[LJWE_CTXT], ex_a3_ptext,
+			        sizeof(ex_a3_ptext))) {
+		lwsl_err("%s: plaintext AES decrypt wrong\n", __func__);
+		lwsl_hexdump_notice(ex_a3_ptext, sizeof(ex_a3_ptext));
+		lwsl_hexdump_notice(jws.map.buf[LJWE_CTXT],
+				    jws.map.len[LJWE_CTXT]);
 		goto bail;
 	}
 
-	lws_jwk_destroy(&jwk); /* finished with the key from the first test */
+	ret = 0;
 
-	/* Test 2: RSA256 on RFC7515 worked example */
+bail:
+	lws_jws_destroy(&jws);
+	lws_jose_destroy(&jose);
+	if (ret)
+		lwsl_err("%s: selftest failed +++++++++++++++++++\n", __func__);
+	else
+		lwsl_notice("%s: selftest OK\n", __func__);
 
-	/* 2.1: turn the known JWK key for the RSA test into a lws_jwk */
+	return ret;
+}
 
-	if (lws_jwk_import(&jwk, rfc7515_rsa_key, strlen(rfc7515_rsa_key))) {
-		lwsl_notice("Failed to read JWK key\n");
-		goto bail2;
+/* JWA B.2.  Test Cases for AES_192_CBC_HMAC_SHA_384
+ *
+ * Unfortunately JWA just gives this test case as hex literals, not
+ * inside a JWE.  So we have to prepare the inputs "by hand".
+ */
+
+static uint8_t
+
+jwa_b2_ptext[] = {
+	0x41, 0x20, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72,
+	0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20,
+	0x6d, 0x75, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74,
+	0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75,
+	0x69, 0x72, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20,
+	0x62, 0x65, 0x20, 0x73, 0x65, 0x63, 0x72, 0x65,
+	0x74, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x69,
+	0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62,
+	0x65, 0x20, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74,
+	0x6f, 0x20, 0x66, 0x61, 0x6c, 0x6c, 0x20, 0x69,
+	0x6e, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20,
+	0x68, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x6f, 0x66,
+	0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x65,
+	0x6d, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f,
+	0x75, 0x74, 0x20, 0x69, 0x6e, 0x63, 0x6f, 0x6e,
+	0x76, 0x65, 0x6e, 0x69, 0x65, 0x6e, 0x63, 0x65
+},
+
+jwa_b2_rawkey[] = {
+	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+	0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+	0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+	0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+	0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+	0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+},
+
+jwa_b2_iv[] = {
+	0x1a, 0xf3, 0x8c, 0x2d, 0xc2, 0xb9, 0x6f, 0xfd,
+	0xd8, 0x66, 0x94, 0x09, 0x23, 0x41, 0xbc, 0x04
+},
+
+jwa_b2_e[] = {
+	0xea, 0x65, 0xda, 0x6b, 0x59, 0xe6, 0x1e, 0xdb,
+	0x41, 0x9b, 0xe6, 0x2d, 0x19, 0x71, 0x2a, 0xe5,
+	0xd3, 0x03, 0xee, 0xb5, 0x00, 0x52, 0xd0, 0xdf,
+	0xd6, 0x69, 0x7f, 0x77, 0x22, 0x4c, 0x8e, 0xdb,
+	0x00, 0x0d, 0x27, 0x9b, 0xdc, 0x14, 0xc1, 0x07,
+	0x26, 0x54, 0xbd, 0x30, 0x94, 0x42, 0x30, 0xc6,
+	0x57, 0xbe, 0xd4, 0xca, 0x0c, 0x9f, 0x4a, 0x84,
+	0x66, 0xf2, 0x2b, 0x22, 0x6d, 0x17, 0x46, 0x21,
+	0x4b, 0xf8, 0xcf, 0xc2, 0x40, 0x0a, 0xdd, 0x9f,
+	0x51, 0x26, 0xe4, 0x79, 0x66, 0x3f, 0xc9, 0x0b,
+	0x3b, 0xed, 0x78, 0x7a, 0x2f, 0x0f, 0xfc, 0xbf,
+	0x39, 0x04, 0xbe, 0x2a, 0x64, 0x1d, 0x5c, 0x21,
+	0x05, 0xbf, 0xe5, 0x91, 0xba, 0xe2, 0x3b, 0x1d,
+	0x74, 0x49, 0xe5, 0x32, 0xee, 0xf6, 0x0a, 0x9a,
+	0xc8, 0xbb, 0x6c, 0x6b, 0x01, 0xd3, 0x5d, 0x49,
+	0x78, 0x7b, 0xcd, 0x57, 0xef, 0x48, 0x49, 0x27,
+	0xf2, 0x80, 0xad, 0xc9, 0x1a, 0xc0, 0xc4, 0xe7,
+	0x9c, 0x7b, 0x11, 0xef, 0xc6, 0x00, 0x54, 0xe3
+},
+
+jwa_b2_a[] = { /* "The second principle of Auguste Kerckhoffs" */
+	0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6f,
+	0x6e, 0x64, 0x20, 0x70, 0x72, 0x69, 0x6e, 0x63,
+	0x69, 0x70, 0x6c, 0x65, 0x20, 0x6f, 0x66, 0x20,
+	0x41, 0x75, 0x67, 0x75, 0x73, 0x74, 0x65, 0x20,
+	0x4b, 0x65, 0x72, 0x63, 0x6b, 0x68, 0x6f, 0x66,
+	0x66, 0x73
+},
+
+jwa_b2_tag[] = {
+	0x84, 0x90, 0xac, 0x0e, 0x58, 0x94, 0x9b, 0xfe,
+	0x51, 0x87, 0x5d, 0x73, 0x3f, 0x93, 0xac, 0x20,
+	0x75, 0x16, 0x80, 0x39, 0xcc, 0xc7, 0x33, 0xd7
+
+}
+;
+
+static int
+test_jwa_b2(struct lws_context *context)
+{
+	struct lws_jose jose;
+	struct lws_jws jws;
+	struct lws_jwk jwk;
+	int n, ret = -1;
+	char buf[2048];
+
+	lws_jose_init(&jose);
+	lws_jws_init(&jws, &jwk, context);
+
+	/*
+	 * normally all this is interpreted from the JWE blob.  But we don't
+	 * have JWE test vectors for AES_256_CBC_HMAC_SHA_512, just a standalone
+	 * one.  So we have to create it all by hand.
+	 *
+	 * See test_jwe_a3 above for a more normal usage pattern.
+	 */
+
+	memset(&jwk, 0, sizeof(jwk));
+	jwk.kty = LWS_GENCRYPTO_KTY_OCT;
+	jwk.e[LWS_GENCRYPTO_OCT_KEYEL_K].buf = (uint8_t *)jwa_b2_rawkey;
+	jwk.e[LWS_GENCRYPTO_OCT_KEYEL_K].len = sizeof(jwa_b2_rawkey);
+
+	memcpy(buf, jwa_b2_e, sizeof(jwa_b2_e));
+
+	jws.map.buf[LJWE_IV] = (char *)jwa_b2_iv;
+	jws.map.len[LJWE_IV] = sizeof(jwa_b2_iv);
+
+	jws.map.buf[LJWE_CTXT] = buf;
+	jws.map.len[LJWE_CTXT] = sizeof(jwa_b2_e);
+
+	jws.map.buf[LJWE_ATAG] = (char *)jwa_b2_tag;
+	jws.map.len[LJWE_ATAG] = sizeof(jwa_b2_tag);
+
+	/*
+	 * Normally this comes from the JOSE header.  But this test vector
+	 * doesn't have one... so...
+	 */
+
+	if (lws_gencrypto_jwe_alg_to_definition("A128KW", &jose.alg))
+		goto bail;
+	if (lws_gencrypto_jwe_enc_to_definition("A192CBC-HS384", &jose.enc_alg))
+		goto bail;
+
+	n = lws_jwe_auth_and_decrypt_cbc_hs(&jose, &jws, jwa_b2_rawkey,
+						    jwa_b2_a, sizeof(jwa_b2_a));
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_a_cbc_hs_decrypt failed\n", __func__);
+
+		goto bail;
 	}
 
-	/* 2.2: check the signature on the test packet from RFC7515 A-1 */
+	/* allowing for trailing padding, confirm the plaintext */
+	if (jws.map.len[LJWE_CTXT] < sizeof(jwa_b2_ptext) ||
+	    lws_timingsafe_bcmp(jws.map.buf[LJWE_CTXT],jwa_b2_ptext,
+			        sizeof(jwa_b2_ptext))) {
+		lwsl_err("%s: plaintext AES decrypt wrong\n", __func__);
+		lwsl_hexdump_notice(jwa_b2_ptext, sizeof(jwa_b2_ptext));
+		lwsl_hexdump_notice(jws.map.buf[LJWE_CTXT],
+				    jws.map.len[LJWE_CTXT]);
+		goto bail;
+	}
+
+	ret = 0;
+
+bail:
+	lws_jws_destroy(&jws);
+	lws_jose_destroy(&jose);
+	if (ret)
+		lwsl_err("%s: selftest failed +++++++++++++++++++\n", __func__);
+	else
+		lwsl_notice("%s: selftest OK\n", __func__);
+
+	return ret;
+}
+
+
+
+/* JWA B.3.  Test Cases for AES_256_CBC_HMAC_SHA_512
+ *
+ * Unfortunately JWA just gives this test case as hex literals, not
+ * inside a JWE.  So we have to prepare the inputs "by hand".
+ */
+
+static uint8_t
+
+jwa_b3_ptext[] = {
+	0x41, 0x20, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72,
+	0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20,
+	0x6d, 0x75, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74,
+	0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75,
+	0x69, 0x72, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20,
+	0x62, 0x65, 0x20, 0x73, 0x65, 0x63, 0x72, 0x65,
+	0x74, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x69,
+	0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62,
+	0x65, 0x20, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74,
+	0x6f, 0x20, 0x66, 0x61, 0x6c, 0x6c, 0x20, 0x69,
+	0x6e, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20,
+	0x68, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x6f, 0x66,
+	0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x65,
+	0x6d, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f,
+	0x75, 0x74, 0x20, 0x69, 0x6e, 0x63, 0x6f, 0x6e,
+	0x76, 0x65, 0x6e, 0x69, 0x65, 0x6e, 0x63, 0x65
+},
+
+
+jwa_b3_rawkey[] = {
+	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+	0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+	0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+	0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+	0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+	0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+	0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+	0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f
+},
+
+jwa_b3_iv[] = {
+	0x1a, 0xf3, 0x8c, 0x2d, 0xc2, 0xb9, 0x6f, 0xfd,
+	0xd8, 0x66, 0x94, 0x09, 0x23, 0x41, 0xbc, 0x04
+},
+
+jwa_b3_e[] = {
+	0x4a, 0xff, 0xaa, 0xad, 0xb7, 0x8c, 0x31, 0xc5,
+	0xda, 0x4b, 0x1b, 0x59, 0x0d, 0x10, 0xff, 0xbd,
+	0x3d, 0xd8, 0xd5, 0xd3, 0x02, 0x42, 0x35, 0x26,
+	0x91, 0x2d, 0xa0, 0x37, 0xec, 0xbc, 0xc7, 0xbd,
+	0x82, 0x2c, 0x30, 0x1d, 0xd6, 0x7c, 0x37, 0x3b,
+	0xcc, 0xb5, 0x84, 0xad, 0x3e, 0x92, 0x79, 0xc2,
+	0xe6, 0xd1, 0x2a, 0x13, 0x74, 0xb7, 0x7f, 0x07,
+	0x75, 0x53, 0xdf, 0x82, 0x94, 0x10, 0x44, 0x6b,
+	0x36, 0xeb, 0xd9, 0x70, 0x66, 0x29, 0x6a, 0xe6,
+	0x42, 0x7e, 0xa7, 0x5c, 0x2e, 0x08, 0x46, 0xa1,
+	0x1a, 0x09, 0xcc, 0xf5, 0x37, 0x0d, 0xc8, 0x0b,
+	0xfe, 0xcb, 0xad, 0x28, 0xc7, 0x3f, 0x09, 0xb3,
+	0xa3, 0xb7, 0x5e, 0x66, 0x2a, 0x25, 0x94, 0x41,
+	0x0a, 0xe4, 0x96, 0xb2, 0xe2, 0xe6, 0x60, 0x9e,
+	0x31, 0xe6, 0xe0, 0x2c, 0xc8, 0x37, 0xf0, 0x53,
+	0xd2, 0x1f, 0x37, 0xff, 0x4f, 0x51, 0x95, 0x0b,
+	0xbe, 0x26, 0x38, 0xd0, 0x9d, 0xd7, 0xa4, 0x93,
+	0x09, 0x30, 0x80, 0x6d, 0x07, 0x03, 0xb1, 0xf6,
+},
+
+jwa_b3_a[] = { /* "The second principle of Auguste Kerckhoffs" */
+	0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6f,
+	0x6e, 0x64, 0x20, 0x70, 0x72, 0x69, 0x6e, 0x63,
+	0x69, 0x70, 0x6c, 0x65, 0x20, 0x6f, 0x66, 0x20,
+	0x41, 0x75, 0x67, 0x75, 0x73, 0x74, 0x65, 0x20,
+	0x4b, 0x65, 0x72, 0x63, 0x6b, 0x68, 0x6f, 0x66,
+	0x66, 0x73
+},
+
+jws_b3_tag[] = {
+	0x4d, 0xd3, 0xb4, 0xc0, 0x88, 0xa7, 0xf4, 0x5c,
+	0x21, 0x68, 0x39, 0x64, 0x5b, 0x20, 0x12, 0xbf,
+	0x2e, 0x62, 0x69, 0xa8, 0xc5, 0x6a, 0x81, 0x6d,
+	0xbc, 0x1b, 0x26, 0x77, 0x61, 0x95, 0x5b, 0xc5
+}
+;
 
-	if (lws_jws_confirm_sig(rfc7515_rsa_a1, strlen(rfc7515_rsa_a1),
-				&jwk) < 0) {
-		lwsl_notice("confirm rsa sig failed\n");
+static int
+test_jwa_b3(struct lws_context *context)
+{
+	struct lws_jose jose;
+	struct lws_jws jws;
+	struct lws_jwk jwk;
+	char buf[2048];
+	int n, ret = -1;
+
+	lws_jose_init(&jose);
+	lws_jws_init(&jws, &jwk, context);
+
+	/*
+	 * normally all this is interpreted from the JWE blob.  But we don't
+	 * have JWE test vectors for AES_256_CBC_HMAC_SHA_512, just a standalone
+	 * one.  So we have to create it all by hand.
+	 *
+	 * See test_jwe_a3 above for a more normal usage pattern.
+	 */
+
+	memset(&jwk, 0, sizeof(jwk));
+	jwk.kty = LWS_GENCRYPTO_KTY_OCT;
+	jwk.e[LWS_GENCRYPTO_OCT_KEYEL_K].buf = (uint8_t *)jwa_b3_rawkey;
+	jwk.e[LWS_GENCRYPTO_OCT_KEYEL_K].len = sizeof(jwa_b3_rawkey);
+
+	memcpy(buf, jwa_b3_e, sizeof(jwa_b3_e));
+
+	jws.map.buf[LJWE_IV] = (char *)jwa_b3_iv;
+	jws.map.len[LJWE_IV] = sizeof(jwa_b3_iv);
+
+	jws.map.buf[LJWE_CTXT] = buf;
+	jws.map.len[LJWE_CTXT] = sizeof(jwa_b3_e);
+
+	jws.map.buf[LJWE_ATAG] = (char *)jws_b3_tag;
+	jws.map.len[LJWE_ATAG] = sizeof(jws_b3_tag);
+
+	/*
+	 * Normally this comes from the JOSE header.  But this test vector
+	 * doesn't feature one...
+	 */
+
+	if (lws_gencrypto_jwe_alg_to_definition("A128KW", &jose.alg))
+		goto bail;
+	if (lws_gencrypto_jwe_enc_to_definition("A256CBC-HS512", &jose.enc_alg))
+		goto bail;
+
+	n = lws_jwe_auth_and_decrypt_cbc_hs(&jose, &jws, jwa_b3_rawkey,
+						    jwa_b3_a, sizeof(jwa_b3_a));
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_a_cbc_hs_decrypt failed\n", __func__);
+
+		goto bail;
+	}
+
+	/* allowing for trailing padding, confirm the plaintext */
+	if (jws.map.len[LJWE_CTXT] < sizeof(jwa_b3_ptext) ||
+	    lws_timingsafe_bcmp(jws.map.buf[LJWE_CTXT],jwa_b3_ptext,
+			        sizeof(jwa_b3_ptext))) {
+		lwsl_err("%s: plaintext AES decrypt wrong\n", __func__);
+		lwsl_hexdump_notice(jwa_b3_ptext, sizeof(jwa_b3_ptext));
+		lwsl_hexdump_notice(jws.map.buf[LJWE_CTXT],
+				    jws.map.len[LJWE_CTXT]);
 		goto bail;
 	}
 
-	/* 2.3: generate our own signature for a copy of the test packet */
+	ret = 0;
+
+bail:
+	if (ret)
+		lwsl_err("%s: selftest failed ++++++++++++++++++++\n", __func__);
+	else
+		lwsl_notice("%s: selftest OK\n", __func__);
+
+	lws_jws_destroy(&jws);
 
-	memcpy(buf, rfc7515_rsa_a1, strlen(rfc7515_rsa_a1));
+	return ret;
+}
+
+/* JWA C.  Example ECDH-ES Key Agreement Computation
+ *
+ * This example uses ECDH-ES Key Agreement and the Concat KDF to derive
+ * the CEK in the manner described in Section 4.6.  In this example, the
+ * ECDH-ES Direct Key Agreement mode ("alg" value "ECDH-ES") is used to
+ * produce an agreed-upon key for AES GCM with a 128-bit key ("enc"
+ * value "A128GCM").
+ *
+ * In this example, a producer Alice is encrypting content to a consumer
+ * Bob.  The producer (Alice) generates an ephemeral key for the key
+ * agreement computation.
+ *
+ * JWA Appendix C where this comes from ONLY goes as far as to confirm the
+ * direct derived key, it doesn't do any AES128-GCM.
+ */
 
-	/* set p to second . */
-	p = strchr(buf + 1, '.');
-	p1 = strchr(p + 1, '.');
+static const char
+
+*ex_jwa_c_jose =
+	"{\"alg\":\"ECDH-ES\","
+	 "\"enc\":\"A128GCM\","
+	 "\"apu\":\"QWxpY2U\","	/* b64u("Alice") */
+	 "\"apv\":\"Qm9i\","	/* b64u("Bob") */
+	 "\"epk\":" /* public part of A's ephemeral key */
+	 "{\"kty\":\"EC\","
+	  "\"crv\":\"P-256\","
+	  "\"x\":\"gI0GAILBdu7T53akrFmMyGcsF3n5dO7MmwNBHKW5SV0\","
+	  "\"y\":\"SLW_xSffzlPWrHEVI30DHM_4egVwt3NQqeUD7nMFpps\""
+	 "}"
+	"}"
+;
+
+static uint8_t
+ex_jwa_c_z[] = {
+	158,  86, 217,  29, 129, 113,  53, 211,
+	114, 131,  66, 131, 191, 132,  38, 156,
+	251,  49, 110, 163, 218, 128, 106,  72,
+	246, 218, 167, 121, 140, 254, 144, 196
+},
+ex_jwa_c_derived_key[] = {
+	 86, 170, 141, 234, 248,  35, 109,  32,
+	 92,  34,  40, 205, 113, 167,  16,  26
+};
+
+
+static int
+test_jwa_c(struct lws_context *context)
+{
+	struct lws_jose jose;
+	struct lws_jws jws;
+	char temp[2048], *p;
+	int ret = -1, temp_len = sizeof(temp);
+
+	lws_jose_init(&jose);
+	lws_jws_init(&jws, NULL, context);
+
+	/*
+	 * again the JWA Appendix C test vectors are not in the form of a
+	 * complete JWE, but just the JWE JOSE header, so we must fake up the
+	 * pieces and perform just the (normally internal) key agreement step
+	 * for this test.
+	 *
+	 * See test_jwe_a3 above for a more normal usage pattern.
+	 */
+
+	if (lws_jwe_parse_jose(&jose, ex_jwa_c_jose, strlen(ex_jwa_c_jose),
+			       temp, &temp_len) < 0) {
+		lwsl_err("%s: JOSE parse failed\n", __func__);
 
-	if (lws_gencrypto_jwe_alg_to_definition("RSA1_5", &jose_alg)) {
-		lwsl_err("%s: RSA1_5 not supported\n", __func__);
 		goto bail;
 	}
 
-	n = lws_jws_sign_from_b64(buf, p - buf, p + 1, p1 - (p + 1),
-				  p1 + 1, sizeof(buf) - (p1 - buf) - 1,
-				  jose_alg, &jwk, context);
-	if (n < 0)
+	/*
+	 * The ephemeral key has been parsed into a jwk "jose.jwk_ephemeral"
+	 *
+	 *  In this example, the ECDH-ES Direct Key Agreement mode ("alg" value
+	 *  "ECDH-ES") is used to produce an agreed-upon key for AES GCM with a
+	 *  128-bit key ("enc" value "A128GCM").
+	 */
+
+	p = lws_concat_temp(temp, temp_len);
+
+	if (lws_jwa_concat_kdf(&jose, &jws, 1, (uint8_t *)p,
+			       ex_jwa_c_z, sizeof(ex_jwa_c_z))) {
+		lwsl_err("%s: JOSE parse failed\n", __func__);
+
 		goto bail;
+	}
 
-	puts(buf);
+	/* allowing for trailing padding, confirm the plaintext */
+	if (lws_timingsafe_bcmp(lws_concat_temp(temp, temp_len), ex_jwa_c_derived_key,
+			        sizeof(ex_jwa_c_derived_key))) {
+		lwsl_err("%s: ECDH-ES direct derived key wrong\n", __func__);
+		lwsl_hexdump_notice(ex_jwa_c_derived_key,
+				    sizeof(ex_jwa_c_derived_key));
+		lwsl_hexdump_notice(p, sizeof(ex_jwa_c_derived_key));
+		goto bail;
+	}
+
+	ret = 0;
+
+bail:
+	lws_jws_destroy(&jws);
+	lws_jose_destroy(&jose);
+	if (ret)
+		lwsl_err("%s: selftest failed +++++++++++++++++++\n", __func__);
+	else
+		lwsl_notice("%s: selftest OK\n", __func__);
+
+	return ret;
+}
+
+
+/* AES Key Wrap and AES_XXX_CBC_HMAC_SHA_YYY variations
+ *
+ * These were created by, eg
+ *
+ *   echo -n "plaintext0123456" | \
+ *   ./lws-crypto-jwe -e "A192KW A256CBC-HS512" -k aes192.key
+ */
+
+/* "Live long and prosper." */
+static const char
+	*akw_ptext = "plaintext0123456",
+	*akw_ct_128_128 = "eyJhbGciOiJBMTI4S1ciLCAiZW5jIjoiQTEyOENCQy1IUzI1NiJ9.zbTfhhWePf1UrCRDxJD_-8eAQr2AoWAL51_nNOv0L4nV3P0e4_9ARA.qWehIhy4j4_gh_h5MF9ZEw.GD40YH6NeNOEkhhxC9ryZA.PEuU6V3rhYXeoxENrAzDgw",
+	*akw_ct_128_192 = "eyJhbGciOiJBMTI4S1ciLCAiZW5jIjoiQTE5MkNCQy1IUzM4NCJ9.zpkr45xH_kSJ5eTBv5dGo5PN_A6YdC4JoJSOw3_VTqcOeAYyCkCAXeGWugqIVLzMzBKgtXdabO8.O28MVhkgfketu5sxQK4Ffw.j25N7luxh251kQwpAoYURQ.Pm_NOj0KZzUq2fV9ARpHxT3Iach9feLK",
+	*akw_ct_128_256 = "eyJhbGciOiJBMTI4S1ciLCAiZW5jIjoiQTI1NkNCQy1IUzUxMiJ9.VvFmi121jliyh_UKzsBv7HR3TVY7-yALpcdlasHqdzmfISd8LFU5oc2fEhfn3_TKfCbgRycm5M3103NEMbVSiNULZWvJAPFe.7uLHGFO1g-PgD9YkjPbvoA.AlPwQPWSqGaB_em4qEEyjw.0LgTLld5pSffZnzGG6IRWEwXg7HhClmwP4m_p1yKnHw",
+	*akw_ct_192_128 = "eyJhbGciOiJBMTkyS1ciLCAiZW5jIjoiQTEyOENCQy1IUzI1NiJ9.kxlmi-xn0JN-ZlnSfkVDP-fXvricJ-L63WP2bWddWEiVK4m-os2trw.iarAWaeV873kh5s7HjoZ4Q.nFHEpnnIxvbCiYfFfsLj7Q.karz-h-R93dJgwN_YZyPmw",
+	*akw_ct_192_192 = "eyJhbGciOiJBMTkyS1ciLCAiZW5jIjoiQTE5MkNCQy1IUzM4NCJ9.D869MEk-JERZU_4MgFuL_6Pg24LUEbXlTvGj-t_JUnNFsJ0p8fk5L-iOATqPmx2g7AyVWgcUqU0.RrxzDsy6Bne1pzx99PBGsA.C-ZWmMwd1uswYkvhKX2_jg.bIFY0TmGuohI2APxDZyFUYpa6s1Mx2j1",
+	*akw_ct_192_256 = "eyJhbGciOiJBMTkyS1ciLCAiZW5jIjoiQTI1NkNCQy1IUzUxMiJ9.XNOBw0Dy1paAX2_XGkZYm2Zm455i8InAVMqM3aOrVDpXYBAADuZ_Ke_dlo3Fc8J5b9m_KNCUtVUU8f3KV0sY-yESsqyZTSXk.n3wEIV1-tL50JAp4H19Y1w.ODPd-oxmpCai9CzqaO0P3Q.b9z08hJTySSVSOw-4qp5lrTEcUur46L-RRB-SEcqPpk",
+	*akw_ct_256_128 = "eyJhbGciOiJBMjU2S1ciLCAiZW5jIjoiQTEyOENCQy1IUzI1NiJ9.THaIbHUOHkr7McMeiQqIO_gBcm61F0BKx79JXkzQVVSF7m0u7Z6uhA.RAU8Yx_a9rbWeqr_0YyLZA.zzfdv55bM-qblTxaR5pNzQ.cySMIOTOcEoFkcVn0D6RKQ",
+	*akw_ct_256_192 = "eyJhbGciOiJBMjU2S1ciLCAiZW5jIjoiQTE5MkNCQy1IUzM4NCJ9.gFcfX6fVrpmDJWN5jPqSWEvpOOoNuV4Yn2KO47p1wGsdw5qIw3r5AO5U8zOEtoGNVX68IC8vkpo.9w3tBsve4e-77lI-S9cFog.Vj3L009JDipPJlHY0tS4Iw.WYGgCedW4SmxleDF3P6Hx26BUXxnizxl",
+	*akw_ct_256_256 = "eyJhbGciOiJBMjU2S1ciLCAiZW5jIjoiQTI1NkNCQy1IUzUxMiJ9.ldhqlMf2LJrZ7EDl-oZvaqi0b_KPGy4cMRx2QDpKtTg92tTSWF7ALVHPPCyT4qccIybP4rygajKfdC_Q_UE16KFyUvXhBgaj.S9OCmKpY0zDkArLF5XsrJw.zvJ1X-zuHsrwLXGJJbglPA.WaRKb7Le2ZQ30pGQAV3sfp-YY1563KXxPURHQ8ntdPc",
+	*akw_key_128 = "{\"k\":\"JjVJVh8JsXvKf9qgHHWWBA\",\"kty\":\"oct\"}",
+	*akw_key_192 = "{\"k\":\"BYF6urCMDRMKFXXRxXrDSVtW71AUZghj\",\"kty\":\"oct\"}",
+	*akw_key_256 = "{\"k\":\"cSHyZXGEfnlgKud21cM6tAxRyXnK6xbWRTsyLUegTMk\",\"kty\":\"oct\"}"
+;
+
+static int
+test_akw_decrypt(struct lws_context *context, const char *test_name,
+		 const char *ciphertext, const char *key)
+{
+	struct lws_jose jose;
+	struct lws_jws jws;
+	struct lws_jwk jwk;
+	char temp[2048];
+	int n, ret = -1, temp_len = sizeof(temp);
 
-	/* 2.4: confirm our signature can be verified */
+	lws_jose_init(&jose);
+	lws_jws_init(&jws, &jwk, context);
 
-	if (lws_jws_confirm_sig(buf, (p1 + 1 + n) - buf, &jwk) < 0) {
-		lwsl_notice("confirm rsa sig 2 failed\n");
+	if (lws_jwk_import(&jwk, NULL, NULL, key, strlen(key)) < 0) {
+		lwsl_notice("%s: Failed to decode JWK test key\n", __func__);
 		goto bail;
 	}
-#endif
+
+	/* converts a compact serialization to jws b64 + decoded maps */
+	if (lws_jws_compact_decode(ciphertext, strlen(ciphertext),
+				   &jws.map, &jws.map_b64,
+				   temp, &temp_len) != 5) {
+		lwsl_err("%s: lws_jws_compact_decode failed\n", __func__);
+		goto bail1;
+	}
+
+	n = lws_jwe_auth_and_decrypt(&jose, &jws);
 	lws_jwk_destroy(&jwk);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_auth_and_decrypt failed\n",
+			 __func__);
+		goto bail1;
+	}
+
+	/* allowing for trailing padding, confirm the plaintext */
+	if (jws.map.len[LJWE_CTXT] < strlen(akw_ptext) ||
+	    lws_timingsafe_bcmp(jws.map.buf[LJWE_CTXT], akw_ptext,
+			        strlen(akw_ptext))) {
+		lwsl_err("%s: plaintext AES decrypt wrong\n", __func__);
+		lwsl_hexdump_notice(akw_ptext, strlen(akw_ptext));
+		lwsl_hexdump_notice(jws.map.buf[LJWE_CTXT],
+				    jws.map.len[LJWE_CTXT]);
+		goto bail1;
+	}
 
-	/* end */
+	ret = 0;
 
-	lwsl_notice("%s: selftest OK\n", __func__);
+bail1:
+	lws_jwk_destroy(&jwk);
 
-	return 0;
-#if 0
-bail_destroy_hmac:
-	lws_genhmac_destroy(&ctx, NULL);
-#endif
 bail:
+	lws_jws_destroy(&jws);
+	lws_jose_destroy(&jose);
+	if (ret)
+		lwsl_err("%s: selftest %s failed +++++++++++++++++++\n",
+			__func__, test_name);
+	else
+		lwsl_notice("%s: selftest %s OK\n", __func__, test_name);
+
+	return ret;
+}
+
+static int
+test_akw_encrypt(struct lws_context *context, const char *test_name,
+		 const char *alg, const char *enc,
+		 const char *ciphertext, const char *key,
+		 char *compact, int compact_len)
+{
+	struct lws_jose jose;
+	struct lws_jws jws;
+	struct lws_jwk jwk;
+	char temp[4096];
+	int ret = -1, n, temp_len = sizeof(temp);
+
+	lws_jose_init(&jose);
+	lws_jws_init(&jws, &jwk, context);
+
+	if (lws_jwk_import(&jwk, NULL, NULL, key, strlen(key)) < 0) {
+		lwsl_notice("%s: Failed to decode JWK test key\n", __func__);
+		goto bail;
+	}
+
+	if (lws_gencrypto_jwe_alg_to_definition(alg, &jose.alg)) {
+		lwsl_err("Unknown cipher alg %s\n", alg);
+		goto bail1;
+	}
+	if (lws_gencrypto_jwe_enc_to_definition(enc, &jose.enc_alg)) {
+		lwsl_err("Unknown payload enc alg %s\n", enc);
+		goto bail1;
+	}
+
+	/* we require a JOSE-formatted header to do the encryption */
+
+	if (temp_len < 256)
+		goto bail1;
+	jws.map.buf[LJWS_JOSE] = temp;
+	jws.map.len[LJWS_JOSE] = lws_snprintf(temp, temp_len,
+			"{\"alg\":\"%s\", \"enc\":\"%s\"}", alg, enc);
+	temp_len -= jws.map.len[LJWS_JOSE];
+
+	/*
+	 * dup the plaintext into the ciphertext element, it will be
+	 * encrypted in-place to a ciphertext of the same length
+	 */
+
+	if (lws_jws_dup_element(&jws.map, LJWE_CTXT,
+				lws_concat_temp(temp, temp_len), &temp_len,
+				akw_ptext, strlen(akw_ptext), 0)) {
+		lwsl_notice("%s: Not enough temp space for ptext\n", __func__);
+		goto bail;
+	}
+
+	/* CEK size is determined by hash / hmac size */
+
+	n = lws_gencrypto_bits_to_bytes(jose.enc_alg->keybits_fixed);
+	if (lws_jws_randomize_element(context, &jws.map, LJWE_EKEY,
+				      lws_concat_temp(temp, temp_len),
+				      &temp_len, n,
+				      LWS_JWE_LIMIT_KEY_ELEMENT_BYTES)) {
+		lwsl_err("Problem getting random\n");
+		goto bail1;
+	}
+
+	n = lws_jwe_encrypt(&jose, &jws, lws_concat_temp(temp, temp_len),
+			    &temp_len);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_encrypt failed\n", __func__);
+		goto bail1;
+	}
+
+	n = lws_jwe_write_compact(&jose, &jws, compact, compact_len);
+	if (n < 0) {
+		lwsl_err("%s: lws_jwe_write_compact failed: %d\n",
+			 __func__, n);
+		goto bail1;
+	}
+
+	ret = 0;
+bail1:
 	lws_jwk_destroy(&jwk);
-//bail2:
-	lwsl_err("%s: selftest failed ++++++++++++++++++++\n", __func__);
+bail:
+	lws_jws_destroy(&jws);
+	lws_jose_destroy(&jose);
+	if (ret)
+		lwsl_err("%s: selftest %s failed +++++++++++++++++++\n",
+			__func__, test_name);
+	else
+		lwsl_notice("%s: selftest %s OK\n", __func__, test_name);
+
+	return ret;
+}
+
+#if 0
+static char *complete =
+    "{"
+      "\"protected\":"
+       "\"eyJlbmMiOiJBMTI4Q0JDLUhTMjU2In0\","
+      "\"unprotected\":"
+       "{\"jku\":\"https://server.example.com/keys.jwks\"},"
+      "\"recipients\":["
+       "{\"header\":"
+         "{\"alg\":\"RSA1_5\",\"kid\":\"2011-04-29\"},"
+        "\"encrypted_key\":"
+         "\"UGhIOguC7IuEvf_NPVaXsGMoLOmwvc1GyqlIKOK1nN94nHPoltGRhWhw7Zx0-"
+          "kFm1NJn8LE9XShH59_i8J0PH5ZZyNfGy2xGdULU7sHNF6Gp2vPLgNZ__deLKx"
+          "GHZ7PcHALUzoOegEI-8E66jX2E4zyJKx-YxzZIItRzC5hlRirb6Y5Cl_p-ko3"
+          "YvkkysZIFNPccxRU7qve1WYPxqbb2Yw8kZqa2rMWI5ng8OtvzlV7elprCbuPh"
+          "cCdZ6XDP0_F8rkXds2vE4X-ncOIM8hAYHHi29NX0mcKiRaD0-D-ljQTP-cFPg"
+          "wCp6X-nZZd9OHBv-B3oWh2TbqmScqXMR4gp_A\"},"
+       "{\"header\":"
+         "{\"alg\":\"A128KW\",\"kid\":\"7\"},"
+        "\"encrypted_key\":"
+         "\"6KB707dM9YTIgHtLvtgWQ8mKwboJW3of9locizkDTHzBC2IlrT1oOQ\"}],"
+      "\"iv\":"
+       "\"AxY8DCtDaGlsbGljb3RoZQ\","
+      "\"ciphertext\":"
+       "\"KDlTtXchhZTGufMYmOYGS4HffxPSUrfmqCHXaI9wOGY\","
+      "\"tag\":"
+       "\"Mz-VPPyU4RlcuYv1IwIvzw\""
+     "}\""
+;
+
+
+#endif
+
+int
+test_jwe(struct lws_context *context)
+{
+	char compact[4096];
+	int n = 0;
+
+	n |= test_jwe_a1(context);
+
+	n |= test_jwe_a2(context);
+
+	n |= test_jwe_ra_ptext_1024(context, (char *)lws_jwe_ex_a2_jwk_json,
+			   strlen((char *)lws_jwe_ex_a2_jwk_json));
+	n |= test_jwe_r256a192_ptext(context, (char *)lws_jwe_ex_a2_jwk_json,
+			   strlen((char *)lws_jwe_ex_a2_jwk_json));
+	n |= test_jwe_r256a256_ptext(context, (char *)lws_jwe_ex_a2_jwk_json,
+			   strlen((char *)lws_jwe_ex_a2_jwk_json));
+	n |= test_jwe_ra_ptext_1024(context, (char *)rsa_key_2048,
+			   strlen((char *)rsa_key_2048));
+	n |= test_jwe_r256a192_ptext(context, (char *)rsa_key_2048,
+			   strlen((char *)rsa_key_2048));
+	n |= test_jwe_r256a256_ptext(context, (char *)rsa_key_2048,
+			   strlen((char *)rsa_key_2048));
+	n |= test_jwe_ra_ptext_1024(context, (char *)rsa_key_4096,
+			   strlen((char *)rsa_key_4096));
+	n |= test_jwe_r256a192_ptext(context, (char *)rsa_key_4096,
+			   strlen((char *)rsa_key_4096));
+	n |= test_jwe_r256a256_ptext(context, (char *)rsa_key_4096,
+			   strlen((char *)rsa_key_4096));
+	n |= test_jwe_ra_ptext_1024(context, (char *)rsa_key_4096_no_optional,
+			   strlen((char *)rsa_key_4096_no_optional));
+	n |= test_jwe_r256a192_ptext(context, (char *)rsa_key_4096_no_optional,
+			   strlen((char *)rsa_key_4096_no_optional));
+	n |= test_jwe_r256a256_ptext(context, (char *)rsa_key_4096_no_optional,
+			   strlen((char *)rsa_key_4096_no_optional));
+
+	/* AESKW decrypt all variations */
+
+	n |= test_akw_decrypt(context, "d-a128kw_128", akw_ct_128_128, akw_key_128);
+	n |= test_akw_decrypt(context, "d-a128kw_192", akw_ct_128_192, akw_key_128);
+	n |= test_akw_decrypt(context, "d-a128kw_256", akw_ct_128_256, akw_key_128);
+	n |= test_akw_decrypt(context, "d-a192kw_128", akw_ct_192_128, akw_key_192);
+	n |= test_akw_decrypt(context, "d-a192kw_192", akw_ct_192_192, akw_key_192);
+	n |= test_akw_decrypt(context, "d-a192kw_256", akw_ct_192_256, akw_key_192);
+	n |= test_akw_decrypt(context, "d-a256kw_128", akw_ct_256_128, akw_key_256);
+	n |= test_akw_decrypt(context, "d-a256kw_192", akw_ct_256_192, akw_key_256);
+	n |= test_akw_decrypt(context, "d-a256kw_256", akw_ct_256_256, akw_key_256);
+
+	/* AESKW encrypt then confirm decrypt */
+
+	if (!test_akw_encrypt(context, "ed-128kw_128", "A128KW", "A128CBC-HS256",
+			akw_ptext, akw_key_128, compact, sizeof(compact)))
+		n |= test_akw_decrypt(context, "ed-128kw_128", compact, akw_key_128);
+	else
+		n = -1;
+	if (!test_akw_encrypt(context, "ed-128kw_192", "A128KW", "A192CBC-HS384",
+			akw_ptext, akw_key_128, compact, sizeof(compact)))
+		n |= test_akw_decrypt(context, "ed-128kw_192", compact, akw_key_128);
+	else
+		n = -1;
+	if (!test_akw_encrypt(context, "ed-128kw_256", "A128KW", "A256CBC-HS512",
+			akw_ptext, akw_key_128, compact, sizeof(compact)))
+		n |= test_akw_decrypt(context, "ed-128kw_256", compact, akw_key_128);
+	else
+		n = -1;
+
+	if (!test_akw_encrypt(context, "ed-192kw_128", "A192KW", "A128CBC-HS256",
+			akw_ptext, akw_key_192, compact, sizeof(compact)))
+		n |= test_akw_decrypt(context, "ed-192kw_128", compact, akw_key_192);
+	else
+		n = -1;
+	if (!test_akw_encrypt(context, "ed-192kw_192", "A192KW", "A192CBC-HS384",
+			akw_ptext, akw_key_192, compact, sizeof(compact)))
+		n |= test_akw_decrypt(context, "ed-192kw_192", compact, akw_key_192);
+	else
+		n = -1;
+	if (!test_akw_encrypt(context, "ed-192kw_256", "A192KW", "A256CBC-HS512",
+			akw_ptext, akw_key_192, compact, sizeof(compact)))
+		n |= test_akw_decrypt(context, "ed-192kw_256", compact, akw_key_192);
+	else
+		n = -1;
+
+	if (!test_akw_encrypt(context, "ed-256kw_128", "A256KW", "A128CBC-HS256",
+			akw_ptext, akw_key_256, compact, sizeof(compact)))
+		n |= test_akw_decrypt(context, "ed-256kw_128", compact, akw_key_256);
+	else
+		n = -1;
+	if (!test_akw_encrypt(context, "ed-256kw_192", "A256KW", "A192CBC-HS384",
+			akw_ptext, akw_key_256, compact, sizeof(compact)))
+		n |= test_akw_decrypt(context, "ed-256kw_192", compact, akw_key_256);
+	else
+		n = -1;
+	if (!test_akw_encrypt(context, "ed-256kw_256", "A256KW", "A256CBC-HS512",
+			akw_ptext, akw_key_256, compact, sizeof(compact)))
+		n |= test_akw_decrypt(context, "ed-256kw_256", compact, akw_key_256);
+	else
+		n = -1;
 
-	return 1;
+	n |= test_jwe_r256a128_jwe_openssl(context);
+	n |= test_jwe_r256a128_jwe_mbedtls(context);
+	n |= test_jwe_a3(context);
+	n |= test_jwa_b2(context);
+	n |= test_jwa_b3(context);
+	n |= test_jwa_c(context);
+//	n |= test_jwe_json_complete(context);
 
+	return n;
 }
diff --git a/minimal-examples/api-tests/api-test-jose/jws.c b/minimal-examples/api-tests/api-test-jose/jws.c
index d66978e8..b904f4e1 100644
--- a/minimal-examples/api-tests/api-test-jose/jws.c
+++ b/minimal-examples/api-tests/api-test-jose/jws.c
@@ -22,6 +22,83 @@
  *
  */
 
+/* for none, the compact serialization format is b64u(jose hdr).b64u(payload) */
+
+static const char *none_cser =
+	  "eyJhbGciOiJub25lIn0"
+	  "."
+	  "eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFt"
+	  "cGxlLmNvbS9pc19yb290Ijp0cnVlfQ",
+	  *none_jose = "{\"alg\":\"none\"}",
+	  *none_payload	= "{\"iss\":\"joe\",\r\n \"exp\":1300819380,\r\n"
+			  " \"http://example.com/is_root\":true}";
+
+int
+test_jws_none(struct lws_context *context)
+{
+	struct lws_jws_compact_map map;
+	struct lws_jose jose;
+	char temp[2048];
+	int n, temp_len = sizeof(temp);
+
+	lws_jose_init(&jose);
+
+	/* A.5 Unsecured JSON "none" RFC7515 worked example */
+
+	/* decode the b64.b64[.b64] compact serialization blocks */
+	n = lws_jws_compact_decode(none_cser, strlen(none_cser), &map, NULL,
+				   temp, &temp_len);
+	if (n != 2) {
+		lwsl_err("%s: concat_map failed\n", __func__);
+		goto bail;
+	}
+
+		/* confirm the decoded JOSE header is exactly what we expect */
+		if (strncmp(none_jose, map.buf[LJWS_JOSE], map.len[LJWS_JOSE])) {
+			lwsl_err("%s: jose b64 decode wrong\n", __func__);
+			goto bail;
+		}
+
+	/* parse the JOSE header */
+	if (lws_jws_parse_jose(&jose, map.buf[LJWS_JOSE],
+			       map.len[LJWS_JOSE],
+			       (char *)lws_concat_temp(temp, temp_len),
+			       &temp_len) < 0) {
+		lwsl_err("%s: JOSE parse failed\n", __func__);
+		goto bail;
+	}
+
+		/* confirm we used the "none" alg as expected from JOSE hdr */
+		if (strcmp(jose.alg->alg, "none")) {
+			lwsl_err("%s: JOSE header has wrong alg\n", __func__);
+			goto bail;
+		}
+
+		/* confirm the payload is literally what we expect */
+		if (strncmp(none_payload, map.buf[LJWS_PYLD],
+			    map.len[LJWS_PYLD])) {
+			lwsl_err("%s: payload b64 decode wrong\n", __func__);
+			goto bail;
+		}
+
+	/* end */
+
+	lwsl_notice("%s: selftest OK\n", __func__);
+
+	lws_jose_destroy(&jose);
+
+	return 0;
+
+bail:
+	lws_jose_destroy(&jose);
+
+	lwsl_err("%s: selftest failed ++++++++++++++++++++\n", __func__);
+
+	return 1;
+}
+
+
+
 static const char
 	   *test1	= "{\"typ\":\"JWT\",\r\n \"alg\":\"HS256\"}",
 	   *test1_enc	= "eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9",
@@ -32,134 +109,74 @@ static const char
 	   *key_jwk	= "{\"kty\":\"oct\",\r\n"
 			  " \"k\":\"AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQ"
 			  "Lr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow\"}",
-	   *hash_enc	= "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk",
-	   /* the key from worked example in RFC7515 A-1, as a JWK */
-	   *rfc7515_rsa_key =
-	"{\"kty\":\"RSA\","
-	" \"n\":\"ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddx"
-		 "HmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMs"
-		 "D1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSH"
-		 "SXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdV"
-		 "MTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8"
-		 "NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ\","
-	"\"e\":\"AQAB\","
-	"\"d\":\"Eq5xpGnNCivDflJsRQBXHx1hdR1k6Ulwe2JZD50LpXyWPEAeP88vLNO97I"
-		"jlA7_GQ5sLKMgvfTeXZx9SE-7YwVol2NXOoAJe46sui395IW_GO-pWJ1O0"
-		"BkTGoVEn2bKVRUCgu-GjBVaYLU6f3l9kJfFNS3E0QbVdxzubSu3Mkqzjkn"
-		"439X0M_V51gfpRLI9JYanrC4D4qAdGcopV_0ZHHzQlBjudU2QvXt4ehNYT"
-		"CBr6XCLQUShb1juUO1ZdiYoFaFQT5Tw8bGUl_x_jTj3ccPDVZFD9pIuhLh"
-		"BOneufuBiB4cS98l2SR_RQyGWSeWjnczT0QU91p1DhOVRuOopznQ\","
-	"\"p\":\"4BzEEOtIpmVdVEZNCqS7baC4crd0pqnRH_5IB3jw3bcxGn6QLvnEtfdUdi"
-		"YrqBdss1l58BQ3KhooKeQTa9AB0Hw_Py5PJdTJNPY8cQn7ouZ2KKDcmnPG"
-		"BY5t7yLc1QlQ5xHdwW1VhvKn-nXqhJTBgIPgtldC-KDV5z-y2XDwGUc\","
-	"\"q\":\"uQPEfgmVtjL0Uyyx88GZFF1fOunH3-7cepKmtH4pxhtCoHqpWmT8YAmZxa"
-		"ewHgHAjLYsp1ZSe7zFYHj7C6ul7TjeLQeZD_YwD66t62wDmpe_HlB-TnBA"
-		"-njbglfIsRLtXlnDzQkv5dTltRJ11BKBBypeeF6689rjcJIDEz9RWdc\","
-	"\"dp\":\"BwKfV3Akq5_MFZDFZCnW-wzl-CCo83WoZvnLQwCTeDv8uzluRSnm71I3Q"
-		"CLdhrqE2e9YkxvuxdBfpT_PI7Yz-FOKnu1R6HsJeDCjn12Sk3vmAktV2zb"
-		"34MCdy7cpdTh_YVr7tss2u6vneTwrA86rZtu5Mbr1C1XsmvkxHQAdYo0\","
-	"\"dq\":\"h_96-mK1R_7glhsum81dZxjTnYynPbZpHziZjeeHcXYsXaaMwkOlODsWa"
-		"7I9xXDoRwbKgB719rrmI2oKr6N3Do9U0ajaHF-NKJnwgjMd2w9cjz3_-ky"
-		"NlxAr2v4IKhGNpmM5iIgOS1VZnOZ68m6_pbLBSp3nssTdlqvd0tIiTHU\","
-	"\"qi\":\"IYd7DHOhrWvxkwPQsRM2tOgrjbcrfvtQJipd-DlcxyVuuM9sQLdgjVk2o"
-		"y26F0EmpScGLq2MowX7fhd_QJQ3ydy5cY7YIBi87w93IKLEdfnbJtoOPLU"
-		"W0ITrJReOgo1cq9SbsxYawBgfp_gh6A5603k2-ZQwVK0JKSHuLFkuQ3U\""
-	"}",
-	   *rfc7515_rsa_a1 = /* the signed worked example in RFC7515 A-1 */
-	 "eyJhbGciOiJSUzI1NiJ9"
-	 ".eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFt"
-	 "cGxlLmNvbS9pc19yb290Ijp0cnVlfQ"
-	 ".cC4hiUPoj9Eetdgtv3hF80EGrhuB__dzERat0XF9g2VtQgr9PJbu3XOiZj5RZmh7"
-	 "AAuHIm4Bh-0Qc_lF5YKt_O8W2Fp5jujGbds9uJdbF9CUAr7t1dnZcAcQjbKBYNX4"
-	 "BAynRFdiuB--f_nZLgrnbyTyWzO75vRK5h6xBArLIARNPvkSjtQBMHlb1L07Qe7K"
-	 "0GarZRmB_eSN9383LcOLn6_dO--xi12jzDwusC-eOkHWEsqtFZESc6BfI7noOPqv"
-	 "hJ1phCnvWh6IeYI2w9QOYEUipUTI8np6LbgGY9Fs98rqVt5AXLIhWkWywlVmtVrB"
-	 "p0igcN_IoypGlUPQGe77Rw"
-
-#if 0
-			   ,
-	*rfc7515_ec_a3_jose = "{\"alg\":\"ES256\"}",
-	 /* payload is the same as test2 above */
-	*rfc7515_ec_a3_b64_serialization =
-	 "eyJhbGciOiJFUzI1NiJ9"
-	 "."
-	 "eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFt"
-	 "cGxlLmNvbS9pc19yb290Ijp0cnVlfQ"
-	 "."
-	 "DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8ISlSA"
-	 "pmWQxfKTUJqPP3-Kg6NU1Q",
-	*rfc7515_ec_a3_jwk =
-	 "{"
-		"\"kty\":\"EC\","
-		"\"crv\":\"P-256\","
-		"\"x\":\"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU\","
-		"\"y\":\"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0\","
-		"\"d\":\"jpsQnnGQmL-YBIffH1136cspYG6-0iY7X1fCE9-E9LI\""
-	 "}",
-	rfc7515_ec_a3_R[] = {
-		 14, 209,  33,  83, 121,  99, 108,  72,  60,  47, 127,  21,  88,
-		  7, 212,   2, 163, 178,  40,   3,  58, 249, 124, 126,  23, 129,
-		154, 195,  22, 158, 166, 101
-	},
-	rfc7515_ec_a3_S[] = {
-		197,  10,   7, 211, 140,  60, 112, 229, 216, 241,  45, 175,
-		  8,  74,  84, 128, 166, 101, 144, 197, 242, 147,  80, 154,
-		143,  63, 127, 138, 131, 163,  84, 213
-	}
-#endif
+	   *hash_enc	= "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk"
 ;
 
-/*
- * These are the inputs and outputs from the worked example in RFC7515
- * Appendix A.1.
- *
- * 1) has a fixed header + payload, and a fixed SHA256 HMAC key, and must give
- * a fixed BASE64URL result.
- *
- * 2) has a fixed header + payload and is signed with a key given in JWK format
- */
 int
-test_jws(struct lws_context *context)
+test_jws_HS256(struct lws_context *context)
 {
-	char buf[2048], *p = buf, *end = buf + sizeof(buf) - 1, *enc_ptr, *p1;
-	const struct lws_jose_jwe_alg *jose_alg;
+	char buf[2048], temp[256], *p = buf, *end = buf + sizeof(buf) - 1, *enc_ptr;
 	uint8_t digest[LWS_GENHASH_LARGEST];
+	struct lws_jws_compact_map map;
+	int temp_len = sizeof(temp);
 	struct lws_genhmac_ctx ctx;
+	struct lws_jose jose;
 	struct lws_jwk jwk;
+	struct lws_jws jws;
 	int n;
 
+	lws_jose_init(&jose);
+	lws_jws_init(&jws, &jwk, context);
+
 	/* Test 1: SHA256 on RFC7515 worked example */
 
-	/* 1.1: decode the JWK oct key */
+	/* parse the JOSE header */
+
+	if (lws_jws_parse_jose(&jose, test1, strlen(test1), temp, &temp_len) < 0) {
+		lwsl_err("%s: JOSE parse failed\n", __func__);
+		goto bail;
+	}
+
+		/* confirm we used the "none" alg as expected from JOSE hdr */
+		if (strcmp(jose.alg->alg, "HS256")) {
+			lwsl_err("%s: JOSE header has wrong alg\n", __func__);
+			goto bail;
+		}
+
+	/* 1.1: import the JWK oct key */
 
 	if (lws_jwk_import(&jwk, NULL, NULL, key_jwk, strlen(key_jwk)) < 0) {
 		lwsl_notice("Failed to decode JWK test key\n");
 		return -1;
 	}
-	if (jwk.kty != LWS_GENCRYPTO_KYT_OCT) {
-		lwsl_err("%s: unexpected kty %d\n", __func__, jwk.kty);
+		if (jwk.kty != LWS_GENCRYPTO_KTY_OCT) {
+			lwsl_err("%s: unexpected kty %d\n", __func__, jwk.kty);
 
-		return -1;
-	}
+			return -1;
+		}
 
 	/* 1.2: create JWS known hdr + known payload */
 
 	n = lws_jws_encode_section(test1, strlen(test1), 1, &p, end);
-	if (n < 0)
-		goto bail;
-	if (strcmp(buf, test1_enc))
+	if (n < 0) {
 		goto bail;
+	}
+
+		if (strcmp(buf, test1_enc))
+			goto bail;
 
 	enc_ptr = p + 1; /* + 1 skips the . */
 	n = lws_jws_encode_section(test2, strlen(test2), 0, &p, end);
-	if (n < 0)
-		goto bail;
-	if (strcmp(enc_ptr, test2_enc))
+	if (n < 0) {
 		goto bail;
+	}
+
+		if (strcmp(enc_ptr, test2_enc))
+			goto bail;
 
 	/* 1.3: use HMAC SHA-256 with known key on the hdr . payload */
 
-	if (lws_genhmac_init(&ctx, LWS_GENHMAC_TYPE_SHA256,
+	if (lws_genhmac_init(&ctx, jose.alg->hmac_type,
 			     jwk.e[LWS_GENCRYPTO_OCT_KEYEL_K].buf,
 			     jwk.e[LWS_GENCRYPTO_OCT_KEYEL_K].len))
 		goto bail;
@@ -181,16 +198,101 @@ test_jws(struct lws_context *context)
 
 	/* 1.5: Check we can agree the signature matches the payload */
 
-	if (lws_jws_confirm_sig(buf, p - buf, &jwk, context) < 0) {
-		lwsl_notice("confirm sig failed\n");
+	if (lws_jws_sig_confirm_compact_b64(buf, p - buf, &map, &jwk, context,
+			lws_concat_temp(temp, temp_len), &temp_len) < 0) {
+		lwsl_notice("%s: confirm sig failed\n", __func__);
 		goto bail;
 	}
 
-	lws_jwk_destroy(&jwk); /* finished with the key from the first test */
+	lws_jws_destroy(&jws);
+	lws_jwk_destroy(&jwk);
+	lws_jose_destroy(&jose);
+
+	/* end */
+
+	lwsl_notice("%s: selftest OK\n", __func__);
+
+	return 0;
+
+bail_destroy_hmac:
+	lws_genhmac_destroy(&ctx, NULL);
+
+bail:
+	lws_jws_destroy(&jws);
+	lws_jwk_destroy(&jwk);
+	lws_jose_destroy(&jose);
+	lwsl_err("%s: selftest failed ++++++++++++++++++++\n", __func__);
+
+	return 1;
+}
+
+
+static const char
+	/* the key from worked example in RFC7515 A-2, as a JWK */
+	*rfc7515_rsa_key =
+	"{\"kty\":\"RSA\","
+	" \"n\":\"ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddx"
+		 "HmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMs"
+		 "D1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSH"
+		 "SXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdV"
+		 "MTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8"
+		 "NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ\","
+	"\"e\":\"AQAB\","
+	"\"d\":\"Eq5xpGnNCivDflJsRQBXHx1hdR1k6Ulwe2JZD50LpXyWPEAeP88vLNO97I"
+		"jlA7_GQ5sLKMgvfTeXZx9SE-7YwVol2NXOoAJe46sui395IW_GO-pWJ1O0"
+		"BkTGoVEn2bKVRUCgu-GjBVaYLU6f3l9kJfFNS3E0QbVdxzubSu3Mkqzjkn"
+		"439X0M_V51gfpRLI9JYanrC4D4qAdGcopV_0ZHHzQlBjudU2QvXt4ehNYT"
+		"CBr6XCLQUShb1juUO1ZdiYoFaFQT5Tw8bGUl_x_jTj3ccPDVZFD9pIuhLh"
+		"BOneufuBiB4cS98l2SR_RQyGWSeWjnczT0QU91p1DhOVRuOopznQ\","
+	"\"p\":\"4BzEEOtIpmVdVEZNCqS7baC4crd0pqnRH_5IB3jw3bcxGn6QLvnEtfdUdi"
+		"YrqBdss1l58BQ3KhooKeQTa9AB0Hw_Py5PJdTJNPY8cQn7ouZ2KKDcmnPG"
+		"BY5t7yLc1QlQ5xHdwW1VhvKn-nXqhJTBgIPgtldC-KDV5z-y2XDwGUc\","
+	"\"q\":\"uQPEfgmVtjL0Uyyx88GZFF1fOunH3-7cepKmtH4pxhtCoHqpWmT8YAmZxa"
+		"ewHgHAjLYsp1ZSe7zFYHj7C6ul7TjeLQeZD_YwD66t62wDmpe_HlB-TnBA"
+		"-njbglfIsRLtXlnDzQkv5dTltRJ11BKBBypeeF6689rjcJIDEz9RWdc\","
+	"\"dp\":\"BwKfV3Akq5_MFZDFZCnW-wzl-CCo83WoZvnLQwCTeDv8uzluRSnm71I3Q"
+		"CLdhrqE2e9YkxvuxdBfpT_PI7Yz-FOKnu1R6HsJeDCjn12Sk3vmAktV2zb"
+		"34MCdy7cpdTh_YVr7tss2u6vneTwrA86rZtu5Mbr1C1XsmvkxHQAdYo0\","
+	"\"dq\":\"h_96-mK1R_7glhsum81dZxjTnYynPbZpHziZjeeHcXYsXaaMwkOlODsWa"
+		"7I9xXDoRwbKgB719rrmI2oKr6N3Do9U0ajaHF-NKJnwgjMd2w9cjz3_-ky"
+		"NlxAr2v4IKhGNpmM5iIgOS1VZnOZ68m6_pbLBSp3nssTdlqvd0tIiTHU\","
+	"\"qi\":\"IYd7DHOhrWvxkwPQsRM2tOgrjbcrfvtQJipd-DlcxyVuuM9sQLdgjVk2o"
+		"y26F0EmpScGLq2MowX7fhd_QJQ3ydy5cY7YIBi87w93IKLEdfnbJtoOPLU"
+		"W0ITrJReOgo1cq9SbsxYawBgfp_gh6A5603k2-ZQwVK0JKSHuLFkuQ3U\""
+	"}",
+	*rfc7515_rsa_a1 = /* the signed worked example in RFC7515 A-1 */
+	"eyJhbGciOiJSUzI1NiJ9"
+	".eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFt"
+	"cGxlLmNvbS9pc19yb290Ijp0cnVlfQ"
+	".cC4hiUPoj9Eetdgtv3hF80EGrhuB__dzERat0XF9g2VtQgr9PJbu3XOiZj5RZmh7"
+	"AAuHIm4Bh-0Qc_lF5YKt_O8W2Fp5jujGbds9uJdbF9CUAr7t1dnZcAcQjbKBYNX4"
+	"BAynRFdiuB--f_nZLgrnbyTyWzO75vRK5h6xBArLIARNPvkSjtQBMHlb1L07Qe7K"
+	"0GarZRmB_eSN9383LcOLn6_dO--xi12jzDwusC-eOkHWEsqtFZESc6BfI7noOPqv"
+	"hJ1phCnvWh6IeYI2w9QOYEUipUTI8np6LbgGY9Fs98rqVt5AXLIhWkWywlVmtVrB"
+	"p0igcN_IoypGlUPQGe77Rw"
+;
+
+int
+test_jws_RS256(struct lws_context *context)
+{
+	struct lws_jws_compact_map map;
+	struct lws_jose jose;
+	struct lws_jwk jwk;
+	struct lws_jws jws;
+	char temp[2048], *in;
+	int n, l, temp_len = sizeof(temp);
+
+	lws_jose_init(&jose);
+	lws_jws_init(&jws, &jwk, context);
+
+	/* Test 2: RS256 on RFC7515 worked example */
 
-	/* Test 2: RSA256 on RFC7515 worked example */
+	if (lws_gencrypto_jws_alg_to_definition("RS256", &jose.alg)) {
+		lwsl_err("%s: RS256 not supported\n", __func__);
+		goto bail;
+	}
 
-	/* 2.1: turn the known JWK key for the RSA test into a lws_jwk */
+	/* 2.1: import the jwk */
 
 	if (lws_jwk_import(&jwk, NULL, NULL,
 			   rfc7515_rsa_key, strlen(rfc7515_rsa_key))) {
@@ -198,45 +300,55 @@ test_jws(struct lws_context *context)
 		goto bail2;
 	}
 
-	if (jwk.kty != LWS_GENCRYPTO_KYT_RSA) {
+	if (jwk.kty != LWS_GENCRYPTO_KTY_RSA) {
 		lwsl_err("%s: 2.2: kty: %d instead of RSA\n", __func__, jwk.kty);
+		goto bail;
 	}
 
 	/* 2.2: check the signature on the test packet from RFC7515 A-1 */
 
-	if (lws_jws_confirm_sig(rfc7515_rsa_a1, strlen(rfc7515_rsa_a1),
-				&jwk, context) < 0) {
+	if (lws_jws_sig_confirm_compact_b64(rfc7515_rsa_a1,
+					    strlen(rfc7515_rsa_a1), &map,
+					    &jwk, context, temp, &temp_len) < 0) {
 		lwsl_notice("%s: 2.2: confirm rsa sig failed\n", __func__);
 		goto bail;
 	}
 
-	/* 2.3: generate our own signature for a copy of the test packet */
+	if (lws_jws_b64_compact_map(rfc7515_rsa_a1, strlen(rfc7515_rsa_a1),
+				   &jws.map_b64) != 3) {
+		lwsl_notice("%s: lws_jws_b64_compact_map failed\n", __func__);
+		goto bail;
+	}
 
-	memcpy(buf, rfc7515_rsa_a1, strlen(rfc7515_rsa_a1));
+	/* 2.3: generate our own signature for a copy of the test packet */
 
-	/* set p to second . */
-	p = strchr(buf + 1, '.');
-	p1 = strchr(p + 1, '.');
+	in = lws_concat_temp(temp, temp_len);
+	l = strlen(rfc7515_rsa_a1);
+	if (temp_len < l + 1)
+		goto bail;
+	memcpy(in, rfc7515_rsa_a1, l + 1);
+	temp_len -= l + 1;
 
-	if (lws_gencrypto_jwe_alg_to_definition("RSA1_5", &jose_alg)) {
-		lwsl_err("%s: RSA1_5 not supported\n", __func__);
+	if (lws_jws_b64_compact_map(in, l, &jws.map_b64) != 3) {
+		lwsl_notice("%s: lws_jws_b64_compact_map failed\n", __func__);
 		goto bail;
 	}
 
-	n = lws_jws_sign_from_b64(buf, p - buf, p + 1, p1 - (p + 1),
-				  p1 + 1, sizeof(buf) - (p1 - buf) - 1,
-				  jose_alg, &jwk, context);
+	/* overwrite the copy of the known b64 sig (it's all placed inside temp) */
+	n = lws_jws_sign_from_b64(&jose, &jws,
+				  (char *)jws.map_b64.buf[LJWS_SIG],
+				  jws.map_b64.len[LJWS_SIG] + 8);
 	if (n < 0) {
 		lwsl_err("%s: failed signing test packet\n", __func__);
 		goto bail;
 	}
-
-	// puts(buf);
+	jws.map_b64.len[LJWS_SIG] = n;
 
 	/* 2.4: confirm our signature can be verified */
 
-	if (lws_jws_confirm_sig(buf, (p1 + 1 + n) - buf, &jwk, context) < 0) {
-		lwsl_notice("confirm rsa sig 2 failed\n");
+	in[l] = '\0';
+	if (lws_jws_sig_confirm_compact_b64(in, l, &map, &jwk, context, lws_concat_temp(temp, temp_len), &temp_len) < 0) {
+		lwsl_notice("%s: 2.2: confirm rsa sig failed\n", __func__);
 		goto bail;
 	}
 
@@ -248,13 +360,353 @@ test_jws(struct lws_context *context)
 
 	return 0;
 
-bail_destroy_hmac:
-	lws_genhmac_destroy(&ctx, NULL);
-
 bail:
 	lws_jwk_destroy(&jwk);
 bail2:
+	lws_jws_destroy(&jws);
 	lwsl_err("%s: selftest failed ++++++++++++++++++++\n", __func__);
 
 	return 1;
 }
+
+static const char
+	*es256_jose = "{\"alg\":\"ES256\"}",
+	*es256_payload	= "{\"iss\":\"joe\",\r\n \"exp\":1300819380,\r\n"
+			  " \"http://example.com/is_root\":true}",
+	*es256_cser =
+	    "eyJhbGciOiJFUzI1NiJ9"
+	    "."
+	    "eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFt"
+	    "cGxlLmNvbS9pc19yb290Ijp0cnVlfQ"
+	    "."
+	    "DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8ISlSA"
+	    "pmWQxfKTUJqPP3-Kg6NU1Q",
+	*es256_jwk =
+	"{"
+		"\"kty\":\"EC\","
+		"\"crv\":\"P-256\","
+		"\"x\":\"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU\","
+		"\"y\":\"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0\","
+		"\"d\":\"jpsQnnGQmL-YBIffH1136cspYG6-0iY7X1fCE9-E9LI\""
+	"}"
+#if 0
+			,
+	rfc7515_ec_a3_R[] = {
+		 14, 209,  33,  83, 121,  99, 108,  72,  60,  47, 127,  21,  88,
+		  7, 212,   2, 163, 178,  40,   3,  58, 249, 124, 126,  23, 129,
+		154, 195,  22, 158, 166, 101
+	},
+	rfc7515_ec_a3_S[] = {
+		197,  10,   7, 211, 140,  60, 112, 229, 216, 241,  45, 175,
+		  8,  74,  84, 128, 166, 101, 144, 197, 242, 147,  80, 154,
+		143,  63, 127, 138, 131, 163,  84, 213
+	}
+#endif
+;
+
+int
+test_jws_ES256(struct lws_context *context)
+{
+	uint8_t digest[LWS_GENHASH_LARGEST];
+	struct lws_genhash_ctx hash_ctx;
+	struct lws_jws_compact_map map;
+	struct lws_jose jose;
+	struct lws_jwk jwk;
+	struct lws_jws jws;
+	char temp[2048], *p;
+	int ret = -1, l, n, temp_len = sizeof(temp);
+
+	/* A.3 "ES256" RFC7515 worked example - verify */
+
+	lws_jose_init(&jose);
+
+	/* decode the b64.b64[.b64] compact serialization blocks */
+	if (lws_jws_compact_decode(es256_cser, strlen(es256_cser),
+				   &jws.map, &jws.map_b64,
+				   temp, &temp_len) != 3) {
+		lwsl_err("%s: concat_map failed\n", __func__);
+		goto bail;
+	}
+
+		/* confirm the decoded JOSE header is exactly what we expect */
+		if (jws.map.len[LJWS_JOSE] != strlen(es256_jose) ||
+		    strncmp(es256_jose, jws.map.buf[LJWS_JOSE],
+				    jws.map.len[LJWS_JOSE])) {
+			lwsl_err("%s: jose b64 decode wrong\n", __func__);
+			goto bail;
+		}
+
+		/* confirm the decoded payload is exactly what we expect */
+		if (jws.map.len[LJWS_PYLD] != strlen(es256_payload) ||
+		    strncmp(es256_payload, jws.map.buf[LJWS_PYLD],
+					    jws.map.len[LJWS_PYLD])) {
+			lwsl_err("%s: payload b64 decode wrong\n", __func__);
+			goto bail;
+		}
+
+	/* parse the JOSE header */
+	if (lws_jws_parse_jose(&jose, jws.map.buf[LJWS_JOSE],
+			       jws.map.len[LJWS_JOSE],
+			       (char *)lws_concat_temp(temp, temp_len), &temp_len) < 0) {
+		lwsl_err("%s: JOSE parse failed\n", __func__);
+		goto bail;
+	}
+
+		/* confirm we used "ES256" alg we expect from the JOSE hdr */
+		if (strcmp(jose.alg->alg, "ES256")) {
+			lwsl_err("%s: JOSE header has wrong alg\n", __func__);
+			goto bail;
+		}
+
+	jws.jwk = &jwk;
+	jws.context = context;
+
+	/* import the ES256 jwk */
+	if (lws_jwk_import(&jwk, NULL, NULL, es256_jwk, strlen(es256_jwk))) {
+		lwsl_notice("%s: Failed to read JWK key\n", __func__);
+		goto bail;
+	}
+
+		/* sanity */
+		if (jwk.kty != LWS_GENCRYPTO_KTY_EC) {
+			lwsl_err("%s: kty: %d instead of EC\n",
+					__func__, jwk.kty);
+			goto bail1;
+		}
+
+	if (lws_jws_sig_confirm(&jws.map_b64, &jws.map, &jwk, context) < 0) {
+		lwsl_notice("%s: confirm EC sig failed\n", __func__);
+		goto bail1;
+	}
+
+	/* A.3 "ES256" RFC7515 worked example - sign */
+
+	l = strlen(es256_cser);
+	if (temp_len < l)
+		goto bail1;
+	p = lws_concat_temp(temp, temp_len);
+	memcpy(p, es256_cser, l + 1);
+	temp_len -= l + 1;
+
+	/* scan the b64 compact serialization string to map the blocks */
+	if (lws_jws_b64_compact_map(p, l, &jws.map_b64) != 3)
+		goto bail1;
+
+	/* create the hash of the protected b64 part */
+	if (lws_genhash_init(&hash_ctx, jose.alg->hash_type) ||
+	    lws_genhash_update(&hash_ctx, jws.map_b64.buf[LJWS_JOSE],
+			    jws.map_b64.len[LJWS_JOSE]) ||
+	    lws_genhash_update(&hash_ctx, ".", 1) ||
+	    lws_genhash_update(&hash_ctx, jws.map_b64.buf[LJWS_PYLD],
+			    jws.map_b64.len[LJWS_PYLD]) ||
+	    lws_genhash_destroy(&hash_ctx, digest)) {
+		lws_genhash_destroy(&hash_ctx, NULL);
+
+		goto bail1;
+	}
+
+	lwsl_hexdump(jws.map_b64.buf[LJWS_SIG], jws.map_b64.len[LJWS_SIG]);
+
+	/* overwrite the copy of the known b64 sig (it's placed inside buf) */
+	n = lws_jws_sign_from_b64(&jose, &jws,
+				  (char *)jws.map_b64.buf[LJWS_SIG],
+				  jws.map_b64.len[LJWS_SIG] + 8);
+	if (n < 0) {
+		lwsl_err("%s: failed signing test packet\n", __func__);
+		goto bail1;
+	}
+	jws.map_b64.len[LJWS_SIG] = n;
+
+	lwsl_hexdump(jws.map_b64.buf[LJWS_SIG], jws.map_b64.len[LJWS_SIG]);
+
+	/* 2.4: confirm our generated signature can be verified */
+
+	p[l] = '\0';
+	if (lws_jws_sig_confirm_compact_b64(p, l, &map, &jwk, context, lws_concat_temp(temp, temp_len), &temp_len) < 0) {
+		lwsl_notice("%s: confirm our EC sig failed\n", __func__);
+		goto bail1;
+	}
+
+	/* end */
+	ret =  0;
+
+bail1:
+	lws_jwk_destroy(&jwk);
+	lws_jose_destroy(&jose);
+
+bail:
+	lwsl_notice("%s: selftest %s\n", __func__, ret < 0 ? "FAIL" : "OK");
+
+	return ret;
+}
+
+static const char
+	*es512_jose = "{\"alg\":\"ES512\"}",
+	*es512_payload	= "Payload",
+	*es512_cser =
+	     "eyJhbGciOiJFUzUxMiJ9"
+	     "."
+	     "UGF5bG9hZA"
+	     "."
+	     "AdwMgeerwtHoh-l192l60hp9wAHZFVJbLfD_UxMi70cwnZOYaRI1bKPWROc-mZZq"
+	     "wqT2SI-KGDKB34XO0aw_7XdtAG8GaSwFKdCAPZgoXD2YBJZCPEX3xKpRwcdOO8Kp"
+	     "EHwJjyqOgzDO7iKvU8vcnwNrmxYbSW9ERBXukOXolLzeO_Jn",
+	*es512_jwk =
+	   "{"
+	      "\"kty\":\"EC\","
+	      "\"crv\":\"P-521\","
+	      "\"x\":\"AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_"
+	           "NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk\","
+	      "\"y\":\"ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDl"
+	           "y79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2\","
+	      "\"d\":\"AY5pb7A0UFiB3RELSD64fTLOSV_jazdF7fLYyuTw8lOfRhWg6Y6rUrPA"
+	           "xerEzgdRhajnu0ferB0d53vM9mE15j2C\""
+	   "}"
+;
+
+int
+test_jws_ES512(struct lws_context *context)
+{
+	uint8_t digest[LWS_GENHASH_LARGEST];
+	struct lws_genhash_ctx hash_ctx;
+	struct lws_jws_compact_map map;
+	struct lws_jose jose;
+	struct lws_jwk jwk;
+	struct lws_jws jws;
+	char temp[2048], *p;
+	int ret = -1, l, n, temp_len = sizeof(temp);
+
+	/* A.4 "ES512" RFC7515 worked example - verify */
+
+	lws_jose_init(&jose);
+
+	/* decode the b64.b64[.b64] compact serialization blocks */
+	if (lws_jws_compact_decode(es512_cser, strlen(es512_cser),
+				   &jws.map, &jws.map_b64, temp,
+				   &temp_len) != 3) {
+		lwsl_err("%s: concat_map failed\n", __func__);
+		goto bail;
+	}
+
+		/* confirm the decoded JOSE header is exactly what we expect */
+		if (jws.map.len[LJWS_JOSE] != strlen(es512_jose) ||
+		    strncmp(es512_jose, jws.map.buf[LJWS_JOSE],
+				        jws.map.len[LJWS_JOSE])) {
+			lwsl_err("%s: jose b64 decode wrong\n", __func__);
+			goto bail;
+		}
+
+		/* confirm the decoded payload is exactly what we expect */
+		if (jws.map.len[LJWS_PYLD] != strlen(es512_payload) ||
+		    strncmp(es512_payload, jws.map.buf[LJWS_PYLD],
+					   jws.map.len[LJWS_PYLD])) {
+			lwsl_err("%s: payload b64 decode wrong\n", __func__);
+			goto bail;
+		}
+
+	/* parse the JOSE header */
+	if (lws_jws_parse_jose(&jose, jws.map.buf[LJWS_JOSE],
+			      jws.map.len[LJWS_JOSE],
+			      lws_concat_temp(temp, temp_len), &temp_len) < 0) {
+		lwsl_err("%s: JOSE parse failed\n", __func__);
+		goto bail;
+	}
+
+		/* confirm we used "es512" alg we expect from the JOSE hdr */
+		if (strcmp(jose.alg->alg, "ES512")) {
+			lwsl_err("%s: JOSE header has wrong alg\n", __func__);
+			goto bail;
+		}
+
+	jws.jwk = &jwk;
+	jws.context = context;
+
+	/* import the es512 jwk */
+	if (lws_jwk_import(&jwk, NULL, NULL, es512_jwk, strlen(es512_jwk))) {
+		lwsl_notice("%s: Failed to read JWK key\n", __func__);
+		goto bail;
+	}
+
+		/* sanity */
+		if (jwk.kty != LWS_GENCRYPTO_KTY_EC) {
+			lwsl_err("%s: kty: %d instead of EC\n",
+					__func__, jwk.kty);
+			goto bail1;
+		}
+
+	if (lws_jws_sig_confirm(&jws.map_b64, &jws.map, &jwk, context) < 0) {
+		lwsl_notice("%s: confirm EC sig failed\n", __func__);
+		goto bail1;
+	}
+
+	/* A.3 "es512" RFC7515 worked example - sign */
+
+	l = strlen(es512_cser);
+	if (temp_len < l)
+		goto bail1;
+	p = lws_concat_temp(temp, temp_len);
+	memcpy(p, es512_cser, l + 1);
+	temp_len -= (l + 1);
+
+	/* scan the b64 compact serialization string to map the blocks */
+	if (lws_jws_b64_compact_map(p, l, &jws.map_b64) != 3)
+		goto bail1;
+
+	/* create the hash of the protected b64 part */
+	if (lws_genhash_init(&hash_ctx, jose.alg->hash_type) ||
+	    lws_genhash_update(&hash_ctx, jws.map_b64.buf[LJWS_JOSE],
+			       jws.map_b64.len[LJWS_JOSE]) ||
+	    lws_genhash_update(&hash_ctx, ".", 1) ||
+	    lws_genhash_update(&hash_ctx, jws.map_b64.buf[LJWS_PYLD],
+			       jws.map_b64.len[LJWS_PYLD]) ||
+	    lws_genhash_destroy(&hash_ctx, digest)) {
+		lws_genhash_destroy(&hash_ctx, NULL);
+
+		goto bail1;
+	}
+
+	/* overwrite the copy of the known b64 sig (it's placed inside buf) */
+	n = lws_jws_sign_from_b64(&jose, &jws,
+				  (char *)jws.map_b64.buf[LJWS_SIG], 1024);
+	if (n < 0) {
+		lwsl_err("%s: failed signing test packet\n", __func__);
+		goto bail1;
+	}
+	jws.map_b64.len[LJWS_SIG] = n;
+
+	/* 2.4: confirm our generated signature can be verified */
+
+	p[l] = '\0';
+
+	if (lws_jws_sig_confirm_compact_b64(p, l, &map, &jwk, context,
+			lws_concat_temp(temp, temp_len), &temp_len) < 0) {
+		lwsl_notice("%s: confirm our ECDSA sig failed\n", __func__);
+		goto bail1;
+	}
+
+	/* end */
+	ret =  0;
+
+bail1:
+	lws_jwk_destroy(&jwk);
+	lws_jose_destroy(&jose);
+
+bail:
+	lwsl_notice("%s: selftest %s\n", __func__, ret < 0 ? "FAIL" : "OK");
+
+	return ret;
+}
+
+int
+test_jws(struct lws_context *context)
+{
+	int n = 0;
+
+	n |= test_jws_none(context);
+	n |= test_jws_HS256(context);
+	n |= test_jws_RS256(context);
+	n |= test_jws_ES256(context);
+	n |= test_jws_ES512(context);
+
+	return n;
+}
diff --git a/minimal-examples/api-tests/api-test-lwsac/main.c b/minimal-examples/api-tests/api-test-lwsac/main.c
index 854e0adc..029d4b2a 100644
--- a/minimal-examples/api-tests/api-test-lwsac/main.c
+++ b/minimal-examples/api-tests/api-test-lwsac/main.c
@@ -39,6 +39,8 @@ int main(int argc, const char **argv)
 
 	for (n = 0; n < 1000; n++) {
 		m = lwsac_use(&lwsac, sizeof(*m), 0);
+		if (!m)
+			return -1;
 		m->payload = n;
 
 		lws_list_ptr_insert(&list_head, &m->list_next, NULL);
diff --git a/minimal-examples/crypto/README.md b/minimal-examples/crypto/README.md
new file mode 100644
index 00000000..1fc34794
--- /dev/null
+++ b/minimal-examples/crypto/README.md
@@ -0,0 +1,5 @@
+|name|tests|
+---|---
+minimal-crypto-jwe|Examples for lws RFC7516 JWE apis
+minimal-crypto-jwk|Examples for lws RFC7517 JWK apis
+
diff --git a/minimal-examples/crypto/minimal-crypto-jwe/CMakeLists.txt b/minimal-examples/crypto/minimal-crypto-jwe/CMakeLists.txt
new file mode 100644
index 00000000..05f73766
--- /dev/null
+++ b/minimal-examples/crypto/minimal-crypto-jwe/CMakeLists.txt
@@ -0,0 +1,77 @@
+cmake_minimum_required(VERSION 2.8)
+include(CheckCSourceCompiles)
+
+set(SAMP lws-crypto-jwe)
+set(SRCS main.c)
+
+# If we are being built as part of lws, confirm current build config supports
+# reqconfig, else skip building ourselves.
+#
+# If we are being built externally, confirm installed lws was configured to
+# support reqconfig, else error out with a helpful message about the problem.
+#
+MACRO(require_lws_config reqconfig _val result)
+
+	if (DEFINED ${reqconfig})
+	if (${reqconfig})
+		set (rq 1)
+	else()
+		set (rq 0)
+	endif()
+	else()
+		set(rq 0)
+	endif()
+
+	if (${_val} EQUAL ${rq})
+		set(SAME 1)
+	else()
+		set(SAME 0)
+	endif()
+
+	if (LWS_WITH_MINIMAL_EXAMPLES AND NOT ${SAME})
+		if (${_val})
+			message("${SAMP}: skipping as lws being built without ${reqconfig}")
+		else()
+			message("${SAMP}: skipping as lws built with ${reqconfig}")
+		endif()
+		set(${result} 0)
+	else()
+		if (LWS_WITH_MINIMAL_EXAMPLES)
+			set(MET ${SAME})
+		else()
+			CHECK_C_SOURCE_COMPILES("#include <libwebsockets.h>\nint main(void) {\n#if defined(${reqconfig})\n return 0;\n#else\n fail;\n#endif\n return 0;\n}\n" HAS_${reqconfig})
+			if (NOT DEFINED HAS_${reqconfig} OR NOT HAS_${reqconfig})
+				set(HAS_${reqconfig} 0)
+			else()
+				set(HAS_${reqconfig} 1)
+			endif()
+			if ((HAS_${reqconfig} AND ${_val}) OR (NOT HAS_${reqconfig} AND NOT ${_val}))
+				set(MET 1)
+			else()
+				set(MET 0)
+			endif()
+		endif()
+		if (NOT MET)
+			if (${_val})
+				message(FATAL_ERROR "This project requires lws must have been configured with ${reqconfig}")
+			else()
+				message(FATAL_ERROR "Lws configuration of ${reqconfig} is incompatible with this project")
+			endif()
+		endif()
+	endif()
+ENDMACRO()
+
+set(requirements 1)
+require_lws_config(LWS_WITH_JOSE 1 requirements)
+
+if (requirements)
+
+	add_executable(${SAMP} ${SRCS})
+
+	if (websockets_shared)
+		target_link_libraries(${SAMP} websockets_shared)
+		add_dependencies(${SAMP} websockets_shared)
+	else()
+		target_link_libraries(${SAMP} websockets)
+	endif()
+endif()
diff --git a/minimal-examples/crypto/minimal-crypto-jwe/README.md b/minimal-examples/crypto/minimal-crypto-jwe/README.md
new file mode 100644
index 00000000..a7dcfb75
--- /dev/null
+++ b/minimal-examples/crypto/minimal-crypto-jwe/README.md
@@ -0,0 +1,69 @@
+# lws minimal example for JWE
+
+Demonstrates how to encrypt and decrypt using JWE and JWK, providing a
+commandline tool for creating encrypted JWE and decoding them.
+
+## build
+
+```
+ $ cmake . && make
+```
+
+## usage
+
+Stdin is either the plaintext (if encrypting) or JWE (if decrypting).
+
+Stdout is either the JWE (if encrypting) or plaintext (if decrypting).
+
+You must pass a private or public key JWK file in the -k option if encrypting,
+and must pass a private key JWK file in the -k option if decrypting.  To be
+clear, for asymmetric keys the public part of the key is required to encrypt,
+and the private part required to decrypt.
+
+For convenience, a pair of public and private keys are provided,
+`key-rsa-4096.private` and `key-rsa-4096.pub`, these were produced with just
+
+```
+ $ lws-crypto-jwk -t RSA -b 4096 --public key-rsa-4096.pub >key-rsa-4096.private
+```
+
+Similar keys for EC modes may be produced with
+
+```
+ $ lws-crypto-jwk -t EC -v P-256 --public key-ecdh-p-256.pub >key-ecdh-p-256.private
+```
+
+and for AES ("octet") symmetric keys
+
+```
+ $ lws-crypto-jwk -t OCT -b 128 >key-aes-128.private
+```
+
+JWEs produced with openssl and mbedtls backends are completely interchangeable.
+
+Commandline option|Meaning
+---|---
+-d <loglevel>|Debug verbosity in decimal, eg, -d15
+-e "<cek cipher alg> <payload enc alg>"|Encrypt (default is decrypt), eg, -e "RSA1_5 A128CBC-HS256".  For decrypt, the cipher information comes from the input JWE.
+-k <jwk file>|JWK file to encrypt or decrypt with
+-c|Format the JWE as a linebroken C string
+
+```
+ $ echo -n "plaintext0123456" | ./lws-crypto-jwe -k key-rsa-4096.private -e "RSA1_5 A128CBC-HS256"
+[2018/12/19 16:20:25:6519] USER: LWS JWE example tool
+[2018/12/19 16:20:25:6749] NOTICE: Creating Vhost 'default' (serving disabled), 1 protocols, IPv6 off
+eyJhbGciOiJSU0ExXzUiLCAiZW5jIjoiQTEyOENCQy1IUzI1NiJ9.ivFr7qzx-pQ4V_edbjpdvR9OwWL9KmojPE2rXQM52oLtW0BtnxZu2_ezqhsAelyIcaworgfobs3u4bslXHMFbeJJjPb5xD0fBDe64OYXZH1NpUGTMJh9Ka4CrJ2B3xhxe7EByGAuGqmluqE0Yezj7rhSw7vlr5JAwuOJ8FaGa8aZ8ldki5G5h_S2Furlbjdcw3Rrxk7mCoMHcLoqzfZtggMPwGAMFogCqcwUo7oSLbBeGaa6hpMbfSysugseWdr8TzObQKPM52k6iVAlGwRaOg_qdLMgZiYRhHA6nFKTQd7XBbNY6qAS8sPuj7Zz344tF3RSfJ0zX_telG71sOtVv5fMpeDU-eCdpOWlCBfu6J6FQfAFu6SJryM4ajGOif09CwFI5qUQ33SOfQfS_M3nqSyd6Vu5M4lsDrb5wK7_XX5gqUwvI9wicf_8WWR-CQomRF-JvEASnA2SIf8QqYfa8R2rP9q6Md4vwO4EZrtxIsMDPsH-4ZEFu7vDjyy09QfIWWsnEb8-UgpVXensgt2m_2bZ76r1VB8-0nZLMwMyEhaH2wra9vX2FWao5UkmNJ7ht300f4_V6QzMFoePpwCvsufWBW6jcQLB-frCWe6uitWaZHEB4LxmNPKzQSz4QwwTKhpF1jNn8Xh1-w1m-2h0gj-oe-S8QBwPveqhPI1p2fI.snuhUTXHNu5mJ6dEPQqg6g.yl36qC4o0GE4nrquQ2YyCg.Vf0MoT7_kUrZdCNWXhq1DQ
+```
+
+Notice the logging is on stderr, and the output alone on stdout.
+
+You can also pipe the output of the encrypt action directly into the decrypt
+action, eg
+
+```
+ $ echo -n "plaintext0123456" | \
+   ./lws-crypto-jwe -k key-rsa-4096.pub -e "RSA1_5 A128CBC-HS256" | \
+   ./lws-crypto-jwe -k key-rsa-4096.private
+```
+
+prints the plaintext on stdout.
diff --git a/minimal-examples/crypto/minimal-crypto-jwe/key-rsa-4096.private b/minimal-examples/crypto/minimal-crypto-jwe/key-rsa-4096.private
new file mode 100644
index 00000000..10841439
--- /dev/null
+++ b/minimal-examples/crypto/minimal-crypto-jwe/key-rsa-4096.private
@@ -0,0 +1 @@
+{"d":"XcSl3ulvs4OGomu9thRPVQGOstim0PY7CibP_bnCmzjvmGmzb8J4q5AUmJCnZT5TesOzXuXhyG95CxQWsakd9GWHSAinV1QQSLsahaezPULRG1qmo37JqKb9noKkvXguh5XU5np8HjeoeeEkF_XqtCdEo0wHijEjTL9RZar98jmyAmlizoHIY9NnECavs4DZB27onU61B61vGpw-y4xhC9jlZSIwRqIMDzeTcSv8fRKcVYR80ozm2_KwWMpue27rS2EfTQUtsMXuYmnvMAf_DHqA0tNWyD1gpUWYHvlyBh5xnYrWPuXxQBRNesImQdRQl5VMMsuvdtY-uZfIVUdN5CcsB0acronx4UsmVg-Qz-jd1NVW4koZQM9uA4oWiMZg4FEUTQ-UWelHCldg-PYLAazsItmaHPF9LcAPkLkI8jaVS33v-DhSeXHW3Pg3sibtnPhouiSvD84zMtzu1gjFT7vtapMynBeZouqeWYT-BFeu2wzppJcW1YxTQ_Ai80VJSFY__Huw-9r1MOHmDRcEW7x9W97UezWDjrh5Shhh4C6SMYbaf7ouACzFu1i_r8Q06JqKA7aY8i5izKlKA0We9tQKlTF8Fgsneu9gpxFglvZsd1ersiA-MkuP9qTBQpyAf3kJ6HS9GrQUju6r3DExdWDjdvM5Grt8QD7Zkv-qXeE","dp":"M-LFs3T2GI1JxD5LJt2GgV4cMDKbiPKBddLukfG0duUxNp0-6x2LZ0ptxrlHrhxBMMmvCg4GEaujrZdaYWCar6xCnlnkVlOELz4yZ3JBSpS86thJw03xuE7lyeR7usFY4CpSqUQGI_YveITuFeoh4YjwdKDuqPhOpDI-34ptgU93dlBRS9nnQFTiVoUdP4bhGTKOpULTiLgPXHQxQR5rfiGVD9AIwqHvMdBQ0hxQBKEt37PbRWK_eTzMslHZGWNfbg8ipwJxisvHyUn0c1X3Uelw8BRyvNVCNovNDeCj-R7kFkMvriMd_sqGVy1Go46WZ2wMkUJHkvmYk0gDlhnTGQ","dq":"qO89nQEJfdkaDtGGyD-sQE2Mm8p_PIPSpCmgMfpl8zgSOb4P9iqXBgpHyS7w10uY_UHt8KW6pY7ozy0y4Gu_f4Wk_rcXiYYdbuIhlFl0_nLI2mfFPGxr1xC64zfjjEaBr4zIJr_YzhvTpjZFtIdSAH5VG5Tv-2yUtCC2DnKnU2kzEkgUeSI6LHOEVhXqup7C0Kjiv9FJsLR0hiqwH4oLziqH7EVqVDvJI3yL1lhqoLKjAu1ogTDgH7hzSrqVhttnpwL8rDcgbtY6Q8C2csdN3Jt1ucgtGy-Yzgqf_QIULP3CRlqzDTvHrMe2A9cNAQ4dNsCbNAjW_MxxGKKWuWXAMQ","e":"AQAB","kid":"my kid","kty":"RSA","n":"2_YjG_D1sOWJxs6cohikupHf5WJfWSFfSCrnNZ7WR7AyTLnKZAF4VKyimMeJTLYYwCAXMDD5XmkF8VluI4O-hASUIJ7F9eDg3vO7nPwtkWa9lkqt-QyQZ_PjiOGpwetBLzrsaXsC9PvdVzrKXnjeNPsmmbC_Fx2cUn4H_9H_WfXi01VR75XFTBtxTrDY7hmpZHuFCFUOMCW9siTZRk9339Y6ORBznBs4jFbkGI1Pmc3op0o5f8S1gus9L81W5uyUrxfd-CkmJ6eWE8I36cfzI6irN2bhVhR_NXERUtS0QOEeJYlRJXqfYkxTMVlsXPl6zbYt__ZYLC6ZiUTCc6K2KmfGh7fihWbao4dyQW3Mq4kClhpIT0O01Y0r7sR1j4jTnFNqbmtPSl9lEMrfiUHfOLqRJo3qizQ-b6HLCDty1otFz8Q8gg0rD3copQ_zFrcTGwJGAv2Absraj7kp9EJXBqneCJ3dlRO8rzx7KB9Dsj-ygh3kZaubkPCeT1v4l_VUY2iGnK4vzIGKM7j56DQ97ZAi1Bb0y6GYSbrWB2_z0DKJu0fiU-NscbKplR68vgppUM6_iogrk48JEZg_kkTymniqbT3g7J_WeoZSx1Uu8ZHI3ysIFfUtFscOa2SJGlj1ds-lfk6Oqac_I8ahRqQeyVAEisZPmYIGSJajbJopJ4s","p":"_V4CwEjRd8Hv9-ncqGdB_vtReTIuHSWQzSx4al15J3VxvPFI2kxicNeQKyq3OAVT2kmCmUP3ETgCdwuKIgw_QbEc8qNxtS_KpM_KsuTe9a5jrQKpt8ctYhzELZfr_sy9UzUGJzr8glLjJ1IDX4x6_JAqYB_NhttP6bzgu5Dt-DKtRPNO1qZtfhrLIgmltpC2M6-AlAv-dyHSHck2VJIL84Hwk4FulozEYxop0dKuZdfM5Z1dZM8-ICo62O0zUKzoWxKmQcB9_gDZsxYaO6xZ9BLmaW6-WcPSEI6YDnPk8ptnk_Kbyc4kPW4Z3ASczxjaewBmfl2_lwkqkndFVptAeQ","q":"3j9DR6ZpKC3WrshSrxXFYAuT19Rlf6qQ_9uD_Fq7dIpTjCZdl01695Qx7UmujKoetutL3RMCpeRdZR-gCLVh8aMxpMuIc5fHC6HbhsdF-I7GoqO0DEJ6coS3n5Ey4EXL5uoLh4C3l67wBKfLmPW28bxxG2QAP59jncWXkrBQm_qbS5Qon8r7wj0tejG_tGdsPjhsFc9KdnkkBucT6MiEVpzpdwDlsn7bHpMsyPlNyc0fj5qYmRB-DN7rv5varaisBaVT0mLQdwKjBDVqNVnU2m5azPhY-2txvihHaI5_cLIsLLaqKMbB17UxGumuT_o8S03_h8-1syO3Ay87y9pPIw","qi":"JY2uUek6wPrp4fPcInX_5WdNlhyghcGVEvlqxs9iOEUeCtUc6d42n9tgiImMu605dQaigvNaH5y1pwDpLlmxUk0nOUVxqo9mv0Uw8WNXB88FyDb0fPbewLpn4Fskb8Umv6_OymJ1W814DRG-jq3sI5DsB7AjtqJQ22nP2Vs1bIrx5fUxuScwrMsWSrrjAx4Kr8-5eeSDqE-_c7DPZ_zSPYDoHaMeR2pZfNAq3mEbxp8jMukzh77rYZ3ffQEA6AyxFSCSCrxVozhP4ypQ0jAkXVWOlj4nuV6briIqlL3ZboydwsIolRwaPSgH6-bw03XS6Hb9DA0KHJKLun94N9n5kw","use":"enc"}
diff --git a/minimal-examples/crypto/minimal-crypto-jwe/key-rsa-4096.pub b/minimal-examples/crypto/minimal-crypto-jwe/key-rsa-4096.pub
new file mode 100644
index 00000000..e2bd85c2
--- /dev/null
+++ b/minimal-examples/crypto/minimal-crypto-jwe/key-rsa-4096.pub
@@ -0,0 +1 @@
+{"e":"AQAB","kid":"my kid","kty":"RSA","n":"2_YjG_D1sOWJxs6cohikupHf5WJfWSFfSCrnNZ7WR7AyTLnKZAF4VKyimMeJTLYYwCAXMDD5XmkF8VluI4O-hASUIJ7F9eDg3vO7nPwtkWa9lkqt-QyQZ_PjiOGpwetBLzrsaXsC9PvdVzrKXnjeNPsmmbC_Fx2cUn4H_9H_WfXi01VR75XFTBtxTrDY7hmpZHuFCFUOMCW9siTZRk9339Y6ORBznBs4jFbkGI1Pmc3op0o5f8S1gus9L81W5uyUrxfd-CkmJ6eWE8I36cfzI6irN2bhVhR_NXERUtS0QOEeJYlRJXqfYkxTMVlsXPl6zbYt__ZYLC6ZiUTCc6K2KmfGh7fihWbao4dyQW3Mq4kClhpIT0O01Y0r7sR1j4jTnFNqbmtPSl9lEMrfiUHfOLqRJo3qizQ-b6HLCDty1otFz8Q8gg0rD3copQ_zFrcTGwJGAv2Absraj7kp9EJXBqneCJ3dlRO8rzx7KB9Dsj-ygh3kZaubkPCeT1v4l_VUY2iGnK4vzIGKM7j56DQ97ZAi1Bb0y6GYSbrWB2_z0DKJu0fiU-NscbKplR68vgppUM6_iogrk48JEZg_kkTymniqbT3g7J_WeoZSx1Uu8ZHI3ysIFfUtFscOa2SJGlj1ds-lfk6Oqac_I8ahRqQeyVAEisZPmYIGSJajbJopJ4s"}
diff --git a/minimal-examples/crypto/minimal-crypto-jwe/main.c b/minimal-examples/crypto/minimal-crypto-jwe/main.c
new file mode 100644
index 00000000..e3e28551
--- /dev/null
+++ b/minimal-examples/crypto/minimal-crypto-jwe/main.c
@@ -0,0 +1,264 @@
+/*
+ * lws-crypto-jwe
+ *
+ * Copyright (C) 2018 Andy Green <andy@warmcat.com>
+ *
+ * This file is made available under the Creative Commons CC0 1.0
+ * Universal Public Domain Dedication.
+ */
+
+#include <libwebsockets.h>
+#include <sys/types.h>
+#include <fcntl.h>
+
+/*
+ * handles escapes and line wrapping suitable for use
+ * defining a C char array ( -c option )
+ */
+
+static void
+format_c(const char *key)
+{
+	const char *k = key;
+	int seq = 0;
+
+	while (*k) {
+		if (*k == '{') {
+			putchar('\"');
+			putchar('{');
+			putchar('\"');
+			putchar('\n');
+			putchar('\t');
+			putchar('\"');
+			k++;
+			seq = 0;
+			continue;
+		}
+		if (*k == '}') {
+			putchar('\"');
+			putchar('\n');
+			putchar('\"');
+			putchar('}');
+			putchar('\"');
+			putchar('\n');
+			k++;
+			seq = 0;
+			continue;
+		}
+		if (*k == '\"') {
+			putchar('\\');
+			putchar('\"');
+			seq += 2;
+			k++;
+			continue;
+		}
+		if (*k == ',') {
+			putchar(',');
+			putchar('\"');
+			putchar('\n');
+			putchar('\t');
+			putchar('\"');
+			k++;
+			seq = 0;
+			continue;
+		}
+		putchar(*k);
+		seq++;
+		if (seq >= 60) {
+			putchar('\"');
+			putchar('\n');
+			putchar('\t');
+			putchar(' ');
+			putchar('\"');
+			seq = 1;
+		}
+		k++;
+	}
+}
+
+int main(int argc, const char **argv)
+{
+	int n, enc = 0, result = 0,
+	    logs = LLL_USER | LLL_ERR | LLL_WARN | LLL_NOTICE;
+	char temp[32768], compact[32768], *in;
+	struct lws_context_creation_info info;
+	int temp_len = sizeof(temp);
+	struct lws_context *context;
+	struct lws_jose jose;
+	struct lws_jwk jwk;
+	struct lws_jws jws;
+	const char *p;
+
+	if ((p = lws_cmdline_option(argc, argv, "-d")))
+		logs = atoi(p);
+
+	lws_set_log_level(logs, NULL);
+	lwsl_user("LWS JWE example tool\n");
+
+	memset(&info, 0, sizeof info); /* otherwise uninitialized garbage */
+	info.port = CONTEXT_PORT_NO_LISTEN;
+	info.options = 0;
+
+	context = lws_create_context(&info);
+	if (!context) {
+		lwsl_err("lws init failed\n");
+		return 1;
+	}
+
+	lws_jose_init(&jose);
+	lws_jws_init(&jws, &jwk, context);
+
+	/* if encrypting, set the ciphers */
+
+	if ((p = lws_cmdline_option(argc, argv, "-e"))) {
+		char *sp = strchr(p, ' ');
+
+		if (!sp) {
+			lwsl_err("format: -e \"<cek cipher alg> "
+				 "<payload enc alg>\", eg, "
+				 "-e \"RSA1_5 A128CBC-HS256\"\n");
+
+			return 1;
+		}
+		*sp = '\0';
+		if (lws_gencrypto_jwe_alg_to_definition(p, &jose.alg)) {
+			lwsl_err("Unknown cipher alg %s\n", p);
+			return 1;
+		}
+		if (lws_gencrypto_jwe_enc_to_definition(sp + 1, &jose.enc_alg)) {
+			lwsl_err("Unknown payload enc alg %s\n", sp + 1);
+			return 1;
+		}
+
+		/* create JOSE header, also needed for output */
+
+		if (lws_jws_alloc_element(&jws.map, LJWS_JOSE,
+					  lws_concat_temp(temp, temp_len),
+					  &temp_len, strlen(p) +
+					  strlen(sp + 1) + 16, 0)) {
+			lwsl_err("%s: temp space too small\n", __func__);
+			return 1;
+		}
+
+		jws.map.len[LJWS_JOSE] = lws_snprintf(
+				(char *)jws.map.buf[LJWS_JOSE], temp_len,
+				"{\"alg\":\"%s\",\"enc\":\"%s\"}", p, sp + 1);
+
+		enc = 1;
+	}
+
+	in = lws_concat_temp(temp, temp_len);
+	n = read(0, in, temp_len);
+	if (n < 0) {
+		lwsl_err("Problem reading from stdin\n");
+		return 1;
+	}
+	temp_len -= n;
+
+	/* grab the key */
+
+	if ((p = lws_cmdline_option(argc, argv, "-k"))) {
+		if (lws_jwk_load(&jwk, p, NULL, NULL)) {
+			lwsl_err("%s: problem loading JWK %s\n", __func__, p);
+
+			return 1;
+		}
+	} else {
+		lwsl_err("-k <jwk file> is required\n");
+
+		return 1;
+	}
+
+	if (enc) {
+
+		/* point CTXT to the plaintext we read from stdin */
+
+		jws.map.buf[LJWE_CTXT] = in;
+		jws.map.len[LJWE_CTXT] = n;
+
+		/*
+		 * Create a random CEK and set EKEY to it
+		 * CEK size is determined by hash / hmac size
+		 */
+
+		n = lws_gencrypto_bits_to_bytes(jose.enc_alg->keybits_fixed);
+		if (lws_jws_randomize_element(context, &jws.map, LJWE_EKEY,
+					      lws_concat_temp(temp, temp_len),
+					      &temp_len, n,
+					      LWS_JWE_LIMIT_KEY_ELEMENT_BYTES)) {
+			lwsl_err("Problem getting random\n");
+			goto bail1;
+		}
+
+		/* perform the encryption of the CEK and the plaintext */
+
+		n = lws_jwe_encrypt(&jose, &jws,
+				    lws_concat_temp(temp, temp_len),
+				    &temp_len);
+		if (n < 0) {
+			lwsl_err("%s: lws_jwe_encrypt failed\n", __func__);
+			goto bail1;
+		}
+
+		/* output the JWE in compact form */
+
+		n = lws_jwe_write_compact(&jose, &jws, compact, sizeof(compact));
+		if (n < 0) {
+			lwsl_err("%s: lws_jwe_write_compact failed: %d\n",
+				 __func__, n);
+			goto bail1;
+		}
+
+		if (lws_cmdline_option(argc, argv, "-c"))
+			format_c(compact);
+		else
+			if (write(1, compact, strlen(compact)) < 0) {
+				lwsl_err("Write stdout failed\n");
+				goto bail1;
+			}
+	} else {
+
+		/*
+		 * converts a compact serialization to b64 + decoded maps
+		 * held in jws
+		 */
+		if (lws_jws_compact_decode(in, n, &jws.map, &jws.map_b64,
+					   lws_concat_temp(temp, temp_len),
+					   &temp_len) != 5) {
+			lwsl_err("%s: lws_jws_compact_decode failed\n",
+				 __func__);
+			goto bail1;
+		}
+
+		/*
+		 * Do the crypto according to what we parsed into the jose
+		 * (information on the ciphers) and the jws (plaintext and
+		 * signature info)
+		 */
+
+		n = lws_jwe_auth_and_decrypt(&jose, &jws);
+		if (n < 0) {
+			lwsl_err("%s: lws_jwe_auth_and_decrypt failed\n",
+				 __func__);
+			goto bail1;
+		}
+
+		/* if it's valid, dump the plaintext and return 0 */
+
+		if (write(1, jws.map.buf[LJWE_CTXT], jws.map.len[LJWE_CTXT]) < 0) {
+			lwsl_err("Write stdout failed\n");
+			goto bail1;
+		}
+	}
+
+	result = 0;
+
+bail1:
+
+	lws_jws_destroy(&jws);
+	lws_jwk_destroy(&jwk);
+
+	lws_context_destroy(context);
+
+	return result;
+}
diff --git a/minimal-examples/crypto/minimal-crypto-jwk/CMakeLists.txt b/minimal-examples/crypto/minimal-crypto-jwk/CMakeLists.txt
new file mode 100644
index 00000000..fb8c3e37
--- /dev/null
+++ b/minimal-examples/crypto/minimal-crypto-jwk/CMakeLists.txt
@@ -0,0 +1,77 @@
+cmake_minimum_required(VERSION 2.8)
+include(CheckCSourceCompiles)
+
+set(SAMP lws-crypto-jwk)
+set(SRCS main.c)
+
+# If we are being built as part of lws, confirm current build config supports
+# reqconfig, else skip building ourselves.
+#
+# If we are being built externally, confirm installed lws was configured to
+# support reqconfig, else error out with a helpful message about the problem.
+#
+MACRO(require_lws_config reqconfig _val result)
+
+	if (DEFINED ${reqconfig})
+	if (${reqconfig})
+		set (rq 1)
+	else()
+		set (rq 0)
+	endif()
+	else()
+		set(rq 0)
+	endif()
+
+	if (${_val} EQUAL ${rq})
+		set(SAME 1)
+	else()
+		set(SAME 0)
+	endif()
+
+	if (LWS_WITH_MINIMAL_EXAMPLES AND NOT ${SAME})
+		if (${_val})
+			message("${SAMP}: skipping as lws being built without ${reqconfig}")
+		else()
+			message("${SAMP}: skipping as lws built with ${reqconfig}")
+		endif()
+		set(${result} 0)
+	else()
+		if (LWS_WITH_MINIMAL_EXAMPLES)
+			set(MET ${SAME})
+		else()
+			CHECK_C_SOURCE_COMPILES("#include <libwebsockets.h>\nint main(void) {\n#if defined(${reqconfig})\n return 0;\n#else\n fail;\n#endif\n return 0;\n}\n" HAS_${reqconfig})
+			if (NOT DEFINED HAS_${reqconfig} OR NOT HAS_${reqconfig})
+				set(HAS_${reqconfig} 0)
+			else()
+				set(HAS_${reqconfig} 1)
+			endif()
+			if ((HAS_${reqconfig} AND ${_val}) OR (NOT HAS_${reqconfig} AND NOT ${_val}))
+				set(MET 1)
+			else()
+				set(MET 0)
+			endif()
+		endif()
+		if (NOT MET)
+			if (${_val})
+				message(FATAL_ERROR "This project requires lws must have been configured with ${reqconfig}")
+			else()
+				message(FATAL_ERROR "Lws configuration of ${reqconfig} is incompatible with this project")
+			endif()
+		endif()
+	endif()
+ENDMACRO()
+
+set(requirements 1)
+require_lws_config(LWS_WITH_JOSE 1 requirements)
+
+if (requirements)
+
+	add_executable(${SAMP} ${SRCS})
+
+	if (websockets_shared)
+		target_link_libraries(${SAMP} websockets_shared)
+		add_dependencies(${SAMP} websockets_shared)
+	else()
+		target_link_libraries(${SAMP} websockets)
+	endif()
+endif()
diff --git a/minimal-examples/crypto/minimal-crypto-jwk/README.md b/minimal-examples/crypto/minimal-crypto-jwk/README.md
new file mode 100644
index 00000000..6807746c
--- /dev/null
+++ b/minimal-examples/crypto/minimal-crypto-jwk/README.md
@@ -0,0 +1,51 @@
+# lws minimal example for JWK
+
+Demonstrates how to generate and format any kind of supported new random JWK keys.
+
+The full private key is output to stdout, a version of the key with the private
+part removed and some metadata adapted can be saved to a file at the same time
+using `--public <file>`.  In the public form, `key_ops` and `use` elements are
+adjusted to remove activities that require a private key.
+
+Key elements are output in strict RFC7638 lexicographic order as required by
+some applications.
+
+Keys produced with openssl and mbedtls backends are completely interchangeable.
+
+## build
+
+```
+ $ cmake . && make
+```
+
+## usage
+
+Commandline option|Meaning
+---|---
+-d <loglevel>|Debug verbosity in decimal, eg, -d15
+-t <type>|RSA, OCT or EC
+-b <bits>|For RSA and OCT, key size in bits
+-v <curve>|For EC keys, the curve, eg, "P-384"... this implies the key bits
+--kid "ID string"|Key identity string
+--use "use[ use]"|Key use restriction (mutually exclusive with --key-ops): sig, enc
+--key-ops "op[ op]"|Key valid operations (mutually exclusive with --use): sign, verify, encrypt, decrypt, wrapKey, unwrapKey, deriveKey, deriveBits
+-c|Format the jwk as a linebroken C string
+--public <filepath>|Only output the full, private key, not the public version first
+
+For legibility the example uses -c, however this
+
+```
+ $ ./lws-crypto-jwk -t EC -v P-256 --key-ops "sign verify" --public mykey.pub
+[2018/12/18 20:19:29:6972] USER: LWS JWK example
+[2018/12/18 20:19:29:7200] NOTICE: Creating Vhost 'default' (serving disabled), 1 protocols, IPv6 off
+[2018/12/18 20:19:29:7251] NOTICE: lws_jwk_generate: generating ECDSA key on curve P-256
+{"crv":"P-256","d":"eMKM_S4BTL2aiebZLqvxglufV2YX4b3_32DesgEUOaM","key_ops":["sign","verify"],"kty":"EC","x":"OWauiGGtJ60ZegtqlwETQlmO1exTZdWbT2VbUs4a1hg","y":"g_eNOlqPecbguVQArL6Fd4T5xZthBgipNCBypXubPos"}
+```
+
+The output in `mykey.pub` is:
+
+```
+{"crv":"P-256","key_ops":["verify"],"kty":"EC","x":"OWauiGGtJ60ZegtqlwETQlmO1exTZdWbT2VbUs4a1hg","y":"g_eNOlqPecbguVQArL6Fd4T5xZthBgipNCBypXubPos"}
+```
+
+Notice the logging goes out on stderr, the key data goes on stdout.
diff --git a/minimal-examples/crypto/minimal-crypto-jwk/main.c b/minimal-examples/crypto/minimal-crypto-jwk/main.c
new file mode 100644
index 00000000..330898f4
--- /dev/null
+++ b/minimal-examples/crypto/minimal-crypto-jwk/main.c
@@ -0,0 +1,187 @@
+/*
+ * lws-crypto-jwk
+ *
+ * Copyright (C) 2018 Andy Green <andy@warmcat.com>
+ *
+ * This file is made available under the Creative Commons CC0 1.0
+ * Universal Public Domain Dedication.
+ */
+
+#include <libwebsockets.h>
+#include <sys/types.h>
+#include <fcntl.h>
+
+/*
+ * handles escapes and line wrapping suitable for use
+ * defining a C char array ( -c option )
+ */
+
+static int
+format_c(int fd, const char *key)
+{
+	const char *k = key;
+	int seq = 0;
+
+	while (*k) {
+		if (*k == '{') {
+			if (write(fd, "\"{\"\n\t\"", 6) < 6)
+				return -1;
+			k++;
+			seq = 0;
+			continue;
+		}
+		if (*k == '}') {
+			if (write(fd, "\"\n\"}\"\n", 6) < 6)
+				return -1;
+			k++;
+			seq = 0;
+			continue;
+		}
+		if (*k == '\"') {
+			if (write(fd, "\\\"", 2) < 2)
+				return -1;
+			seq += 2;
+			k++;
+			continue;
+		}
+		if (*k == ',') {
+			if (write(fd, ",\"\n\t\"", 5) < 5)
+				return -1;
+			k++;
+			seq = 0;
+			continue;
+		}
+		if (write(fd, k, 1) < 1)
+			return -1;
+		seq++;
+		if (seq >= 60) {
+			if (write(fd, "\"\n\t \"", 5) < 5)
+				return -1;
+			seq = 1;
+		}
+		k++;
+	}
+
+	return 0;
+}
+
+int main(int argc, const char **argv)
+{
+	struct lws_context_creation_info info;
+	struct lws_context *context;
+	const char *p;
+	int result = 0, logs = LLL_USER | LLL_ERR | LLL_WARN | LLL_NOTICE;
+	int bits = 4096;
+	enum lws_gencrypto_kty kty = LWS_GENCRYPTO_KTY_RSA;
+	struct lws_jwk jwk;
+	char key[32768];
+	const char *curve = "P-256";
+
+	if ((p = lws_cmdline_option(argc, argv, "-d")))
+		logs = atoi(p);
+
+	lws_set_log_level(logs, NULL);
+	lwsl_user("LWS JWK example\n");
+
+	if ((p = lws_cmdline_option(argc, argv, "-b")))
+		bits = atoi(p);
+
+	if ((p = lws_cmdline_option(argc, argv, "-t"))) {
+		if (!strcmp(p, "RSA"))
+			kty = LWS_GENCRYPTO_KTY_RSA;
+		else
+			if (!strcmp(p, "OCT"))
+				kty = LWS_GENCRYPTO_KTY_OCT;
+			else
+				if (!strcmp(p, "EC"))
+					kty = LWS_GENCRYPTO_KTY_EC;
+				else {
+					lwsl_err("Unknown key type (must be "
+						 "OCT, RSA or EC)\n");
+
+					return 1;
+				}
+	}
+
+	memset(&info, 0, sizeof info); /* otherwise uninitialized garbage */
+	info.port = CONTEXT_PORT_NO_LISTEN;
+	info.options = 0;
+
+	context = lws_create_context(&info);
+	if (!context) {
+		lwsl_err("lws init failed\n");
+		return 1;
+	}
+
+	if ((p = lws_cmdline_option(argc, argv, "-v")))
+		curve = p;
+
+	if (lws_jwk_generate(context, &jwk, kty, bits, curve)) {
+		lwsl_err("lws_jwk_generate failed\n");
+
+		return 1;
+	}
+
+	if ((p = lws_cmdline_option(argc, argv, "--kid")))
+		lws_jwk_strdup_meta(&jwk, JWK_META_KID, p, strlen(p));
+
+	if ((p = lws_cmdline_option(argc, argv, "--use")))
+		lws_jwk_strdup_meta(&jwk, JWK_META_USE, p, strlen(p));
+
+	if ((p = lws_cmdline_option(argc, argv, "--key-ops")))
+		lws_jwk_strdup_meta(&jwk, JWK_META_KEY_OPS, p, strlen(p));
+
+	if ((p = lws_cmdline_option(argc, argv, "--public")) &&
+	    kty != LWS_GENCRYPTO_KTY_OCT) {
+
+		int fd;
+
+		/* public version */
+
+		if (lws_jwk_export(&jwk, 0, key, sizeof(key)) < 0) {
+			lwsl_err("lws_jwk_export failed\n");
+
+			return 1;
+		}
+
+		fd = open(p, LWS_O_CREAT | LWS_O_TRUNC | LWS_O_WRONLY, 0600);
+		if (fd < 0) {
+			lwsl_err("Can't open public key file %s\n", p);
+			return 1;
+		}
+
+		if (lws_cmdline_option(argc, argv, "-c"))
+			format_c(fd, key);
+		else {
+			if (write(fd, key, strlen(key)) < 0) {
+				lwsl_err("Write public failed\n");
+				return 1;
+			}
+		}
+
+		close(fd);
+	}
+
+	/* private version */
+
+	if (lws_jwk_export(&jwk, 1, key, sizeof(key)) < 0) {
+		lwsl_err("lws_jwk_export failed\n");
+
+		return 1;
+	}
+
+	if (lws_cmdline_option(argc, argv, "-c")) {
+		if (format_c(1, key) < 0)
+			return 1;
+	} else
+		if (write(1, key, strlen(key)) < 0) {
+			lwsl_err("Write stdout failed\n");
+			return 1;
+		}
+
+	lws_jwk_destroy(&jwk);
+
+	lws_context_destroy(context);
+
+	return result;
+}
diff --git a/minimal-examples/crypto/minimal-crypto-jws/CMakeLists.txt b/minimal-examples/crypto/minimal-crypto-jws/CMakeLists.txt
new file mode 100644
index 00000000..ddf95796
--- /dev/null
+++ b/minimal-examples/crypto/minimal-crypto-jws/CMakeLists.txt
@@ -0,0 +1,77 @@
+cmake_minimum_required(VERSION 2.8)
+include(CheckCSourceCompiles)
+
+set(SAMP lws-crypto-jws)
+set(SRCS main.c)
+
+# If we are being built as part of lws, confirm current build config supports
+# reqconfig, else skip building ourselves.
+#
+# If we are being built externally, confirm installed lws was configured to
+# support reqconfig, else error out with a helpful message about the problem.
+#
+MACRO(require_lws_config reqconfig _val result)
+
+	if (DEFINED ${reqconfig})
+	if (${reqconfig})
+		set (rq 1)
+	else()
+		set (rq 0)
+	endif()
+	else()
+		set(rq 0)
+	endif()
+
+	if (${_val} EQUAL ${rq})
+		set(SAME 1)
+	else()
+		set(SAME 0)
+	endif()
+
+	if (LWS_WITH_MINIMAL_EXAMPLES AND NOT ${SAME})
+		if (${_val})
+			message("${SAMP}: skipping as lws being built without ${reqconfig}")
+		else()
+			message("${SAMP}: skipping as lws built with ${reqconfig}")
+		endif()
+		set(${result} 0)
+	else()
+		if (LWS_WITH_MINIMAL_EXAMPLES)
+			set(MET ${SAME})
+		else()
+			CHECK_C_SOURCE_COMPILES("#include <libwebsockets.h>\nint main(void) {\n#if defined(${reqconfig})\n return 0;\n#else\n fail;\n#endif\n return 0;\n}\n" HAS_${reqconfig})
+			if (NOT DEFINED HAS_${reqconfig} OR NOT HAS_${reqconfig})
+				set(HAS_${reqconfig} 0)
+			else()
+				set(HAS_${reqconfig} 1)
+			endif()
+			if ((HAS_${reqconfig} AND ${_val}) OR (NOT HAS_${reqconfig} AND NOT ${_val}))
+				set(MET 1)
+			else()
+				set(MET 0)
+			endif()
+		endif()
+		if (NOT MET)
+			if (${_val})
+				message(FATAL_ERROR "This project requires lws must have been configured with ${reqconfig}")
+			else()
+				message(FATAL_ERROR "Lws configuration of ${reqconfig} is incompatible with this project")
+			endif()
+		endif()
+	endif()
+ENDMACRO()
+
+set(requirements 1)
+require_lws_config(LWS_WITH_JOSE 1 requirements)
+
+if (requirements)
+
+	add_executable(${SAMP} ${SRCS})
+
+	if (websockets_shared)
+		target_link_libraries(${SAMP} websockets_shared)
+		add_dependencies(${SAMP} websockets_shared)
+	else()
+		target_link_libraries(${SAMP} websockets)
+	endif()
+endif()
diff --git a/minimal-examples/crypto/minimal-crypto-jws/README.md b/minimal-examples/crypto/minimal-crypto-jws/README.md
new file mode 100644
index 00000000..d2c426d0
--- /dev/null
+++ b/minimal-examples/crypto/minimal-crypto-jws/README.md
@@ -0,0 +1,59 @@
+# lws minimal example for JWS
+
+Demonstrates how to sign and verify using compact JWS and JWK, providing a
+commandline tool for signing and verifying stdin.
+
+## build
+
+```
+ $ cmake . && make
+```
+
+## usage
+
+Stdin is either the plaintext (if signing) or compact JWS (if verifying).
+
+Stdout is either the JWE (if encrypting) or plaintext (if decrypting).
+
+You must pass a private or public key JWK file in the -k option if encrypting,
+and must pass a private key JWK file in the -k option if decrypting.  To be
+clear, for asymmetric keys the public part of the key is required to encrypt,
+and the private part required to decrypt.
+
+For convenience, a pair of public and private keys are provided,
+`key-rsa-4096.private` and `key-rsa-4096.pub`, these were produced with just
+
+```
+ $ lws-crypto-jwk -t RSA -b 4096 --public key-rsa-4096.pub >key-rsa-4096.private
+```
+
+Similar keys for EC modes may be produced with
+
+```
+ $ lws-crypto-jwk -t EC -v P-256 --public key-ecdh-p-256.pub >key-ecdh-p-256.private
+```
+
+JWSs produced with openssl and mbedtls backends are completely interchangeable.
+
+Commandline option|Meaning
+---|---
+-d <loglevel>|Debug verbosity in decimal, eg, -d15
+-s "<signature alg>"|Sign (default is verify), eg, -e "ES256".  For verify, the cipher information comes from the input JWS.
+-k <jwk file>|JWK file to sign or verify with... sign requires the key has its private part
+-c|Format the JWE as a linebroken C string
+
+```
+ $ echo -n "plaintext0123456" | ./lws-crypto-jws -s "ES256" -k ec-p256.private
+[2018/12/19 16:20:25:6519] USER: LWS JWE example tool
+[2018/12/19 16:20:25:6749] NOTICE: Creating Vhost 'default' (serving disabled), 1 protocols, IPv6 off
+eyJhbGciOiJSU0ExXzUiLCAiZW5jIjoiQTEyOENCQy1IUzI1NiJ9.ivFr7qzx-pQ4V_edbjpdvR9OwWL9KmojPE2rXQM52oLtW0BtnxZu2_ezqhsAelyIcaworgfobs3u4bslXHMFbeJJjPb5xD0fBDe64OYXZH1NpUGTMJh9Ka4CrJ2B3xhxe7EByGAuGqmluqE0Yezj7rhSw7vlr5JAwuOJ8FaGa8aZ8ldki5G5h_S2Furlbjdcw3Rrxk7mCoMHcLoqzfZtggMPwGAMFogCqcwUo7oSLbBeGaa6hpMbfSysugseWdr8TzObQKPM52k6iVAlGwRaOg_qdLMgZiYRhHA6nFKTQd7XBbNY6qAS8sPuj7Zz344tF3RSfJ0zX_telG71sOtVv5fMpeDU-eCdpOWlCBfu6J6FQfAFu6SJryM4ajGOif09CwFI5qUQ33SOfQfS_M3nqSyd6Vu5M4lsDrb5wK7_XX5gqUwvI9wicf_8WWR-CQomRF-JvEASnA2SIf8QqYfa8R2rP9q6Md4vwO4EZrtxIsMDPsH-4ZEFu7vDjyy09QfIWWsnEb8-UgpVXensgt2m_2bZ76r1VB8-0nZLMwMyEhaH2wra9vX2FWao5UkmNJ7ht300f4_V6QzMFoePpwCvsufWBW6jcQLB-frCWe6uitWaZHEB4LxmNPKzQSz4QwwTKhpF1jNn8Xh1-w1m-2h0gj-oe-S8QBwPveqhPI1p2fI.snuhUTXHNu5mJ6dEPQqg6g.yl36qC4o0GE4nrquQ2YyCg.Vf0MoT7_kUrZdCNWXhq1DQ
+```
+
+Notice the logging is on stderr, and the output alone on stdout.
+
+When signing, the compact representation of the JWS is output on stdout.
+
+When verifying, if the signature is valid the plaintext is output on stdout
+and the tool exits with a 0 exit code.  Otherwise nothing is output on stdout
+and it exits with a nonzero exit code.
+
diff --git a/minimal-examples/crypto/minimal-crypto-jws/main.c b/minimal-examples/crypto/minimal-crypto-jws/main.c
new file mode 100644
index 00000000..8fd47c22
--- /dev/null
+++ b/minimal-examples/crypto/minimal-crypto-jws/main.c
@@ -0,0 +1,185 @@
+/*
+ * lws-crypto-jws
+ *
+ * Copyright (C) 2018 Andy Green <andy@warmcat.com>
+ *
+ * This file is made available under the Creative Commons CC0 1.0
+ * Universal Public Domain Dedication.
+ */
+
+#include <libwebsockets.h>
+#include <sys/types.h>
+#include <fcntl.h>
+
+
+int main(int argc, const char **argv)
+{
+	int n, sign = 0, result = 0,
+	    logs = LLL_USER | LLL_ERR | LLL_WARN | LLL_NOTICE;
+	char temp[32768], compact[32768], *in;
+	struct lws_context_creation_info info;
+	struct lws_jws_compact_map map;
+	int temp_len = sizeof(temp);
+	struct lws_context *context;
+	struct lws_jose jose;
+	struct lws_jwk jwk;
+	struct lws_jws jws;
+	const char *p;
+
+	if ((p = lws_cmdline_option(argc, argv, "-d")))
+		logs = atoi(p);
+
+	lws_set_log_level(logs, NULL);
+	lwsl_user("LWS JWS example tool\n");
+
+	memset(&info, 0, sizeof info); /* otherwise uninitialized garbage */
+	info.port = CONTEXT_PORT_NO_LISTEN;
+	info.options = 0;
+
+	context = lws_create_context(&info);
+	if (!context) {
+		lwsl_err("lws init failed\n");
+		return 1;
+	}
+
+	lws_jose_init(&jose);
+	lws_jws_init(&jws, &jwk, context);
+
+	/* if signing, set the ciphers */
+
+	if ((p = lws_cmdline_option(argc, argv, "-s"))) {
+
+		if (lws_gencrypto_jws_alg_to_definition(p, &jose.alg)) {
+			lwsl_err("format: -s \"<jws cipher alg>\", eg, "
+				 "-e \"RS256\"\n");
+
+			return 1;
+		}
+
+		/* create JOSE header, also needed for output */
+
+		if (lws_jws_alloc_element(&jws.map, LJWS_JOSE,
+				      lws_concat_temp(temp, temp_len),
+				      &temp_len, strlen(p) + 10, 0)) {
+			lwsl_err("%s: temp space too small\n", __func__);
+			return 1;
+		}
+
+		jws.map.len[LJWS_JOSE] =
+				lws_snprintf((char *)jws.map.buf[LJWS_JOSE],
+					     temp_len, "{\"alg\":\"%s\"}", p);
+		sign = 1;
+	}
+
+	in = lws_concat_temp(temp, temp_len);
+	n = read(0, in, temp_len);
+	if (n < 0) {
+		lwsl_err("Problem reading from stdin\n");
+		return 1;
+	}
+	temp_len -= n;
+
+	/* grab the key */
+
+	if ((p = lws_cmdline_option(argc, argv, "-k"))) {
+		if (lws_jwk_load(&jwk, p, NULL, NULL)) {
+			lwsl_err("%s: problem loading JWK %s\n", __func__, p);
+
+			return 1;
+		}
+	} else {
+		lwsl_err("-k <jwk file> is required\n");
+
+		return 1;
+	}
+
+	if (sign) {
+
+		/* add the plaintext from stdin to the map and a b64 version */
+
+		jws.map.buf[LJWS_PYLD] = in;
+		jws.map.len[LJWS_PYLD] = n;
+
+		if (lws_jws_encode_b64_element(&jws.map_b64, LJWS_PYLD,
+					       lws_concat_temp(temp, temp_len),
+					       &temp_len, jws.map.buf[LJWS_PYLD],
+					       jws.map.len[LJWS_PYLD]))
+			goto bail1;
+
+		/* add the b64 JOSE header to the b64 map */
+
+		if (lws_jws_encode_b64_element(&jws.map_b64, LJWS_JOSE,
+					       lws_concat_temp(temp, temp_len),
+					       &temp_len, jws.map.buf[LJWS_JOSE],
+					       jws.map.len[LJWS_JOSE]))
+			goto bail1;
+
+		/* prepare the space for the b64 signature in the map */
+
+		if (lws_jws_alloc_element(&jws.map, LJWS_SIG,
+				      lws_concat_temp(temp, temp_len),
+				      &temp_len, lws_base64_size(
+					 LWS_JWE_LIMIT_KEY_ELEMENT_BYTES), 0)) {
+			lwsl_err("%s: temp space too small\n", __func__);
+			goto bail1;
+		}
+
+		/* sign the plaintext */
+
+		n = lws_jws_sign_from_b64(&jose, &jws,
+					  (char *)jws.map_b64.buf[LJWS_SIG],
+					  jws.map_b64.len[LJWS_SIG]);
+		if (n < 0) {
+			lwsl_err("%s: failed signing test packet\n", __func__);
+			goto bail1;
+		}
+		/* set the actual b64 signature size */
+		jws.map_b64.len[LJWS_SIG] = n;
+
+		/* create the compact JWS representation */
+
+		n = lws_jws_write_compact(&jws, compact, sizeof(compact));
+		if (n < 0) {
+			lwsl_notice("%s: write_compact failed\n", __func__);
+			goto bail1;
+		}
+
+		/* dump the compact JWS representation on stdout */
+
+		if (write(1, compact, strlen(compact))  < 0) {
+			lwsl_err("Write stdout failed\n");
+			goto bail1;
+		}
+
+	} else {
+		/* perform the verify directly on the compact representation */
+
+		if (lws_jws_sig_confirm_compact_b64(in,
+				lws_concat_used(temp, temp_len),
+				&map, &jwk, context,
+				lws_concat_temp(temp, temp_len),
+				&temp_len) < 0) {
+			lwsl_notice("%s: confirm rsa sig failed\n", __func__);
+			goto bail1;
+		}
+
+		lwsl_notice("VALID\n");
+
+		/* dump the verifed plaintext and return 0 */
+
+		if (write(1, jws.map.buf[LJWS_PYLD], jws.map.len[LJWS_PYLD]) < 0) {
+			lwsl_err("Write stdout failed\n");
+			goto bail1;
+		}
+	}
+
+	result = 0;
+
+bail1:
+	lws_jws_destroy(&jws);
+	lws_jwk_destroy(&jwk);
+
+	lws_context_destroy(context);
+
+	return result;
+}
diff --git a/minimal-examples/http-server/minimal-http-server-smp/minimal-http-server-smp.c b/minimal-examples/http-server/minimal-http-server-smp/minimal-http-server-smp.c
index 7b687ad9..d6f51b4e 100644
--- a/minimal-examples/http-server/minimal-http-server-smp/minimal-http-server-smp.c
+++ b/minimal-examples/http-server/minimal-http-server-smp/minimal-http-server-smp.c
@@ -91,9 +91,11 @@ int main(int argc, const char **argv)
 	info.mounts = &mount;
 	info.options =
 		LWS_SERVER_OPTION_HTTP_HEADERS_SECURITY_BEST_PRACTICES_ENFORCE;
-	if ((p = lws_cmdline_option(argc, argv, "-t")))
+	if ((p = lws_cmdline_option(argc, argv, "-t"))) {
 		info.count_threads = atoi(p);
-	else
+		if (info.count_threads < 1 || info.count_threads > LWS_MAX_SMP)
+			return 1;
+	} else
 		info.count_threads = COUNT_THREADS;
 
 	if (lws_cmdline_option(argc, argv, "-s")) {
diff --git a/plugins/acme-client/protocol_lws_acme_client.c b/plugins/acme-client/protocol_lws_acme_client.c
index 2e469587..0e70ee09 100644
--- a/plugins/acme-client/protocol_lws_acme_client.c
+++ b/plugins/acme-client/protocol_lws_acme_client.c
@@ -439,7 +439,7 @@ lws_acme_load_create_auth_keys(struct per_vhost_data__lws_acme_client *vhd,
 			  NULL, NULL))
 		return 0;
 
-	vhd->jwk.kty = LWS_GENCRYPTO_KYT_RSA;
+	vhd->jwk.kty = LWS_GENCRYPTO_KTY_RSA;
 	lwsl_notice("Generating ACME %d-bit keypair... "
 		    "will take a little while\n", bits);
 	n = lws_genrsa_new_keypair(vhd->context, &vhd->rsactx, LGRSAM_PKCS1_1_5,
@@ -549,17 +549,19 @@ callback_acme_client(struct lws *wsi, enum lws_callback_reasons reason,
 	     *end = buf + sizeof(buf) - 1, digest[32], *failreason = NULL;
 	const struct lws_protocol_vhost_options *pvo;
 	struct lws_acme_cert_aging_args *caa;
-	const struct lws_jose_jwe_alg *args;
 	struct acme_connection *ac = NULL;
 	struct lws_genhash_ctx hctx;
 	unsigned char **pp, *pend;
 	const char *content_type;
+	struct lws_jose jose;
 	struct lws *cwsi;
 	int n, m;
 
 	if (vhd)
 		ac = vhd->ac;
 
+	lws_jose_init(&jose);
+
 	switch ((int)reason) {
 	case LWS_CALLBACK_PROTOCOL_INIT:
 		vhd = lws_protocol_vh_priv_zalloc(lws_get_vhost(wsi),
@@ -783,12 +785,12 @@ callback_acme_client(struct lws *wsi, enum lws_callback_reasons reason,
 
 			puts(start);
 pkt_add_hdrs:
-			if (lws_gencrypto_jwe_alg_to_definition("RSA1_5", &args)) {
+			if (lws_gencrypto_jwe_alg_to_definition("RSA1_5", &jose.alg)) {
 				ac->len = 0;
 				lwsl_notice("%s: no RSA1_5\n", __func__);
 				goto failed;
 			}
-			ac->len = lws_jwe_create_packet(&vhd->jwk, args,
+			ac->len = lws_jwe_create_packet(&jose, &vhd->jwk,
 							start, p - start,
 							ac->replay_nonce,
 							&ac->buf[LWS_PRE],
diff --git a/plugins/deaddrop/protocol_lws_deaddrop.c b/plugins/deaddrop/protocol_lws_deaddrop.c
index bd12cad6..4d05b1bb 100644
--- a/plugins/deaddrop/protocol_lws_deaddrop.c
+++ b/plugins/deaddrop/protocol_lws_deaddrop.c
@@ -159,7 +159,7 @@ scan_upload_dir(struct vhd_deaddrop *vhd)
 			p += lws_snprintf(p, (filepath + sizeof(filepath)) - p,
 					  "%s/", subdir[m]);
 
-		p += lws_snprintf(p, (filepath + sizeof(filepath)) - p, "%s",
+		lws_snprintf(p, (filepath + sizeof(filepath)) - p, "%s",
 				  de->d_name);
 
 		/* ignore temp files */
@@ -304,12 +304,14 @@ file_upload_cb(void *data, const char *name, const char *filename,
 		if (state == LWS_UFS_CONTENT)
 			break;
 
-		close((int)(long long)pss->fd);
+		if ((int)(long long)pss->fd >= 0)
+			close((int)(long long)pss->fd);
 
 		/* the temp filename without the ~ */
 		lws_strncpy(filename2, pss->filename, sizeof(filename2));
 		filename2[strlen(filename2) - 1] = '\0';
-		rename(pss->filename, filename2);
+		if (rename(pss->filename, filename2) < 0)
+			lwsl_err("%s: unable to rename\n", __func__);
 
 		pss->fd = LWS_INVALID_FILE;
 		pss->response_code = HTTP_STATUS_OK;
diff --git a/plugins/raw-proxy/protocol_lws_raw_proxy.c b/plugins/raw-proxy/protocol_lws_raw_proxy.c
index 8f52e661..bfa8d6d9 100644
--- a/plugins/raw-proxy/protocol_lws_raw_proxy.c
+++ b/plugins/raw-proxy/protocol_lws_raw_proxy.c
@@ -249,7 +249,7 @@ bad_onward:
 
         case LWS_CALLBACK_RAW_PROXY_CLI_ADOPT:
 		lwsl_debug("LWS_CALLBACK_RAW_CLI_ADOPT: pss %p\n", pss);
-		if (conn)
+		if (conn || !pss)
 			break;
 		conn = pss->conn = lws_get_opaque_user_data(wsi);
 		conn->established[ONW] = 1;
@@ -279,6 +279,9 @@ bad_onward:
 	case LWS_CALLBACK_RAW_PROXY_CLI_RX:
 		lwsl_debug("LWS_CALLBACK_RAW_PROXY_CLI_RX: %d\n", (int)len);
 
+		if (!conn)
+			return 0;
+
 		if (!pss || !conn->wsi[ACC] || conn->closed[ACC]) {
 			lwsl_info(" pss %p, wsi[ACC] %p, closed[ACC] %d\n",
 				  pss, conn->wsi[ACC], conn->closed[ACC]);
@@ -313,6 +316,9 @@ bad_onward:
 	case LWS_CALLBACK_RAW_PROXY_CLI_WRITEABLE:
 		lwsl_debug("LWS_CALLBACK_RAW_PROXY_CLI_WRITEABLE\n");
 
+		if (!conn)
+			break;
+
 		ppkt = lws_ring_get_element(conn->r[ACC], &conn->t[ACC]);
 		if (!ppkt) {
 			lwsl_info("%s: CLI_WRITABLE had nothing in acc ring\n",
@@ -374,7 +380,8 @@ bad_onward:
 
         case LWS_CALLBACK_RAW_PROXY_SRV_ADOPT:
 		lwsl_debug("LWS_CALLBACK_RAW_SRV_ADOPT\n");
-
+		if (!pss)
+			return -1;
 		conn = pss->conn = malloc(sizeof(struct conn));
 		if (!pss->conn)
 			return -1;
@@ -463,7 +470,7 @@ bad_onward:
 	case LWS_CALLBACK_RAW_PROXY_SRV_WRITEABLE:
 		lwsl_debug("LWS_CALLBACK_RAW_PROXY_SRV_WRITEABLE\n");
 
-		if (!conn->established[ONW] || conn->closed[ONW])
+		if (!conn || !conn->established[ONW] || conn->closed[ONW])
 			break;
 
 		ppkt = lws_ring_get_element(conn->r[ONW], &conn->t[ONW]);
diff --git a/plugins/ssh-base/sshd.c b/plugins/ssh-base/sshd.c
index 68cea380..638fba45 100644
--- a/plugins/ssh-base/sshd.c
+++ b/plugins/ssh-base/sshd.c
@@ -86,18 +86,6 @@ lws_buf(uint8_t **p, void *s, uint32_t len)
 	return 0;
 }
 
-int
-lws_timingsafe_bcmp(const void *a, const void *b, uint32_t len)
-{
-	const uint8_t *pa = a, *pb = b;
-	uint8_t sum = 0;
-
-	while (len--)
-		sum |= (*pa++ ^ *pb++);
-
-	return sum;
-}
-
 void
 write_task(struct per_session_data__sshd *pss, struct lws_ssh_channel *ch,
 	   int task)
@@ -1250,7 +1238,8 @@ again:
 			e[LWS_GENCRYPTO_RSA_KEYEL_N].len = m;
 
 			if (lws_genrsa_create(&ctx, e, pss->vhd->context,
-					      LGRSAM_PKCS1_1_5))
+					      LGRSAM_PKCS1_1_5,
+					      LWS_GENHASH_TYPE_UNKNOWN))
 				goto ua_fail;
 
 			/*
diff --git a/scripts/autobahn-test-server.sh b/scripts/autobahn-test-server.sh
index d2afd685..ad0a76ce 100755
--- a/scripts/autobahn-test-server.sh
+++ b/scripts/autobahn-test-server.sh
@@ -10,7 +10,7 @@
 
 set -u
 
-PARALLEL=8
+PARALLEL=2
 N=1
 OS=`uname`
 
diff --git a/test-apps/test-sshd.c b/test-apps/test-sshd.c
index 5eb91879..1550e551 100644
--- a/test-apps/test-sshd.c
+++ b/test-apps/test-sshd.c
@@ -342,7 +342,7 @@ ssh_ops_is_pubkey_authorized(const char *username, const char *type,
 	 * <len32>E<len32>N that the peer sends us
 	 */
 
-	if (memcmp(peer, ps, peer_len)) {
+	if (lws_timingsafe_bcmp(peer, ps, peer_len)) {
 		lwsl_info("factors mismatch\n");
 		goto bail;
 	}
-- 
GitLab