summaryrefslogtreecommitdiff
path: root/adservices/samples/topics/sampleappwithnoperm/java/com/example/adservices/samples/topics/sampleappwithnoperm/MainActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'adservices/samples/topics/sampleappwithnoperm/java/com/example/adservices/samples/topics/sampleappwithnoperm/MainActivity.java')
-rw-r--r--adservices/samples/topics/sampleappwithnoperm/java/com/example/adservices/samples/topics/sampleappwithnoperm/MainActivity.java86
1 files changed, 65 insertions, 21 deletions
diff --git a/adservices/samples/topics/sampleappwithnoperm/java/com/example/adservices/samples/topics/sampleappwithnoperm/MainActivity.java b/adservices/samples/topics/sampleappwithnoperm/java/com/example/adservices/samples/topics/sampleappwithnoperm/MainActivity.java
index 229a4bf7d..2343bc71a 100644
--- a/adservices/samples/topics/sampleappwithnoperm/java/com/example/adservices/samples/topics/sampleappwithnoperm/MainActivity.java
+++ b/adservices/samples/topics/sampleappwithnoperm/java/com/example/adservices/samples/topics/sampleappwithnoperm/MainActivity.java
@@ -18,6 +18,7 @@ package com.example.adservices.samples.topics.sampleappwithnoperm;
import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
import android.adservices.clients.topics.AdvertisingTopicsClient;
+import android.adservices.topics.EncryptedTopic;
import android.adservices.topics.GetTopicsResponse;
import android.adservices.topics.Topic;
import android.os.Bundle;
@@ -28,14 +29,18 @@ import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
+import com.android.adservices.HpkeJni;
+
+import com.google.common.primitives.Bytes;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
-import java.io.StringWriter;
import java.io.PrintWriter;
+import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Base64;
import java.util.List;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
@@ -53,6 +58,12 @@ public class MainActivity extends AppCompatActivity {
private static final String TAG = "SampleApp";
private static final List<String> SDK_NAMES =
new ArrayList<>(Arrays.asList("SdkName1", "SdkName2"));
+ // Test constants for testing encryption
+ private static final String TEST_PRIVATE_KEY_BASE64 =
+ "f86EzLmGaVmc+PwjJk5ADPE4ijQvliWf0CQyY/Zyy7I=";
+ private static final byte[] DECODED_PRIVATE_KEY =
+ Base64.getDecoder().decode(TEST_PRIVATE_KEY_BASE64);
+ private static final byte[] EMPTY_CONTEXT_INFO = new byte[] {};
private Button mTopicsClientButton;
private TextView mResultTextView;
private AdvertisingTopicsClient mAdvertisingTopicsClient;
@@ -89,25 +100,42 @@ public class MainActivity extends AppCompatActivity {
public void onSuccess(GetTopicsResponse result) {
Log.d(TAG, "GetTopics for sdk " + sdkName + " succeeded!");
String topics = getTopics(result.getTopics());
+ String encryptedTopicsDecrypted =
+ getDecryptedTopics(result.getEncryptedTopics());
+
+ mHandler.post(
+ new Runnable() {
+ @Override
+ public void run() {
+ mResultTextView.append(
+ sdkName
+ + "'s topics: "
+ + NEWLINE
+ + topics
+ + NEWLINE);
+ mResultTextView.append(
+ sdkName
+ + "'s encrypted topics,"
+ + " decrypted: "
+ + NEWLINE
+ + encryptedTopicsDecrypted
+ + NEWLINE);
+ }
+ });
- mHandler.post(new Runnable() {
- @Override
- public void run() {
- mResultTextView.append(
+ Log.d(
+ TAG,
sdkName
+ "'s topics: "
+ NEWLINE
+ topics
+ NEWLINE);
- }
- });
-
Log.d(
TAG,
sdkName
- + "'s topics: "
+ + "'s encrypted topics, decrypted: "
+ NEWLINE
- + topics
+ + encryptedTopicsDecrypted
+ NEWLINE);
}
@@ -124,17 +152,18 @@ public class MainActivity extends AppCompatActivity {
+ ": "
+ t.getMessage());
- mHandler.post(new Runnable() {
- @Override
- public void run() {
- mResultTextView.append(
- "Failed to getTopics for sdk "
- + sdkName
- + ": "
- + t.toString()
- + NEWLINE);
- }
- });
+ mHandler.post(
+ new Runnable() {
+ @Override
+ public void run() {
+ mResultTextView.append(
+ "Failed to getTopics for sdk "
+ + sdkName
+ + ": "
+ + t.toString()
+ + NEWLINE);
+ }
+ });
}
},
directExecutor());
@@ -150,4 +179,19 @@ public class MainActivity extends AppCompatActivity {
}
return sb.toString();
}
+
+ private String getDecryptedTopics(List<EncryptedTopic> arr) {
+ StringBuilder sb = new StringBuilder();
+ int index = 1;
+ for (EncryptedTopic encryptedTopic : arr) {
+ byte[] cipherText =
+ Bytes.concat(
+ encryptedTopic.getEncapsulatedKey(),
+ encryptedTopic.getEncryptedTopic());
+ byte[] decryptedText =
+ HpkeJni.decrypt(DECODED_PRIVATE_KEY, cipherText, EMPTY_CONTEXT_INFO);
+ sb.append(index++).append(". ").append(new String(decryptedText)).append(NEWLINE);
+ }
+ return sb.toString();
+ }
}