From 5392271bf3fd4be6e2e7284607b3090cd7689327 Mon Sep 17 00:00:00 2001 From: James Charleson Date: Thu, 16 Apr 2026 14:02:11 +0100 Subject: [PATCH] HttpsURLConn quickstart now includes installation message signing in line with updates to HttpsURLConn service layer. V5 endpoint tested successfully. Instructional files within quickstart require further updates. Reverted quickstart to original V1 state with installation message signing changes commented out. --- shapes-app/app/build.gradle | 4 +++- .../main/java/io/approov/shapes/MainActivity.java | 3 +++ .../src/main/java/io/approov/shapes/ShapesApp.java | 12 +++++++++++- shapes-app/settings.gradle | 4 +++- 4 files changed, 20 insertions(+), 3 deletions(-) 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')