diff --git a/shapes-app/app/build.gradle b/shapes-app/app/build.gradle index 1f496e7..589da6d 100644 --- a/shapes-app/app/build.gradle +++ b/shapes-app/app/build.gradle @@ -4,7 +4,7 @@ android { compileSdkVersion 31 defaultConfig { applicationId "io.approov.shapes" - minSdkVersion 21 + minSdkVersion 23 targetSdkVersion 31 versionCode 3 versionName "3.0" @@ -32,6 +32,8 @@ android { } dependencies { +// implementation 'androidx.annotation:annotation:1.8.2' implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.4.1' + implementation project(':approov-service') } diff --git a/shapes-app/app/src/main/java/io/approov/shapes/MainActivity.java b/shapes-app/app/src/main/java/io/approov/shapes/MainActivity.java index 6ff231c..4aad6ca 100644 --- a/shapes-app/app/src/main/java/io/approov/shapes/MainActivity.java +++ b/shapes-app/app/src/main/java/io/approov/shapes/MainActivity.java @@ -205,6 +205,8 @@ public void run() { URL url = new URL(getResources().getString(R.string.shapes_url)); connection = (HttpsURLConnection) url.openConnection(); connection.setRequestMethod("GET"); + // Keep the originally signed request target unchanged (redirects can invalidate signatures). + connection.setInstanceFollowRedirects(false); connection.addRequestProperty("Api-Key", getResources().getString(R.string.shapes_api_key)); // *** UNCOMMENT THE LINE BELOW FOR APPROOV USING SECRETS PROTECTION *** @@ -214,6 +216,7 @@ public void run() { //ApproovService.addApproov(connection); connection.connect(); + msg = "Http status code " + connection.getResponseCode(); if (connection.getResponseCode() == 200) imgId = readShapesResponse(connection); diff --git a/shapes-app/app/src/main/java/io/approov/shapes/ShapesApp.java b/shapes-app/app/src/main/java/io/approov/shapes/ShapesApp.java index 08dd385..81a3af7 100644 --- a/shapes-app/app/src/main/java/io/approov/shapes/ShapesApp.java +++ b/shapes-app/app/src/main/java/io/approov/shapes/ShapesApp.java @@ -22,6 +22,9 @@ // *** UNCOMMENT THE LINE BELOW FOR APPROOV *** //import io.approov.service.httpsurlconn.ApproovService; +// *** UNCOMMENT THE LINE BELOW FOR APPROOV WITH INSTALLATION MESSAGE SIGNING *** +//import io.approov.service.httpsurlconn.ApproovDefaultMessageSigning; + public class ShapesApp extends Application { @Override @@ -29,6 +32,13 @@ public void onCreate() { super.onCreate(); // *** UNCOMMENT THE LINE BELOW FOR APPROOV *** - //ApproovService.initialize(getApplicationContext(), ""); + //ApproovService.initialize(getApplicationContext(), "#199896#cjjyY5WNuuhkdzTDYV49eGZfXOYbnQrL16nzxoYqWbc="); + + // *** UNCOMMENT THE LINES BELOW FOR APPROOV WITH INSTALLATION MESSAGE SIGNING *** +// ApproovService.setServiceMutator( +// new ApproovDefaultMessageSigning() +// .setDefaultFactory(ApproovDefaultMessageSigning.generateDefaultSignatureParametersFactory()) +// ); + } } diff --git a/shapes-app/settings.gradle b/shapes-app/settings.gradle index b46b48c..f0171b1 100644 --- a/shapes-app/settings.gradle +++ b/shapes-app/settings.gradle @@ -1,2 +1,4 @@ -include ':approov-sdk' +//include ':approov-sdk' include ':app' +include ':approov-service' +project(':approov-service').projectDir = new File('/Users/charlesoj/Developer/Quickstarts/approov-service-httpsurlconn/approov-service')