diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2024-01-10 19:01:23 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2024-01-10 19:01:23 +0000 |
commit | 41e7bbcf3d375486769059090e15260dc92f16c7 (patch) | |
tree | 5c368873297b82c25a8ba866cbeda97cce94d9fc /adservices/samples/topics/sampleappwithnoperm/java/com/example/adservices/samples/topics/sampleappwithnoperm/MainActivity.java | |
parent | 4f73884441d6a5c6ba4af7e5026807822aa034a0 (diff) | |
parent | 7f6cf1d740d6f047507d8bd2bc07ab12496e8024 (diff) | |
download | AdServices-aml_tz5_341510010.tar.gz |
Snap for 11296156 from 7f6cf1d740d6f047507d8bd2bc07ab12496e8024 to mainline-tzdata5-releaseaml_tz5_341510070aml_tz5_341510050aml_tz5_341510010aml_tz5_341510010
Change-Id: I84e6c0df7ccbfafbe8dd398518474c2b7a676013
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.java | 86 |
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 229a4bf7d8..2343bc71af 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(); + } } |