Skip to content

Commit 52eb834

Browse files
Neno StefanovNenoStefanov
authored andcommitted
Add Project URL configuration
1 parent f5f54f4 commit 52eb834

32 files changed

Lines changed: 318 additions & 157 deletions

.github/workflows/ci.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,11 @@ jobs:
8989
TEST_CUV_CLIENT_SECRET: ${{ secrets.TEST_CUV_CLIENT_SECRET }}
9090
TEST_CUV_CLIENT_ID: ${{ vars.TEST_CUV_CLIENT_ID }}
9191
TEST_CUV_PROJECT_ID: ${{ vars.TEST_CUV_PROJECT_ID }}
92+
TEST_CUV_PROJECT_URL: ${{ vars.TEST_CUV_PROJECT_URL }}
9293
TEST_DV_PROJECT_ID: ${{ vars.TEST_DV_PROJECT_ID }}
94+
TEST_DV_PROJECT_URL: ${{ vars.TEST_DV_PROJECT_URL }}
9395
TEST_ECV_PROJECT_ID: ${{ vars.TEST_ECV_PROJECT_ID }}
96+
TEST_ECV_PROJECT_URL: ${{ vars.TEST_ECV_PROJECT_URL }}
9497
GMAIL_CREDENTIALS: ${{ secrets.GMAIL_CREDENTIALS }}
9598
GMAIL_TOKEN: ${{ secrets.GMAIL_TOKEN }}
9699
with:

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,22 +47,22 @@ The MIRACL Trust Android SDK provides the following functionalities:
4747

4848
To configure the SDK:
4949

