diff --git a/FrejaEidClient/pom.xml b/FrejaEidClient/pom.xml
index 94590b4..3339c73 100644
--- a/FrejaEidClient/pom.xml
+++ b/FrejaEidClient/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.verisec.frejaeid
FrejaEidClient
- 2.32.1-SNAPSHOT
+ 2.33.0-SNAPSHOT
jar
FrejaEidClient
diff --git a/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/beans/authentication/init/InitiateAuthenticationRequestBuilders.java b/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/beans/authentication/init/InitiateAuthenticationRequestBuilders.java
index 9de7b98..f3137f8 100644
--- a/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/beans/authentication/init/InitiateAuthenticationRequestBuilders.java
+++ b/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/beans/authentication/init/InitiateAuthenticationRequestBuilders.java
@@ -69,6 +69,17 @@ public SetOptionalParamsBuilder setOrganisationId(String identifier) {
return new SetOptionalParamsBuilder(UserInfoType.ORG_ID, identifier);
}
+ /**
+ * Sets unique personal identifier as userInfo and {@link UserInfoType#UPI} as {@linkplain UserInfoType} for initiating
+ * transaction.
+ *
+ * @param upi user's unique personal identifier that was previously set by Freja
+ * @return request builder
+ */
+ public SetOptionalParamsBuilder setUpi(String upi) {
+ return new SetOptionalParamsBuilder(UserInfoType.UPI, upi);
+ }
+
}
public static class SetOptionalParamsBuilder {
diff --git a/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/beans/organisationid/init/InitiateAddOrganisationIdRequestBuilders.java b/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/beans/organisationid/init/InitiateAddOrganisationIdRequestBuilders.java
index 17a6a67..a7b5e34 100644
--- a/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/beans/organisationid/init/InitiateAddOrganisationIdRequestBuilders.java
+++ b/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/beans/organisationid/init/InitiateAddOrganisationIdRequestBuilders.java
@@ -71,6 +71,20 @@ public SetOptionalParamsBuilder setInferredAndOrganisationId(OrganisationId orga
return new SetOptionalParamsBuilder(UserInfoType.INFERRED, "N/A", organisationId);
}
+ /**
+ * Sets unique personal identifier as userInfo and {@link UserInfoType#UPI} as
+ * {@linkplain UserInfoType} for initiating transaction.
+ *
+ * @param upi user's unique personal identifier that will be used to identify
+ * the end user in format 1234-123456-1234.
+ * @param organisationId instance of {@linkplain OrganisationId} that
+ * contains information regarding organisation id.
+ * @return request builder
+ */
+ public SetOptionalParamsBuilder setUpiAndOrganisationId(String upi, OrganisationId organisationId) {
+ return new SetOptionalParamsBuilder(UserInfoType.UPI, upi, organisationId);
+ }
+
}
public static class SetOptionalParamsBuilder {
diff --git a/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/beans/sign/init/InitiateSignRequestBuilders.java b/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/beans/sign/init/InitiateSignRequestBuilders.java
index 6b2da64..56c5f70 100644
--- a/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/beans/sign/init/InitiateSignRequestBuilders.java
+++ b/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/beans/sign/init/InitiateSignRequestBuilders.java
@@ -75,6 +75,18 @@ public SetOptionalParamsBuilder setOrganisationId(String identifier) {
return new SetOptionalParamsBuilder(UserInfoType.ORG_ID, identifier);
}
+ /**
+ * Sets unique personal identifier as userInfo and {@link UserInfoType#UPI} as
+ * {@linkplain UserInfoType} for initiating transaction.
+ *
+ * @param upi user's unique personal identifier that was previously set by
+ * Freja
+ * @return request builder
+ */
+ public SetOptionalParamsBuilder setUpi(String upi) {
+ return new SetOptionalParamsBuilder(UserInfoType.UPI, upi);
+ }
+
}
public static class SetOptionalParamsBuilder {
diff --git a/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/beans/usermanagement/customidentifier/set/SetCustomIdentifierRequest.java b/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/beans/usermanagement/customidentifier/set/SetCustomIdentifierRequest.java
index 32d08ef..9afb230 100644
--- a/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/beans/usermanagement/customidentifier/set/SetCustomIdentifierRequest.java
+++ b/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/beans/usermanagement/customidentifier/set/SetCustomIdentifierRequest.java
@@ -52,6 +52,20 @@ public static SetCustomIdentifierRequest createDefaultWithSsn(SsnUserInfo ssnUse
customIdentifier, null);
}
+ /**
+ * Returns instance of {@linkplain SetCustomIdentifierRequest} with
+ * {@linkplain UserInfoType} {@code UPI}.
+ *
+ * @param upi will be used to identify the end user. It cannot be
+ * {@code null} or empty. Maximum length is 256 characters.
+ * @param customIdentifier will be set for user. Maximum length is 128
+ * characters. It cannot be {@code null} or empty.
+ * @return request
+ */
+ public static SetCustomIdentifierRequest createDefaultWithUpi(String upi, String customIdentifier) {
+ return new SetCustomIdentifierRequest(UserInfoType.UPI, upi, customIdentifier, null);
+ }
+
/**
* Returns instance of builder that is used for creating
* {@linkplain SetCustomIdentifierRequest} with custom request parameters.
diff --git a/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/beans/usermanagement/customidentifier/set/SetCustomIdentifierRequestBuilder.java b/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/beans/usermanagement/customidentifier/set/SetCustomIdentifierRequestBuilder.java
index 921f4cc..1acc150 100644
--- a/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/beans/usermanagement/customidentifier/set/SetCustomIdentifierRequestBuilder.java
+++ b/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/beans/usermanagement/customidentifier/set/SetCustomIdentifierRequestBuilder.java
@@ -56,6 +56,20 @@ public SetOptionalParamsBuilder setPhoneNumberAndCustomIdentifier(String phoneNu
return new SetOptionalParamsBuilder(UserInfoType.PHONE, phoneNumber, customIdentifier);
}
+ /**
+ * Sets upi as userInfo and {@link UserInfoType#UPI} as
+ * {@linkplain UserInfoType} for initiating transaction.
+ *
+ * @param upi user's unique personal indentifier that will be used to identify
+ * the end user.
+ * @param customIdentifier will be set for user. Maximum length is 128
+ * characters. It cannot be {@code null} or empty.
+ * @return request builder
+ */
+ public SetOptionalParamsBuilder setUpiAndCustomIdentifier(String upi, String customIdentifier) {
+ return new SetOptionalParamsBuilder(UserInfoType.UPI, upi, customIdentifier);
+ }
+
}
public static class SetOptionalParamsBuilder {
diff --git a/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/enums/UserInfoType.java b/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/enums/UserInfoType.java
index e6601bf..466e11a 100644
--- a/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/enums/UserInfoType.java
+++ b/FrejaEidClient/src/main/java/com/verisec/frejaeid/client/enums/UserInfoType.java
@@ -7,6 +7,8 @@
*
- {@link #SSN}
*
- {@link #PHONE}
*
- {@link #INFERRED}
+ *
- {@link #ORG_ID}
+ *
- {@link #UPI}
*/
public enum UserInfoType {
@@ -31,6 +33,10 @@ public enum UserInfoType {
* UserInfoType org_id for initiating transaction with organisation id of
* user.
*/
- ORG_ID;
-
+ ORG_ID,
+ /**
+ * UserInfoType upi for initiating transaction with unique personal identifier of
+ * user.
+ */
+ UPI;
}
diff --git a/FrejaEidClient/src/test/java/com/verisec/frejaeid/client/http/AuthenticationClientHttpTest.java b/FrejaEidClient/src/test/java/com/verisec/frejaeid/client/http/AuthenticationClientHttpTest.java
index 72d8151..9e887b5 100644
--- a/FrejaEidClient/src/test/java/com/verisec/frejaeid/client/http/AuthenticationClientHttpTest.java
+++ b/FrejaEidClient/src/test/java/com/verisec/frejaeid/client/http/AuthenticationClientHttpTest.java
@@ -140,6 +140,24 @@ public void initiateAuthenticationV1_1_success()
initAuthenticationRequestWithRegistrationStateAndRelyingPartyId,
initAuthResponseString);
+
+
+ InitiateAuthenticationRequest initAuthenticationRequestWithUpi =
+ InitiateAuthenticationRequest.createCustom()
+ .setUpi(UPI)
+ .setMinRegistrationLevel(MinRegistrationLevel.EXTENDED)
+ .setRelyingPartyId(RELYING_PARTY_ID)
+ .build();
+ InitiateAuthenticationRequest expectedInitAuthenticationRequestWithUpi =
+ InitiateAuthenticationRequest.createCustom()
+ .setUpi(UPI)
+ .setMinRegistrationLevel(MinRegistrationLevel.EXTENDED)
+ .build();
+
+ sendInitiateAuthenticationV1_1RequestAndAssertResponse(expectedInitAuthenticationRequestWithUpi,
+ initAuthenticationRequestWithUpi,
+ initAuthResponseString);
+
}
@Test
@@ -202,6 +220,22 @@ public void initiateAuthentication_success()
sendInitiateAuthenticationRequestAndAssertResponse(expectedInitAuthenticationRequestWithRegistrationStateAndRelyingPartyId,
initAuthenticationRequestWithRegistrationStateAndRelyingPartyId,
initAuthResponseString);
+
+ InitiateAuthenticationRequest initAuthenticationRequestWithUpi =
+ InitiateAuthenticationRequest.createCustom()
+ .setUpi(UPI)
+ .setMinRegistrationLevel(MinRegistrationLevel.EXTENDED)
+ .setRelyingPartyId(RELYING_PARTY_ID)
+ .build();
+ InitiateAuthenticationRequest expectedInitAuthenticationRequestWithUpi =
+ InitiateAuthenticationRequest.createCustom()
+ .setUpi(UPI)
+ .setMinRegistrationLevel(MinRegistrationLevel.EXTENDED)
+ .build();
+
+ sendInitiateAuthenticationRequestAndAssertResponse(expectedInitAuthenticationRequestWithUpi,
+ initAuthenticationRequestWithUpi,
+ initAuthResponseString);
}
@Test
diff --git a/FrejaEidClient/src/test/java/com/verisec/frejaeid/client/http/CommonHttpTest.java b/FrejaEidClient/src/test/java/com/verisec/frejaeid/client/http/CommonHttpTest.java
index 219eac8..394581b 100644
--- a/FrejaEidClient/src/test/java/com/verisec/frejaeid/client/http/CommonHttpTest.java
+++ b/FrejaEidClient/src/test/java/com/verisec/frejaeid/client/http/CommonHttpTest.java
@@ -35,6 +35,7 @@ public abstract class CommonHttpTest {
protected static final String QR_CODE_SECRET = "qrCodeSecret";
protected static final String EMAIL = "eid.demo.verisec@gmail.com";
protected static final String SSN = "123455697887";
+ protected static final String UPI = "5633-823597-7862";
protected static final String RELYING_PARTY_ID = "relying_party_id";
protected static final SsnUserInfo SSN_USER_INFO = SsnUserInfo.create(Country.SWEDEN, SSN);
protected static final BasicUserInfo BASIC_USER_INFO = new BasicUserInfo("John", "Fante");
diff --git a/FrejaEidClient/src/test/java/com/verisec/frejaeid/client/http/CustomIdentifierClientHttpTest.java b/FrejaEidClient/src/test/java/com/verisec/frejaeid/client/http/CustomIdentifierClientHttpTest.java
index b0a8d82..83f3a74 100644
--- a/FrejaEidClient/src/test/java/com/verisec/frejaeid/client/http/CustomIdentifierClientHttpTest.java
+++ b/FrejaEidClient/src/test/java/com/verisec/frejaeid/client/http/CustomIdentifierClientHttpTest.java
@@ -53,6 +53,11 @@ public void setCustomAttribute_success()
SetCustomIdentifierRequest.createDefaultWithSsn(SsnUserInfo.create(Country.NORWAY, SSN),
CUSTOM_IDENTIFIER);
sendSetCustomIdentifierRequestAndAssertResponse(customIdentifierRequestDefaultSsn);
+
+ SetCustomIdentifierRequest customIdentifierRequestDefaultUpi =
+ SetCustomIdentifierRequest.createDefaultWithUpi(UPI, CUSTOM_IDENTIFIER);
+ sendSetCustomIdentifierRequestAndAssertResponse(customIdentifierRequestDefaultUpi);
+
SetCustomIdentifierRequest customIdentifierRequestEmail =
SetCustomIdentifierRequest.createCustom().setEmailAndCustomIdentifier(EMAIL, CUSTOM_IDENTIFIER).build();
sendSetCustomIdentifierRequestAndAssertResponse(customIdentifierRequestEmail);
@@ -60,6 +65,11 @@ public void setCustomAttribute_success()
SetCustomIdentifierRequest.createCustom()
.setSsnAndCustomIdentifier(SsnUserInfo.create(Country.NORWAY, SSN), CUSTOM_IDENTIFIER).build();
sendSetCustomIdentifierRequestAndAssertResponse(customIdentifierRequestSsn);
+
+ SetCustomIdentifierRequest customIdentifierRequestUpi =
+ SetCustomIdentifierRequest.createCustom().setUpiAndCustomIdentifier(UPI, CUSTOM_IDENTIFIER).build();
+ sendSetCustomIdentifierRequestAndAssertResponse(customIdentifierRequestUpi);
+
SetCustomIdentifierRequest customIdentifierRequestPhoneNum =
SetCustomIdentifierRequest.createCustom()
.setPhoneNumberAndCustomIdentifier(EMAIL, CUSTOM_IDENTIFIER).build();
diff --git a/FrejaEidClient/src/test/java/com/verisec/frejaeid/client/http/OrganisationIdClientHttpTest.java b/FrejaEidClient/src/test/java/com/verisec/frejaeid/client/http/OrganisationIdClientHttpTest.java
index eaf710c..8b0f8b9 100644
--- a/FrejaEidClient/src/test/java/com/verisec/frejaeid/client/http/OrganisationIdClientHttpTest.java
+++ b/FrejaEidClient/src/test/java/com/verisec/frejaeid/client/http/OrganisationIdClientHttpTest.java
@@ -115,6 +115,15 @@ public void initAddOrganisationId_success()
.build();
sendInitiateAddOrganisationIdRequestAndAssertResponse(initAddOrganisationIdRequestCustomPhoneNum);
+ InitiateAddOrganisationIdRequest initAddOrganisationIdRequestUpi =
+ InitiateAddOrganisationIdRequest.createCustom()
+ .setUpiAndOrganisationId(UPI, OrganisationId.create(ORGANISATION_ID_TITLE,
+ IDENTIFIER_NAME, IDENTIFIER))
+ .setExpiry(Long.MAX_VALUE)
+ .setMinRegistrationLevel(MinRegistrationLevel.BASIC)
+ .build();
+ sendInitiateAddOrganisationIdRequestAndAssertResponse(initAddOrganisationIdRequestUpi);
+
InitiateAddOrganisationIdRequest initAddOrganisationIdRequestWithRelyingPartyId =
InitiateAddOrganisationIdRequest.createCustom()
.setEmailAndOrganisationId(EMAIL, OrganisationId.create(ORGANISATION_ID_TITLE,
@@ -149,6 +158,22 @@ public void initAddOrganisationId_success()
.build();
sendInitiateAddOrganisationIdRequestAndAssertResponse(expectedInitAddOrganisationIdRequestWithDefaultValues,
initAddOrganisationIdRequestWithDefaultValues);
+
+ InitiateAddOrganisationIdRequest initAddOrganisationIdRequestWithUpi =
+ InitiateAddOrganisationIdRequest.createCustom()
+ .setUpiAndOrganisationId(UPI,
+ OrganisationId.create(ORGANISATION_ID_TITLE, IDENTIFIER_NAME,
+ IDENTIFIER))
+ .setRelyingPartyId(RELYING_PARTY_ID)
+ .build();
+ InitiateAddOrganisationIdRequest expectedInitAddOrganisationIdRequestWithUpi =
+ InitiateAddOrganisationIdRequest.createCustom()
+ .setUpiAndOrganisationId(UPI,
+ OrganisationId.create(ORGANISATION_ID_TITLE, IDENTIFIER_NAME,
+ IDENTIFIER))
+ .build();
+ sendInitiateAddOrganisationIdRequestAndAssertResponse(expectedInitAddOrganisationIdRequestWithUpi,
+ initAddOrganisationIdRequestWithUpi);
}
@Test
diff --git a/FrejaEidClient/src/test/java/com/verisec/frejaeid/client/http/SignClientHttpTest.java b/FrejaEidClient/src/test/java/com/verisec/frejaeid/client/http/SignClientHttpTest.java
index 75f8f3f..6ffd866 100644
--- a/FrejaEidClient/src/test/java/com/verisec/frejaeid/client/http/SignClientHttpTest.java
+++ b/FrejaEidClient/src/test/java/com/verisec/frejaeid/client/http/SignClientHttpTest.java
@@ -140,6 +140,18 @@ public void initiateSignV1_1_success()
.build();
sendInitiateV11SignRequestAndAssertResponse(initSignCustomRequestWithAdvancedSignatureType);
+
+ InitiateSignRequest initSignCustomRequestWithUpi = InitiateSignRequest.createCustom()
+ .setUpi(UPI)
+ .setDataToSign(DataToSign.create(dataToSignText, binaryData))
+ .setRelyingPartyId(RELYING_PARTY_ID)
+ .build();
+ InitiateSignRequest expectedInitSignCustomRequestWithUpi = InitiateSignRequest.createCustom()
+ .setUpi(UPI)
+ .setDataToSign(DataToSign.create(dataToSignText, binaryData))
+ .build();
+ sendInitiateV11SignRequestAndAssertResponse(expectedInitSignCustomRequestWithUpi,
+ initSignCustomRequestWithUpi);
}
@Test
@@ -247,6 +259,14 @@ public void initiateSign_success()
.build();
sendInitiateSignRequestAndAssertResponse(initSignCustomRequestWithAdvancedSignatureType);
+ InitiateSignRequest initSignCustomRequestWithUpi = InitiateSignRequest.createCustom()
+ .setUpi(UPI)
+ .setDataToSign(DataToSign.create(dataToSignText), SignatureType.XML_MINAMEDDELANDEN)
+ .setMinRegistrationLevel(MinRegistrationLevel.PLUS)
+ .setAttributesToReturn(ATTRIBUTES_TO_RETURN)
+ .build();
+ sendInitiateSignRequestAndAssertResponse(initSignCustomRequestWithUpi);
+
}
@Test