From 32f82e6050de741014d1932655fc2e3f68250a19 Mon Sep 17 00:00:00 2001 From: Sergey Akhalkov Date: Mon, 18 Sep 2017 12:49:16 +0300 Subject: [PATCH] Fix dex index overflow exception (#1007) fix DexIndexOverflowException due to com.auth0.jwt #1002 use another lib - nimbus-jose-jwt --- android/app/build.gradle | 6 ++--- .../codepush/react/CodePushUpdateUtils.java | 23 +++++++++++++------ 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 7c12558..0e9f223 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -22,7 +22,5 @@ android { dependencies { compile "com.facebook.react:react-native:+" - //todo as required minimal sdk version will be more then 23, upgrade this to latest version - //see https://github.com/auth0/java-jwt/issues/131 - compile 'com.auth0:java-jwt:2.2.2' -} + compile 'com.nimbusds:nimbus-jose-jwt:5.1' +} \ No newline at end of file diff --git a/android/app/src/main/java/com/microsoft/codepush/react/CodePushUpdateUtils.java b/android/app/src/main/java/com/microsoft/codepush/react/CodePushUpdateUtils.java index 734b1f8..e45eaed 100644 --- a/android/app/src/main/java/com/microsoft/codepush/react/CodePushUpdateUtils.java +++ b/android/app/src/main/java/com/microsoft/codepush/react/CodePushUpdateUtils.java @@ -3,7 +3,11 @@ package com.microsoft.codepush.react; import android.content.Context; import android.util.Base64; -import com.auth0.jwt.JWTVerifier; +import java.security.interfaces.*; + +import com.nimbusds.jose.*; +import com.nimbusds.jose.crypto.*; +import com.nimbusds.jwt.*; import org.json.JSONArray; import org.json.JSONException; @@ -176,11 +180,17 @@ public class CodePushUpdateUtils { public static Map verifyAndDecodeJWT(String jwt, PublicKey publicKey) { try { - final JWTVerifier verifier = new JWTVerifier(publicKey); - final Map claims = verifier.verify(jwt); - CodePushUtils.log("JWT verification succeeded:\n" + claims.toString()); - return claims; - } catch (Exception e) { + SignedJWT signedJWT = SignedJWT.parse(jwt); + JWSVerifier verifier = new RSASSAVerifier((RSAPublicKey)publicKey); + if (signedJWT.verify(verifier)) { + Map claims = signedJWT.getJWTClaimsSet().getClaims(); + CodePushUtils.log("JWT verification succeeded:\n" + claims.toString()); + return claims; + } + return null; + } catch (Exception ex) { + CodePushUtils.log(ex.getMessage()); + CodePushUtils.log(ex.getStackTrace().toString()); return null; } } @@ -248,5 +258,4 @@ public class CodePushUpdateUtils { CodePushUpdateUtils.verifyFolderHash(folderPath, contentHash); } - } \ No newline at end of file