50-
1. Create an application in the MIRACL Trust platform. For information about how
50+
1. Create an account in the MIRACL Trust platform. For information about how
5151
to do it, see the
5252
[Getting Started](https://miracl.com/resources/docs/guides/get-started/)
5353
guide.
54-
2. Call the
54+
1. Call the
5555
[configure](https://miracl.github.io/trust-sdk-android/miracl-sdk/com.miracl.trust/-m-i-r-a-c-l-trust/-companion/configure.html)
5656
method with a configuration created by the [Configuration.Builder](https://miracl.github.io/trust-sdk-android/miracl-sdk/com.miracl.trust.configuration/-configuration/-builder/index.html)
57-
class:
57+
class using [your project properties](https://miracl.com/resources/docs/get-started/create-project/#project-properties):
5858

5959
Kotlin:
6060

6161
```kotlin
6262
class YourApplication : Application() {
6363
override fun onCreate() {
6464
super.onCreate()
65-
val configuration = Configuration.Builder(YOUR_PROJECT_ID).build()
65+
val configuration = Configuration.Builder(PROJECT_ID, PROJECT_URL).build()
6666
MIRACLTrust.configure(applicationContext, configuration)
6767
}
6868
}
@@ -75,7 +75,7 @@ public class YourApplication extends Application {
7575
@Override
7676
public void onCreate() {
7777
super.onCreate();
78-
Configuration configuration = new Configuration.Builder(YOUR_PROJECT_ID).build();
78+
Configuration configuration = new Configuration.Builder(PROJECT_ID, PROJECT_URL).build();
7979
MIRACLTrust.configure(getApplicationContext(), configuration);
8080
}
8181
}

miracl-sdk/api/miracl-sdk.api

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ public final class com/miracl/trust/MIRACLTrust {
6464
public final fun sign (Lcom/miracl/trust/session/CrossDeviceSession;Lcom/miracl/trust/model/User;Lcom/miracl/trust/delegate/PinProvider;Lcom/miracl/trust/delegate/ResultHandler;)V
6565
public final fun sign ([BLcom/miracl/trust/model/User;Lcom/miracl/trust/delegate/PinProvider;Lcom/miracl/trust/delegate/ResultHandler;)V
6666
public final fun sign ([BLcom/miracl/trust/model/User;Lcom/miracl/trust/session/SigningSessionDetails;Lcom/miracl/trust/delegate/PinProvider;Lcom/miracl/trust/delegate/ResultHandler;)V
67+
public final fun updateProjectSettings (Ljava/lang/String;Ljava/lang/String;)V
6768
}
6869

6970
public final class com/miracl/trust/MIRACLTrust$Companion {
@@ -130,14 +131,15 @@ public final class com/miracl/trust/configuration/Configuration {
130131

131132
public final class com/miracl/trust/configuration/Configuration$Builder {
132133
public fun <init> (Ljava/lang/String;)V
134+
public fun <init> (Ljava/lang/String;Ljava/lang/String;)V
135+
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
133136
public final fun applicationInfo (Ljava/lang/String;)Lcom/miracl/trust/configuration/Configuration$Builder;
134137
public final fun build ()Lcom/miracl/trust/configuration/Configuration;
135138
public final fun connectTimeout (I)Lcom/miracl/trust/configuration/Configuration$Builder;
136139
public final fun deviceName (Ljava/lang/String;)Lcom/miracl/trust/configuration/Configuration$Builder;
137140
public final fun httpRequestExecutor (Lcom/miracl/trust/network/HttpRequestExecutor;)Lcom/miracl/trust/configuration/Configuration$Builder;
138141
public final fun logger (Lcom/miracl/trust/util/log/Logger;)Lcom/miracl/trust/configuration/Configuration$Builder;
139142
public final fun loggingLevel (Lcom/miracl/trust/util/log/Logger$LoggingLevel;)Lcom/miracl/trust/configuration/Configuration$Builder;
140-
public final fun platformUrl (Ljava/lang/String;)Lcom/miracl/trust/configuration/Configuration$Builder;
141143
public final fun readTimeout (I)Lcom/miracl/trust/configuration/Configuration$Builder;
142144
public final fun userStorage (Lcom/miracl/trust/storage/UserStorage;)Lcom/miracl/trust/configuration/Configuration$Builder;
143145
}
@@ -149,6 +151,10 @@ public final class com/miracl/trust/configuration/ConfigurationException$EmptyPr
149151
public static final field INSTANCE Lcom/miracl/trust/configuration/ConfigurationException$EmptyProjectId;
150152
}
151153

154+
public final class com/miracl/trust/configuration/ConfigurationException$InvalidProjectUrl : com/miracl/trust/configuration/ConfigurationException {
155+
public static final field INSTANCE Lcom/miracl/trust/configuration/ConfigurationException$InvalidProjectUrl;
156+
}
157+
152158
public abstract class com/miracl/trust/crypto/CryptoException : java/lang/Exception {
153159
public synthetic fun <init> (Ljava/lang/Throwable;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
154160
public synthetic fun <init> (Ljava/lang/Throwable;Lkotlin/jvm/internal/DefaultConstructorMarker;)V

miracl-sdk/build.gradle

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,16 @@ android {
6969
}
7070

7171
debug {
72-
buildConfigField "String", "BASE_URL", "\"${project.getProperties().get('miracltrust.baseUrl')}\""
73-
7472
buildConfigField "String", "CUV_PROJECT_ID", "\"${project.getProperties().get('miracltrust.cuvProjectId')}\""
73+
buildConfigField "String", "CUV_PROJECT_URL", "\"${project.getProperties().get('miracltrust.cuvProjectUrl')}\""
7574
buildConfigField "String", "CUV_CLIENT_ID", "\"${project.getProperties().get('miracltrust.cuvClientId')}\""
7675
buildConfigField "String", "CUV_CLIENT_SECRET", "\"${project.getProperties().get('miracltrust.cuvClientSecret')}\""
7776

7877
buildConfigField "String", "DV_PROJECT_ID", "\"${project.getProperties().get('miracltrust.dvProjectId')}\""
78+
buildConfigField "String", "DV_PROJECT_URL", "\"${project.getProperties().get('miracltrust.dvProjectUrl')}\""
7979

8080
buildConfigField "String", "ECV_PROJECT_ID", "\"${project.getProperties().get('miracltrust.ecvProjectId')}\""
81+
buildConfigField "String", "ECV_PROJECT_URL", "\"${project.getProperties().get('miracltrust.ecvProjectUrl')}\""
8182
}
8283
}
8384

miracl-sdk/gradle.properties

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
miracltrust.baseUrl=
2-
31
miracltrust.cuvProjectId=
2+
miracltrust.cuvProjectUrl=
43
miracltrust.cuvClientId=
54
miracltrust.cuvClientSecret=
65

76
miracltrust.dvProjectId=
7+
miracltrust.dvProjectUrl=
88

9-
miracltrust.ecvProjectId=
9+
miracltrust.ecvProjectId=
10+
miracltrust.ecvProjectUrl=

miracl-sdk/src/androidTest/java/com/miracl/trust/MIRACLTrustJavaTest.java

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454

5555
public class MIRACLTrustJavaTest {
5656
private final String projectId = BuildConfig.CUV_PROJECT_ID;
57+
private final String projectUrl = BuildConfig.CUV_PROJECT_URL;
5758
private final String clientId = BuildConfig.CUV_CLIENT_ID;
5859
private final String clientSecret = BuildConfig.CUV_CLIENT_SECRET;
5960

@@ -64,8 +65,7 @@ public class MIRACLTrustJavaTest {
6465

6566
@Before
6667
public void setUp() throws ConfigurationException {
67-
Configuration configuration = new Configuration.Builder(projectId)
68-
.platformUrl(BuildConfig.BASE_URL)
68+
Configuration configuration = new Configuration.Builder(projectId, projectUrl)
6969
.coroutineContext$miracl_sdk_debug(testCoroutineDispatcher)
7070
.build();
7171
MIRACLTrust.configure(InstrumentationRegistry.getInstrumentation().getContext(), configuration);
@@ -77,7 +77,7 @@ public void setUp() throws ConfigurationException {
7777

7878
@Test
7979
public void testDefaultVerification() throws ConfigurationException {
80-
miraclTrust.setProjectId(BuildConfig.DV_PROJECT_ID);
80+
miraclTrust.updateProjectSettings(BuildConfig.DV_PROJECT_ID, BuildConfig.DV_PROJECT_URL);
8181

8282
long timestamp = getUnixTime();
8383
miraclTrust.sendVerificationEmail(USER_ID, result -> {
@@ -104,6 +104,7 @@ public void testDefaultVerification() throws ConfigurationException {
104104
@Test
105105
public void testCustomVerification() {
106106
String verificationUrl = MIRACLService.INSTANCE.getVerificationUrl(
107+
BuildConfig.CUV_PROJECT_URL,
107108
BuildConfig.CUV_CLIENT_ID,
108109
BuildConfig.CUV_CLIENT_SECRET,
109110
USER_ID,
@@ -150,6 +151,7 @@ public void testQuickCode() {
150151
@Test
151152
public void testRegistration() {
152153
String activationToken = MIRACLService.INSTANCE.obtainActivationToken(
154+
BuildConfig.CUV_PROJECT_URL,
153155
BuildConfig.CUV_CLIENT_ID,
154156
BuildConfig.CUV_CLIENT_SECRET,
155157
USER_ID
@@ -172,15 +174,15 @@ public void testAuthentication() {
172174
Assert.assertTrue(result instanceof MIRACLSuccess);
173175

174176
String token = ((MIRACLSuccess<String, AuthenticationException>) result).getValue();
175-
Jws<Claims> claims = JwtHelper.INSTANCE.parseSignedClaims(token);
177+
Jws<Claims> claims = JwtHelper.INSTANCE.parseSignedClaims(token, projectUrl);
176178
Assert.assertTrue(claims.getPayload().getAudience().contains(projectId));
177179
}));
178180
testCoroutineDispatcher.getScheduler().advanceUntilIdle();
179181
}
180182

181183
@Test
182184
public void testAuthenticationWithCrossDeviceSession() {
183-
String qrCode = MIRACLService.INSTANCE.obtainAccessId(projectId, USER_ID).getQrURL();
185+
String qrCode = MIRACLService.INSTANCE.obtainAccessId().getQrURL();
184186
miraclTrust.getCrossDeviceSessionFromQRCode(qrCode, result -> {
185187
Assert.assertTrue(result instanceof MIRACLSuccess);
186188

@@ -195,7 +197,7 @@ public void testAuthenticationWithCrossDeviceSession() {
195197

196198
@Test
197199
public void testAppLinkAuthentication() {
198-
Uri appLink = Uri.parse(MIRACLService.INSTANCE.obtainAccessId(projectId, USER_ID).getQrURL());
200+
Uri appLink = Uri.parse(MIRACLService.INSTANCE.obtainAccessId().getQrURL());
199201
createUser(user -> miraclTrust.authenticateWithAppLink(user, appLink, pinProvider, result -> {
200202
Assert.assertTrue(result instanceof MIRACLSuccess);
201203
}));
@@ -204,7 +206,7 @@ public void testAppLinkAuthentication() {
204206

205207
@Test
206208
public void testQRCodeAuthentication() {
207-
String qrCode = MIRACLService.INSTANCE.obtainAccessId(projectId, USER_ID).getQrURL();
209+
String qrCode = MIRACLService.INSTANCE.obtainAccessId().getQrURL();
208210
createUser(user -> miraclTrust.authenticateWithQRCode(user, qrCode, pinProvider, result -> {
209211
Assert.assertTrue(result instanceof MIRACLSuccess);
210212
}));
@@ -213,7 +215,7 @@ public void testQRCodeAuthentication() {
213215

214216
@Test
215217
public void testNotificationAuthentication() {
216-
String qrUrl = MIRACLService.INSTANCE.obtainAccessId(projectId, USER_ID).getQrURL();
218+
String qrUrl = MIRACLService.INSTANCE.obtainAccessId().getQrURL();
217219
Map<String, String> payload = new HashMap<String, String>() {
218220
{
219221
put("projectID", projectId);
@@ -236,7 +238,7 @@ public void testSigning() {
236238
SigningResult signingResult = ((MIRACLSuccess<SigningResult, SigningException>) result).getValue();
237239
Signature signature = signingResult.getSignature();
238240
int timestamp = (int) (signingResult.getTimestamp().getTime() / 1000);
239-
boolean signatureVerified = MIRACLService.INSTANCE.verifySignature(projectId, clientId, clientSecret, signature, timestamp);
241+
boolean signatureVerified = MIRACLService.INSTANCE.verifySignature(projectId, projectUrl, clientId, clientSecret, signature, timestamp);
240242
Assert.assertTrue(signatureVerified);
241243
}));
242244
testCoroutineDispatcher.getScheduler().advanceUntilIdle();
@@ -275,7 +277,7 @@ public void testDeleteUser() {
275277

276278
@Test
277279
public void testGetAuthenticationSessionDetailsFromAppLink() {
278-
Uri appLink = Uri.parse(MIRACLService.INSTANCE.obtainAccessId(projectId, USER_ID).getQrURL());
280+
Uri appLink = Uri.parse(MIRACLService.INSTANCE.obtainAccessId().getQrURL());
279281
miraclTrust.getAuthenticationSessionDetailsFromAppLink(appLink, result -> {
280282
Assert.assertTrue(result instanceof MIRACLSuccess);
281283

@@ -288,7 +290,7 @@ public void testGetAuthenticationSessionDetailsFromAppLink() {
288290

289291
@Test
290292
public void testGetAuthenticationSessionDetailsFromQRCode() {
291-
String qrCode = MIRACLService.INSTANCE.obtainAccessId(projectId, USER_ID).getQrURL();
293+
String qrCode = MIRACLService.INSTANCE.obtainAccessId().getQrURL();
292294
miraclTrust.getAuthenticationSessionDetailsFromQRCode(qrCode, result -> {
293295
Assert.assertTrue(result instanceof MIRACLSuccess);
294296

@@ -301,7 +303,7 @@ public void testGetAuthenticationSessionDetailsFromQRCode() {
301303

302304
@Test
303305
public void testGetAuthenticationSessionDetailsFromNotificationPayload() {
304-
String qrUrl = MIRACLService.INSTANCE.obtainAccessId(projectId, USER_ID).getQrURL();
306+
String qrUrl = MIRACLService.INSTANCE.obtainAccessId().getQrURL();
305307
Map<String, String> payload = new HashMap<String, String>() {
306308
{
307309
put("projectID", projectId);
@@ -322,7 +324,7 @@ public void testGetAuthenticationSessionDetailsFromNotificationPayload() {
322324

323325
@Test
324326
public void testAbortAuthenticationSession() {
325-
String qrCode = MIRACLService.INSTANCE.obtainAccessId(projectId, USER_ID).getQrURL();
327+
String qrCode = MIRACLService.INSTANCE.obtainAccessId().getQrURL();
326328
miraclTrust.getAuthenticationSessionDetailsFromQRCode(qrCode, result -> {
327329
Assert.assertTrue(result instanceof MIRACLSuccess);
328330

@@ -340,7 +342,7 @@ public void testGetSigningSessionDetailsFromAppLink() {
340342
String hash = randomUuidString();
341343
String description = randomUuidString();
342344
SigningSessionCreateResponse signingSessionCreateResponse =
343-
MIRACLService.INSTANCE.createSigningSession(projectId, USER_ID, hash, description);
345+
MIRACLService.INSTANCE.createSigningSession(projectId, projectUrl, USER_ID, hash, description);
344346
Uri appLink = Uri.parse(signingSessionCreateResponse.getQrURL());
345347
miraclTrust.getSigningSessionDetailsFromAppLink(appLink, result -> {
346348
Assert.assertTrue(result instanceof MIRACLSuccess);
@@ -360,7 +362,7 @@ public void testGetSigningSessionDetailsFromQRCode() {
360362
String hash = randomUuidString();
361363
String description = randomUuidString();
362364
SigningSessionCreateResponse signingSessionCreateResponse =
363-
MIRACLService.INSTANCE.createSigningSession(projectId, USER_ID, hash, description);
365+
MIRACLService.INSTANCE.createSigningSession(projectId, projectUrl, USER_ID, hash, description);
364366
String qrCode = signingSessionCreateResponse.getQrURL();
365367
miraclTrust.getSigningSessionDetailsFromQRCode(qrCode, result -> {
366368
Assert.assertTrue(result instanceof MIRACLSuccess);
@@ -379,7 +381,7 @@ public void testGetSigningSessionDetailsFromQRCode() {
379381
public void testAbortSigningSession() {
380382
String hash = randomUuidString();
381383
String description = randomUuidString();
382-
Uri appLink = Uri.parse(MIRACLService.INSTANCE.createSigningSession(projectId, USER_ID, hash, description).getQrURL());
384+
Uri appLink = Uri.parse(MIRACLService.INSTANCE.createSigningSession(projectId, projectUrl, USER_ID, hash, description).getQrURL());
383385
miraclTrust.getSigningSessionDetailsFromAppLink(appLink, result -> {
384386
Assert.assertTrue(result instanceof MIRACLSuccess);
385387

@@ -394,7 +396,7 @@ public void testAbortSigningSession() {
394396

395397
@Test
396398
public void testGetCrossDeviceSessionFromAppLink() {
397-
Uri appLink = Uri.parse(MIRACLService.INSTANCE.obtainAccessId(projectId, USER_ID).getQrURL());
399+
Uri appLink = Uri.parse(MIRACLService.INSTANCE.obtainAccessId().getQrURL());
398400
miraclTrust.getCrossDeviceSessionFromAppLink(appLink, result -> {
399401
Assert.assertTrue(result instanceof MIRACLSuccess);
400402

@@ -407,7 +409,7 @@ public void testGetCrossDeviceSessionFromAppLink() {
407409

408410
@Test
409411
public void testGetCrossDeviceSessionFromQRCode() {
410-
String qrCode = MIRACLService.INSTANCE.obtainAccessId(projectId, USER_ID).getQrURL();
412+
String qrCode = MIRACLService.INSTANCE.obtainAccessId().getQrURL();
411413
miraclTrust.getCrossDeviceSessionFromQRCode(qrCode, result -> {
412414
Assert.assertTrue(result instanceof MIRACLSuccess);
413415

@@ -420,7 +422,7 @@ public void testGetCrossDeviceSessionFromQRCode() {
420422

421423
@Test
422424
public void testGetCrossDeviceSessionFromNotificationPayload() {
423-
String qrUrl = MIRACLService.INSTANCE.obtainAccessId(projectId, USER_ID).getQrURL();
425+
String qrUrl = MIRACLService.INSTANCE.obtainAccessId().getQrURL();
424426
Map<String, String> payload = new HashMap<String, String>() {
425427
{
426428
put("projectID", projectId);
@@ -441,7 +443,7 @@ public void testGetCrossDeviceSessionFromNotificationPayload() {
441443

442444
@Test
443445
public void testAbortCrossDeviceSession() {
444-
String qrCode = MIRACLService.INSTANCE.obtainAccessId(projectId, USER_ID).getQrURL();
446+
String qrCode = MIRACLService.INSTANCE.obtainAccessId().getQrURL();
445447
miraclTrust.getCrossDeviceSessionFromQRCode(qrCode, result -> {
446448
Assert.assertTrue(result instanceof MIRACLSuccess);
447449

@@ -456,6 +458,7 @@ public void testAbortCrossDeviceSession() {
456458

457459
private void createUser(Consumer<User> callback) {
458460
String activationToken = MIRACLService.INSTANCE.obtainActivationToken(
461+
BuildConfig.CUV_PROJECT_URL,
459462
BuildConfig.CUV_CLIENT_ID,
460463
BuildConfig.CUV_CLIENT_SECRET,
461464
USER_ID

miracl-sdk/src/androidTest/java/com/miracl/trust/authentication/AppLinkAuthenticationTest.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import org.junit.Test
2424

2525
class AppLinkAuthenticationTest {
2626
private val projectId = BuildConfig.CUV_PROJECT_ID
27+
private val projectUrl = BuildConfig.CUV_PROJECT_URL
2728
private val clientId = BuildConfig.CUV_CLIENT_ID
2829
private val clientSecret = BuildConfig.CUV_CLIENT_SECRET
2930

@@ -36,8 +37,7 @@ class AppLinkAuthenticationTest {
3637

3738
@Before
3839
fun setUp() = runTest {
39-
val configuration = Configuration.Builder(projectId)
40-
.platformUrl(BuildConfig.BASE_URL)
40+
val configuration = Configuration.Builder(projectId, projectUrl)
4141
.coroutineContext(testCoroutineDispatcher)
4242
.build()
4343

@@ -47,7 +47,8 @@ class AppLinkAuthenticationTest {
4747

4848
pin = randomNumericPin()
4949
pinProvider = PinProvider { pinConsumer -> pinConsumer.consume(pin) }
50-
val activationToken = MIRACLService.obtainActivationToken(clientId, clientSecret, USER_ID)
50+
val activationToken =
51+
MIRACLService.obtainActivationToken(projectUrl, clientId, clientSecret, USER_ID)
5152

5253
var registrationResult: MIRACLResult<User, RegistrationException>? = null
5354
miraclTrust.register(

0 commit comments

Comments
 (0)