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