diff --git a/ansible/vars_files/cs_modules.yml b/ansible/vars_files/cs_modules.yml index 128d4f6b05..272d29a501 100644 --- a/ansible/vars_files/cs_modules.yml +++ b/ansible/vars_files/cs_modules.yml @@ -1,7 +1,8 @@ --- cs_modules: - centralserver-admin-service: + cs-admin-service: dir: central-server/admin-service/application build: build lib: centralserver-admin-service-1.0.jar target: /usr/share/xroad/jlib + service: xroad-center diff --git a/src/central-server/admin-service/application/src/main/resources/permissions.yml b/src/central-server/admin-service/application/src/main/resources/permissions.yml index 7831623c95..ed68702b19 100644 --- a/src/central-server/admin-service/application/src/main/resources/permissions.yml +++ b/src/central-server/admin-service/application/src/main/resources/permissions.yml @@ -13,6 +13,7 @@ - EDIT_MEMBER_NAME: [ XROAD_REGISTRATION_OFFICER ] - ADD_MEMBER_SUBSYSTEM: [ XROAD_REGISTRATION_OFFICER ] - REMOVE_MEMBER_SUBSYSTEM: [ XROAD_REGISTRATION_OFFICER ] +- EDIT_MEMBER_SUBSYSTEM: [ XROAD_REGISTRATION_OFFICER ] - UNREGISTER_MEMBER: [ XROAD_REGISTRATION_OFFICER ] - UNREGISTER_SUBSYSTEM: [ XROAD_REGISTRATION_OFFICER ] - ADD_CLIENT_REGISTRATION_REQUEST: [ XROAD_REGISTRATION_OFFICER, XROAD_MANAGEMENT_SERVICE ] diff --git a/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/domain/FlattenedSecurityServerClientView.java b/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/domain/FlattenedSecurityServerClientView.java index 03a6d847d8..8a96ee6951 100644 --- a/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/domain/FlattenedSecurityServerClientView.java +++ b/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/domain/FlattenedSecurityServerClientView.java @@ -45,6 +45,7 @@ public class FlattenedSecurityServerClientView extends Auditable { private MemberClass memberClass; private String memberCode; private String subsystemCode; + private String subsystemName; private String memberName; private XRoadObjectType type; } diff --git a/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/domain/Subsystem.java b/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/domain/Subsystem.java index ffc9dace33..a6b971ab6b 100644 --- a/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/domain/Subsystem.java +++ b/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/domain/Subsystem.java @@ -42,7 +42,7 @@ public class Subsystem extends SecurityServerClient { private String subsystemCode; private String name; - public Subsystem(String name, XRoadMember member, ClientId identifier) { + public Subsystem(XRoadMember member, ClientId identifier, String name) { super(SubsystemId.create(identifier), name); if (!identifier.subsystemContainsMember(member.getIdentifier())) { throw new IllegalArgumentException("Subsystem identifier does not match member"); diff --git a/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/service/SubsystemService.java b/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/service/SubsystemService.java index 21f361c7f8..13e3017ae1 100644 --- a/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/service/SubsystemService.java +++ b/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/service/SubsystemService.java @@ -45,4 +45,5 @@ public interface SubsystemService { void deleteSubsystem(ClientId subsystemClientId); + Optional updateSubsystemName(ClientId clientId, String newName); } diff --git a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/FlattenedSecurityServerClientViewEntity.java b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/FlattenedSecurityServerClientViewEntity.java index 6e4ef67eb2..5f118049c1 100644 --- a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/FlattenedSecurityServerClientViewEntity.java +++ b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/FlattenedSecurityServerClientViewEntity.java @@ -79,6 +79,9 @@ public class FlattenedSecurityServerClientViewEntity extends AuditableEntity { @Column(name = "subsystem_code") private String subsystemCode; + @Column(name = "subsystem_name") + private String subsystemName; + @Column(name = "member_name") private String memberName; diff --git a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/SecurityServerClientEntity.java b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/SecurityServerClientEntity.java index a25a9fa996..25398216ab 100644 --- a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/SecurityServerClientEntity.java +++ b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/SecurityServerClientEntity.java @@ -46,7 +46,6 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import org.niis.xroad.cs.admin.core.entity.validation.EntityIdentifier; import java.util.HashSet; import java.util.Set; @@ -86,15 +85,8 @@ public abstract class SecurityServerClientEntity extends AuditableEntity { @Setter private Set serverClients = new HashSet<>(); - @EntityIdentifier - @Column(name = "name") - @Getter - @Setter - private String name; - - protected SecurityServerClientEntity(String name, ClientIdEntity identifier) { + protected SecurityServerClientEntity(ClientIdEntity identifier) { this.identifier = identifier; - this.name = name; } } diff --git a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/SubsystemEntity.java b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/SubsystemEntity.java index 26233c746c..bbac71221c 100644 --- a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/SubsystemEntity.java +++ b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/SubsystemEntity.java @@ -39,6 +39,8 @@ import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.Setter; +import org.niis.xroad.cs.admin.core.entity.validation.OptionalEntityIdentifier; import static org.niis.xroad.cs.admin.core.entity.SubsystemEntity.DISCRIMINATOR_VALUE; @@ -60,17 +62,24 @@ public class SubsystemEntity extends SecurityServerClientEntity { @Getter private String subsystemCode; + @OptionalEntityIdentifier + @Column(name = "name") + @Getter + @Setter + private String name; + public SubsystemEntity(XRoadMemberEntity member, ClientId identifier) { this(null, member, identifier); } public SubsystemEntity(String name, XRoadMemberEntity member, ClientId identifier) { - super(name, SubsystemIdEntity.ensure(identifier)); + super(SubsystemIdEntity.ensure(identifier)); if (!identifier.subsystemContainsMember(member.getIdentifier())) { throw new IllegalArgumentException("Subsystem identifier does not match member"); } this.xroadMember = member; this.subsystemCode = identifier.getSubsystemCode(); + this.name = name; } } diff --git a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/XRoadMemberEntity.java b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/XRoadMemberEntity.java index e3a0c93976..8ddf6e8844 100644 --- a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/XRoadMemberEntity.java +++ b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/XRoadMemberEntity.java @@ -72,6 +72,12 @@ public class XRoadMemberEntity extends SecurityServerClientEntity { @Access(AccessType.FIELD) private String memberCode; + @EntityIdentifier + @Column(name = "name") + @Getter + @Setter + private String name; + @Column(name = "administrative_contact") @Getter @Setter @@ -88,11 +94,12 @@ public class XRoadMemberEntity extends SecurityServerClientEntity { private Set subsystems = new HashSet<>(0); public XRoadMemberEntity(String name, ClientId identifier, MemberClassEntity memberClass) { - super(MemberIdEntity.ensure(identifier), name); + super(MemberIdEntity.ensure(identifier)); boolean isMemberClassInconsistent = !Objects.equals(identifier.getMemberClass(), memberClass.getCode()); if (isMemberClassInconsistent) { throw new IllegalArgumentException("identifier and memberClass are not consistent"); } + this.name = name; this.memberCode = identifier.getMemberCode(); this.memberClass = memberClass; } diff --git a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/validation/EntityIdentifier.java b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/validation/EntityIdentifier.java index 53d0088b57..24537a1c94 100644 --- a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/validation/EntityIdentifier.java +++ b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/validation/EntityIdentifier.java @@ -29,8 +29,6 @@ import jakarta.validation.Constraint; import jakarta.validation.Payload; import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Pattern; -import org.hibernate.validator.constraints.Length; import java.lang.annotation.Documented; import java.lang.annotation.Retention; @@ -42,38 +40,12 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; @NotBlank -@Length( - max = 255, - message = EntityIdentifier.LENGTH_VIOLATION_MESSAGE -) -@Pattern( - regexp = "^" - + "\\s*(" - + "(?!" - + "\\s*" // Don't allow preceding spaces while eliminating - + "(?:\\.$|\\./|\\.\\.$|\\.\\./)" // Eliminate beginnings ".", "..", "./", "../" - + ")" - + "(" - + "(?!/\\.\\s*$|/\\./|/\\.\\.\\s*$|/\\.\\./)" // Eliminate anywhere "/./", "/../" and ending "/.", "/.." - // and don't allow following spaces while eliminating the - // ending - + "[^\\\\\\u0000-\\u001F\\u007F-\\u009F\\u200B\\uFEFF]" // Allow only printable characters - + ")*" - + ")?" - + "$", - message = EntityIdentifier.PATTERN_VIOLATION_MESSAGE -) +@OptionalEntityIdentifier @Target({METHOD, FIELD, ANNOTATION_TYPE}) @Retention(RUNTIME) @Constraint(validatedBy = {}) @Documented public @interface EntityIdentifier { - String LENGTH_VIOLATION_MESSAGE = "length must be less or equal to {max}"; - String PATTERN_VIOLATION_MESSAGE = "must not " - + "start with \".\", \"./\", \"..\", \"../\", " - + "contain non-printable characters, \"/./\", \"/../\", " - + "end with \"/.\", \"/..\""; - String message() default "X-Road identifier is invalid"; Class[] groups() default {}; diff --git a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/validation/OptionalEntityIdentifier.java b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/validation/OptionalEntityIdentifier.java new file mode 100644 index 0000000000..73620b9c0b --- /dev/null +++ b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/entity/validation/OptionalEntityIdentifier.java @@ -0,0 +1,80 @@ +/* + * The MIT License + *

+ * Copyright (c) 2019- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2018 Estonian Information System Authority (RIA), + * Nordic Institute for Interoperability Solutions (NIIS), Population Register Centre (VRK) + * Copyright (c) 2015-2017 Estonian Information System Authority (RIA), Population Register Centre (VRK) + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.niis.xroad.cs.admin.core.entity.validation; + +import jakarta.validation.Constraint; +import jakarta.validation.Payload; +import jakarta.validation.constraints.Pattern; +import org.hibernate.validator.constraints.Length; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +@Length( + max = 255, + message = OptionalEntityIdentifier.LENGTH_VIOLATION_MESSAGE +) +@Pattern( + regexp = "^" + + "\\s*(" + + "(?!" + + "\\s*" // Don't allow preceding spaces while eliminating + + "(?:\\.$|\\./|\\.\\.$|\\.\\./)" // Eliminate beginnings ".", "..", "./", "../" + + ")" + + "(" + + "(?!/\\.\\s*$|/\\./|/\\.\\.\\s*$|/\\.\\./)" // Eliminate anywhere "/./", "/../" and ending "/.", "/.." + // and don't allow following spaces while eliminating the + // ending + + "[^\\\\\\u0000-\\u001F\\u007F-\\u009F\\u200B\\uFEFF]" // Allow only printable characters + + ")*" + + ")?" + + "$", + message = OptionalEntityIdentifier.PATTERN_VIOLATION_MESSAGE +) +@Target({METHOD, FIELD, ANNOTATION_TYPE}) +@Retention(RUNTIME) +@Constraint(validatedBy = {}) +@Documented +public @interface OptionalEntityIdentifier { + String LENGTH_VIOLATION_MESSAGE = "length must be less or equal to {max}"; + String PATTERN_VIOLATION_MESSAGE = "must not " + + "start with \".\", \"./\", \"..\", \"../\", " + + "contain non-printable characters, \"/./\", \"/../\", " + + "end with \"/.\", \"/..\""; + + String message() default "X-Road identifier is invalid"; + + Class[] groups() default {}; + + Class[] payload() default {}; +} diff --git a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/service/SubsystemServiceImpl.java b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/service/SubsystemServiceImpl.java index 6d6c38c4e8..1a8b03c0b3 100644 --- a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/service/SubsystemServiceImpl.java +++ b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/service/SubsystemServiceImpl.java @@ -135,6 +135,20 @@ public void deleteSubsystem(ClientId subsystemClientId) { subsystemRepository.deleteById(subsystem.getId()); } + @Override + public Optional updateSubsystemName(ClientId clientId, String newName) { + auditDataHelper.put(MEMBER_SUBSYSTEM_NAME, newName); + auditDataHelper.put(MEMBER_SUBSYSTEM_CODE, newName); + auditDataHelper.put(MEMBER_CLASS, clientId.getMemberClass()); + auditDataHelper.put(MEMBER_CODE, clientId.getMemberCode()); + return subsystemRepository.findByIdentifier(clientId) + .map(subsystem -> { + subsystem.setName(newName); + return subsystem; + }) + .map(subsystemConverter::toDto); + } + private boolean isRegistered(SubsystemEntity subsystem) { return !CollectionUtils.isEmpty(subsystem.getServerClients()); } diff --git a/src/central-server/admin-service/core/src/test/java/org/niis/xroad/cs/admin/core/entity/validation/EntityIdentifierValidatorTest.java b/src/central-server/admin-service/core/src/test/java/org/niis/xroad/cs/admin/core/entity/validation/EntityIdentifierValidatorTest.java index f3c601811a..957dbbfb51 100644 --- a/src/central-server/admin-service/core/src/test/java/org/niis/xroad/cs/admin/core/entity/validation/EntityIdentifierValidatorTest.java +++ b/src/central-server/admin-service/core/src/test/java/org/niis/xroad/cs/admin/core/entity/validation/EntityIdentifierValidatorTest.java @@ -82,12 +82,12 @@ public void shouldHaveInvalid(String input, String expectedFault) { private static Stream invalidEntityIdentifiers() { return Stream.of( Arguments.of("", "must not be blank"), - Arguments.of("./", EntityIdentifier.PATTERN_VIOLATION_MESSAGE), - Arguments.of("../", EntityIdentifier.PATTERN_VIOLATION_MESSAGE), - Arguments.of("/../", EntityIdentifier.PATTERN_VIOLATION_MESSAGE), - Arguments.of("/.", EntityIdentifier.PATTERN_VIOLATION_MESSAGE), - Arguments.of("/./", EntityIdentifier.PATTERN_VIOLATION_MESSAGE), - Arguments.of(">CONTAINS NON-PRINTABLE CHARACTER: \u0000<", EntityIdentifier.PATTERN_VIOLATION_MESSAGE), + Arguments.of("./", OptionalEntityIdentifier.PATTERN_VIOLATION_MESSAGE), + Arguments.of("../", OptionalEntityIdentifier.PATTERN_VIOLATION_MESSAGE), + Arguments.of("/../", OptionalEntityIdentifier.PATTERN_VIOLATION_MESSAGE), + Arguments.of("/.", OptionalEntityIdentifier.PATTERN_VIOLATION_MESSAGE), + Arguments.of("/./", OptionalEntityIdentifier.PATTERN_VIOLATION_MESSAGE), + Arguments.of(">CONTAINS NON-PRINTABLE CHARACTER: \u0000<", OptionalEntityIdentifier.PATTERN_VIOLATION_MESSAGE), Arguments.of("TOO LONG INPUT" + " ".repeat(255), "length must be less or equal to 255") ); } diff --git a/src/central-server/admin-service/core/src/test/java/org/niis/xroad/cs/admin/core/service/SubsystemServiceImplTest.java b/src/central-server/admin-service/core/src/test/java/org/niis/xroad/cs/admin/core/service/SubsystemServiceImplTest.java index ec0664473d..33107ddeea 100644 --- a/src/central-server/admin-service/core/src/test/java/org/niis/xroad/cs/admin/core/service/SubsystemServiceImplTest.java +++ b/src/central-server/admin-service/core/src/test/java/org/niis/xroad/cs/admin/core/service/SubsystemServiceImplTest.java @@ -109,6 +109,7 @@ public class SubsystemServiceImplTest implements WithInOrder { @DisplayName("add(Client clientDto)") class AddMethod { private final String memberName = "member name"; + private final String subsystemName = "subsystem name"; private final MemberId memberId = MemberId.create("TEST", "CLASS", "MEMBER"); private final SubsystemId subsystemId = SubsystemId.create("TEST", "CLASS", "MEMBER", "SUBSYSTEM"); private final SubsystemIdEntity subsystemIdEntity = SubsystemIdEntity.ensure(subsystemId); @@ -126,7 +127,7 @@ void shouldCreateClientWhenNotAlreadyPresent() { when(xRoadMemberRepository.findMember(memberId)).thenReturn(Optional.of(xRoadMember)); - SecurityServerClient result = subsystemService.add(new SubsystemCreationRequest(memberId, subsystemId)); + SecurityServerClient result = subsystemService.add(new SubsystemCreationRequest(memberId, subsystemId, subsystemName)); assertEquals("MEMBER", result.getIdentifier().getMemberCode()); @@ -144,7 +145,7 @@ void shouldNotCreateClientWhenAlreadyPresent() { SubsystemEntity presentSecurityServerClient = mock(SubsystemEntity.class); when(subsystemRepository.findOneBy(subsystemId)).thenReturn(Optional.of(presentSecurityServerClient)); - Executable testable = () -> subsystemService.add(new SubsystemCreationRequest(memberId, subsystemId)); + Executable testable = () -> subsystemService.add(new SubsystemCreationRequest(memberId, subsystemId, subsystemName)); DataIntegrityException exception = assertThrows(DataIntegrityException.class, testable); assertEquals(SUBSYSTEM_EXISTS.getDescription(), exception.getMessage()); diff --git a/src/central-server/admin-service/globalconf-generator/src/main/java/org/niis/xroad/cs/admin/globalconf/generator/SharedParametersLoader.java b/src/central-server/admin-service/globalconf-generator/src/main/java/org/niis/xroad/cs/admin/globalconf/generator/SharedParametersLoader.java index 9b90180dd9..eee06c853d 100644 --- a/src/central-server/admin-service/globalconf-generator/src/main/java/org/niis/xroad/cs/admin/globalconf/generator/SharedParametersLoader.java +++ b/src/central-server/admin-service/globalconf-generator/src/main/java/org/niis/xroad/cs/admin/globalconf/generator/SharedParametersLoader.java @@ -244,7 +244,8 @@ List map(List flatte private void addSubSystem(FlattenedSecurityServerClientView client) { var clientId = toClientId(client); - getSubsystemList(toMemberId(clientId)).add(new SharedParameters.Subsystem(client.getSubsystemCode(), clientId)); + getSubsystemList(toMemberId(clientId)) + .add(new SharedParameters.Subsystem(client.getSubsystemCode(), client.getSubsystemName(), clientId)); } private SharedParameters.Member toMember(FlattenedSecurityServerClientView client) { diff --git a/src/central-server/admin-service/globalconf-generator/src/main/java/org/niis/xroad/cs/admin/globalconf/generator/SharedParametersV5Generator.java b/src/central-server/admin-service/globalconf-generator/src/main/java/org/niis/xroad/cs/admin/globalconf/generator/SharedParametersV5Generator.java new file mode 100644 index 0000000000..f1362ce548 --- /dev/null +++ b/src/central-server/admin-service/globalconf-generator/src/main/java/org/niis/xroad/cs/admin/globalconf/generator/SharedParametersV5Generator.java @@ -0,0 +1,47 @@ +/* + * The MIT License + * + * Copyright (c) 2019- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2018 Estonian Information System Authority (RIA), + * Nordic Institute for Interoperability Solutions (NIIS), Population Register Centre (VRK) + * Copyright (c) 2015-2017 Estonian Information System Authority (RIA), Population Register Centre (VRK) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.niis.xroad.cs.admin.globalconf.generator; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.niis.xroad.globalconf.model.SharedParametersV5Marshaller; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +@Slf4j +public class SharedParametersV5Generator { + private final SharedParametersV5Marshaller marshaller = new SharedParametersV5Marshaller(); + private final SharedParametersLoader loader; + + String generate() { + log.debug("Generating shared parameters"); + var parameters = loader.load(); + log.trace("Shared parameters loaded: {}", parameters); + return marshaller.marshall(parameters); + } +} diff --git a/src/central-server/admin-service/globalconf-generator/src/main/java/org/niis/xroad/cs/admin/globalconf/generator/V5ConfigurationsPartsGenerator.java b/src/central-server/admin-service/globalconf-generator/src/main/java/org/niis/xroad/cs/admin/globalconf/generator/V5ConfigurationsPartsGenerator.java new file mode 100644 index 0000000000..74f32a9e0b --- /dev/null +++ b/src/central-server/admin-service/globalconf-generator/src/main/java/org/niis/xroad/cs/admin/globalconf/generator/V5ConfigurationsPartsGenerator.java @@ -0,0 +1,65 @@ +/* + * The MIT License + * + * Copyright (c) 2019- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2018 Estonian Information System Authority (RIA), + * Nordic Institute for Interoperability Solutions (NIIS), Population Register Centre (VRK) + * Copyright (c) 2015-2017 Estonian Information System Authority (RIA), Population Register Centre (VRK) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.niis.xroad.cs.admin.globalconf.generator; + +import lombok.RequiredArgsConstructor; +import org.niis.xroad.globalconf.model.ConfigurationConstants; +import org.springframework.stereotype.Component; + +import java.util.List; + +import static java.nio.charset.StandardCharsets.UTF_8; +import static org.niis.xroad.globalconf.model.ConfigurationConstants.CONTENT_ID_SHARED_PARAMETERS; + +@Component +@RequiredArgsConstructor +public class V5ConfigurationsPartsGenerator implements ConfigurationPartsGenerator { + + private static final int CONFIGURATION_VERSION = 5; + + private final PrivateParametersV3Generator privateParametersV3Generator; + private final SharedParametersV5Generator sharedParametersV5Generator; + + public int getConfigurationVersion() { + return CONFIGURATION_VERSION; + } + + public List generateConfigurationParts() { + return List.of( + ConfigurationPart.builder() + .contentIdentifier(ConfigurationConstants.CONTENT_ID_PRIVATE_PARAMETERS) + .filename(ConfigurationConstants.FILE_NAME_PRIVATE_PARAMETERS) + .data(privateParametersV3Generator.generate().getBytes(UTF_8)) + .build(), + ConfigurationPart.builder() + .contentIdentifier(CONTENT_ID_SHARED_PARAMETERS) + .filename(ConfigurationConstants.FILE_NAME_SHARED_PARAMETERS) + .data(sharedParametersV5Generator.generate().getBytes(UTF_8)) + .build()); + } + +} diff --git a/src/central-server/admin-service/globalconf-generator/src/test/java/org/niis/xroad/cs/admin/globalconf/generator/SharedParametersLoaderTest.java b/src/central-server/admin-service/globalconf-generator/src/test/java/org/niis/xroad/cs/admin/globalconf/generator/SharedParametersLoaderTest.java index bb3bd078e6..569e1f1893 100644 --- a/src/central-server/admin-service/globalconf-generator/src/test/java/org/niis/xroad/cs/admin/globalconf/generator/SharedParametersLoaderTest.java +++ b/src/central-server/admin-service/globalconf-generator/src/test/java/org/niis/xroad/cs/admin/globalconf/generator/SharedParametersLoaderTest.java @@ -134,7 +134,7 @@ void loadSharedParameters() { when(securityServerService.findAll()).thenReturn(getSecurityServers()); when(clientService.find(new ClientService.SearchParameters() .setSecurityServerId(SECURITY_SERVER_ID).setSecurityServerEnabled(true))) - .thenReturn(List.of(getFlattenedSecurityServerClientView("M2", "S1"))); + .thenReturn(List.of(getFlattenedSecurityServerClientView("M2", "S1", null))); when(globalGroupService.findGlobalGroups()).thenReturn(List.of(getGlobalGroup())); when(globalGroupMemberService.findByGroupCode(GLOBAL_GROUP_CODE)).thenReturn(List.of( @@ -285,7 +285,7 @@ void shouldMapMembers() { assertThat(member.getId()).isEqualTo(ClientId.Conf.create(XROAD_INSTANCE, "CLASS", "M1")); assertThat(member.getSubsystems()) - .containsOnly(new SharedParameters.Subsystem("S1", + .containsOnly(new SharedParameters.Subsystem("S1", null, ClientId.Conf.create(XROAD_INSTANCE, "CLASS", "M1", "S1"))); }, member -> { @@ -293,9 +293,9 @@ void shouldMapMembers() { assertThat(member.getId()).isEqualTo(ClientId.Conf.create(XROAD_INSTANCE, "CLASS", "M2")); assertThat(member.getSubsystems()) .containsOnly( - new SharedParameters.Subsystem("S1", + new SharedParameters.Subsystem("S1", null, ClientId.Conf.create(XROAD_INSTANCE, "CLASS", "M2", "S1")), - new SharedParameters.Subsystem("S2", + new SharedParameters.Subsystem("S2", "Name of S2", ClientId.Conf.create(XROAD_INSTANCE, "CLASS", "M2", "S2"))); } ); @@ -303,14 +303,16 @@ void shouldMapMembers() { private List getClients() { return List.of( - getFlattenedSecurityServerClientView("M1", null), - getFlattenedSecurityServerClientView("M1", "S1"), - getFlattenedSecurityServerClientView("M2", "S1"), - getFlattenedSecurityServerClientView("M2", "S2"), - getFlattenedSecurityServerClientView("M2", null)); + getFlattenedSecurityServerClientView("M1", null, null), + getFlattenedSecurityServerClientView("M1", "S1", null), + getFlattenedSecurityServerClientView("M2", "S1", null), + getFlattenedSecurityServerClientView("M2", "S2", "Name of S2"), + getFlattenedSecurityServerClientView("M2", null, null)); } - private FlattenedSecurityServerClientView getFlattenedSecurityServerClientView(String memberCode, String subsystemCode) { + private FlattenedSecurityServerClientView getFlattenedSecurityServerClientView(String memberCode, + String subsystemCode, + String subsystemName) { var client = new FlattenedSecurityServerClientView(); client.setXroadInstance(XROAD_INSTANCE); @@ -319,6 +321,7 @@ private FlattenedSecurityServerClientView getFlattenedSecurityServerClientView(S client.setMemberCode(memberCode); client.setSubsystemCode(subsystemCode); + client.setSubsystemName(subsystemName); client.setType(subsystemCode == null ? MEMBER : SUBSYSTEM); client.setMemberName(String.format("Member %s%s", memberCode, subsystemCode != null ? "/" + subsystemCode : "")); return client; diff --git a/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/converter/SubsystemCreationRequestMapper.java b/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/converter/SubsystemCreationRequestMapper.java index 468b9a859f..0c1db70fda 100644 --- a/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/converter/SubsystemCreationRequestMapper.java +++ b/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/converter/SubsystemCreationRequestMapper.java @@ -35,6 +35,10 @@ import org.niis.xroad.cs.openapi.model.SubsystemAddDto; import org.springframework.stereotype.Component; +import java.util.Optional; + +import static java.util.function.Predicate.not; + @Component @RequiredArgsConstructor public class SubsystemCreationRequestMapper implements GenericUniDirectionalMapper { @@ -44,11 +48,14 @@ public class SubsystemCreationRequestMapper implements GenericUniDirectionalMapp @Override public SubsystemCreationRequest toTarget(SubsystemAddDto source) { var subsystemId = createSubsystemId(source.getSubsystemId()); + var name = Optional.ofNullable(source.getSubsystemName()) + .filter(not(String::isEmpty)) + .orElse(null); return new SubsystemCreationRequest( subsystemId.getMemberId(), subsystemId, - source.getSubsystemName()); + name); } private SubsystemId createSubsystemId(NewSubsystemIdDto source) { diff --git a/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/converter/db/ClientDtoConverter.java b/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/converter/db/ClientDtoConverter.java index 2487fa2bd2..b0ec0b3ae0 100644 --- a/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/converter/db/ClientDtoConverter.java +++ b/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/converter/db/ClientDtoConverter.java @@ -86,7 +86,6 @@ public SecurityServerClient fromDto(ClientDto source) { ClientId clientId = clientIdDtoConverter.fromDto(clientIdDto); XRoadIdDto.TypeEnum clientType = clientIdDto.getType(); - switch (clientType) { case MEMBER: String memberClassCode = clientIdDto.getMemberClass(); @@ -110,10 +109,7 @@ public SecurityServerClient fromDto(ClientDto source) { "code", clientIdDto.getMemberCode() )); - return new Subsystem( - xRoadMember, - clientId - ); + return new Subsystem(xRoadMember, clientId, source.getMemberName()); //TODO #subs verify this case null: default: throw new IllegalArgumentException("Invalid client type: " + clientType); diff --git a/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/converter/db/SubsystemDtoConverter.java b/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/converter/db/SubsystemDtoConverter.java index dc3f96acab..243fba7aec 100644 --- a/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/converter/db/SubsystemDtoConverter.java +++ b/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/converter/db/SubsystemDtoConverter.java @@ -50,6 +50,7 @@ public class SubsystemDtoConverter extends DtoConverter @Override public SubsystemDto toDto(Subsystem source) { return new SubsystemDto() + .subsystemName(source.getName()) .subsystemId(clientIdDtoConverter.toDto(source.getIdentifier())) .usedSecurityServers(source.getServerClients().stream().map(serverClient -> { UsedSecurityServersDto usedSecurityServersDto = new UsedSecurityServersDto(); diff --git a/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/openapi/SubsystemsApiController.java b/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/openapi/SubsystemsApiController.java index 6d807eeea0..6397f27117 100644 --- a/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/openapi/SubsystemsApiController.java +++ b/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/openapi/SubsystemsApiController.java @@ -29,7 +29,9 @@ import ee.ria.xroad.common.identifier.SecurityServerId; import lombok.RequiredArgsConstructor; +import org.niis.xroad.common.exception.NotFoundException; import org.niis.xroad.common.exception.ValidationFailureException; +import org.niis.xroad.cs.admin.api.exception.ErrorMessage; import org.niis.xroad.cs.admin.api.service.SecurityServerService; import org.niis.xroad.cs.admin.api.service.SubsystemService; import org.niis.xroad.cs.admin.rest.api.converter.SubsystemCreationRequestMapper; @@ -37,6 +39,7 @@ import org.niis.xroad.cs.openapi.SubsystemsApi; import org.niis.xroad.cs.openapi.model.ClientDto; import org.niis.xroad.cs.openapi.model.SubsystemAddDto; +import org.niis.xroad.cs.openapi.model.SubsystemNameDto; import org.niis.xroad.restapi.config.audit.AuditEventMethod; import org.niis.xroad.restapi.converter.ClientIdConverter; import org.niis.xroad.restapi.converter.SecurityServerIdConverter; @@ -51,6 +54,7 @@ import static org.niis.xroad.cs.admin.api.exception.ErrorMessage.INVALID_SUBSYSTEM_ID; import static org.niis.xroad.restapi.config.audit.RestApiAuditEvent.ADD_SUBSYSTEM; import static org.niis.xroad.restapi.config.audit.RestApiAuditEvent.DELETE_SUBSYSTEM; +import static org.niis.xroad.restapi.config.audit.RestApiAuditEvent.EDIT_SUBSYSTEM; import static org.niis.xroad.restapi.config.audit.RestApiAuditEvent.UNREGISTER_SUBSYSTEM; import static org.springframework.http.HttpStatus.CREATED; import static org.springframework.http.ResponseEntity.noContent; @@ -92,6 +96,19 @@ public ResponseEntity unregisterSubsystem(String subsystemId, String serve return noContent().build(); } + @Override + @PreAuthorize("hasAuthority('EDIT_MEMBER_SUBSYSTEM')") + @AuditEventMethod(event = EDIT_SUBSYSTEM) + public ResponseEntity updateSubsystemName(String subsystemId, SubsystemNameDto subsystemNameDto) { + verifySubsystemId(subsystemId); + return Optional.of(subsystemId) + .map(clientIdConverter::convertId) + .flatMap(clientId -> subsystemService.updateSubsystemName(clientId, subsystemNameDto.getSubsystemName())) + .map(clientDtoConverter::toDto) + .map(ResponseEntity::ok) + .orElseThrow(() -> new NotFoundException(ErrorMessage.SUBSYSTEM_NOT_FOUND)); + } + @Override @PreAuthorize("hasAuthority('REMOVE_MEMBER_SUBSYSTEM')") @AuditEventMethod(event = DELETE_SUBSYSTEM) diff --git a/src/central-server/admin-service/infra-jpa/src/main/resources/liquibase/centerui-changelog.xml b/src/central-server/admin-service/infra-jpa/src/main/resources/liquibase/centerui-changelog.xml index 5c38af6ba7..7181b6e6a5 100644 --- a/src/central-server/admin-service/infra-jpa/src/main/resources/liquibase/centerui-changelog.xml +++ b/src/central-server/admin-service/infra-jpa/src/main/resources/liquibase/centerui-changelog.xml @@ -30,6 +30,7 @@ + diff --git a/src/central-server/admin-service/infra-jpa/src/main/resources/liquibase/centerui/202502051111-client-search-view.xml b/src/central-server/admin-service/infra-jpa/src/main/resources/liquibase/centerui/202502051111-client-search-view.xml new file mode 100644 index 0000000000..4106f1188b --- /dev/null +++ b/src/central-server/admin-service/infra-jpa/src/main/resources/liquibase/centerui/202502051111-client-search-view.xml @@ -0,0 +1,45 @@ + + + + Add subsystem name to the flattened_security_server_client view. + + + (SELECT c.id, + c.server_client_id, + c.member_code, + c.name as member_name, + c.type, + c.member_class_id, + c.subsystem_code, + NULL as subsystem_name, + c.created_at, + c.updated_at, + i.xroad_instance + FROM security_server_clients c + LEFT JOIN identifiers i + ON c.server_client_id = i.id + WHERE c.type = 'XRoadMember') + union + (SELECT c.id, + c.server_client_id, + m.member_code, + m.name as member_name, + c.type, + m.member_class_id, + c.subsystem_code, + c.name as subsystem_name, + c.created_at, + c.updated_at, + i.xroad_instance + FROM security_server_clients c + LEFT JOIN security_server_clients m + ON c.xroad_member_id = m.id + LEFT JOIN identifiers i + ON c.server_client_id = i.id + WHERE c.type = 'Subsystem'); + + + diff --git a/src/central-server/admin-service/int-test/build.gradle.kts b/src/central-server/admin-service/int-test/build.gradle.kts index bddbb686e3..2cb053bb84 100644 --- a/src/central-server/admin-service/int-test/build.gradle.kts +++ b/src/central-server/admin-service/int-test/build.gradle.kts @@ -66,3 +66,7 @@ tasks.register("intTest") { tasks.named("check") { dependsOn(tasks.named("intTest")) } + +archUnit { + setSkip(true) +} diff --git a/src/central-server/admin-service/ui-system-test/build.gradle.kts b/src/central-server/admin-service/ui-system-test/build.gradle.kts index dca4854448..cda228d2d9 100644 --- a/src/central-server/admin-service/ui-system-test/build.gradle.kts +++ b/src/central-server/admin-service/ui-system-test/build.gradle.kts @@ -47,3 +47,7 @@ tasks.register("systemTest") { showStandardStreams = true } } + +archUnit { + setSkip(true) +} diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/MemberSubsystemsStepDefs.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/MemberSubsystemsStepDefs.java index 37e4da1a98..7363265653 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/MemberSubsystemsStepDefs.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/MemberSubsystemsStepDefs.java @@ -44,28 +44,40 @@ public void subsystemsTableIsShown() { memberSubsystemsPageObj.listSubsystems().shouldBe(Condition.enabled); } - @Step("A new subsystem with code: {} is added") + @Step("A new subsystem with code: {string} is added") public void subsystemIsAdded(String subsystemCode) { + subsystemIsAdded(subsystemCode, null); + } + + @Step("A new subsystem with code: {string} and name: {string} is added") + public void subsystemIsAdded(String subsystemCode, String subsystemName) { memberSubsystemsPageObj.btnAddSubsystem().click(); commonPageObj.dialog.btnSave().shouldNotBe(Condition.enabled); commonPageObj.dialog.btnCancel().shouldBe(Condition.enabled); vTextField(memberSubsystemsPageObj.addDialog().subsystemCode()) .setValue(subsystemCode); + vTextField(memberSubsystemsPageObj.addDialog().subsystemName()) + .setValue(subsystemName); commonPageObj.dialog.btnSave().shouldBe(Condition.enabled).click(); commonPageObj.snackBar.success().shouldBe(Condition.visible); commonPageObj.snackBar.btnClose().click(); } - @Step("Subsystem with code: {} and status: {} is listed") + @Step("Subsystem with code: {string} and status: {string} is listed") public void subsystemIsShown(String subsystemCode, String subsystemStatus) { memberSubsystemsPageObj.listSubsystemsRowOf(subsystemCode, subsystemStatus).shouldBe(Condition.visible); } - @Step("Subsystem with code: {} and status: {} is deleted") - public void subsystemIsDeleted(String subsystemCode, String subsystemStatus) { - memberSubsystemsPageObj.btnDeleteSubsystem(subsystemCode, subsystemStatus).click(); + @Step("Subsystem with code: {string}, name: {string} and status: {string} is listed") + public void subsystemIsShown(String subsystemCode, String subsystemName, String subsystemStatus) { + memberSubsystemsPageObj.listSubsystemsRowOf(subsystemCode, subsystemName, subsystemStatus).shouldBe(Condition.visible); + } + + @Step("Subsystem with code: {string} is deleted") + public void subsystemIsDeleted(String subsystemCode) { + memberSubsystemsPageObj.btnDeleteSubsystem(subsystemCode).click(); commonPageObj.dialog.btnCancel().shouldBe(Condition.enabled); commonPageObj.dialog.btnDelete().shouldBe(Condition.enabled).click(); @@ -74,8 +86,24 @@ public void subsystemIsDeleted(String subsystemCode, String subsystemStatus) { commonPageObj.snackBar.btnClose().click(); } - @Step("Subsystem with code: {} and status: {} not listed any more") - public void subsystemIsNotShown(String subsystemCode, String subsystemStatus) { - memberSubsystemsPageObj.listSubsystemsRowOf(subsystemCode, subsystemStatus).shouldNotBe(Condition.visible); + @Step("Subsystem with code: {string} is renamed to {string}") + public void subsystemIsRenamed(String subsystemCode, String newName) { + memberSubsystemsPageObj.btnRenameSubsystem(subsystemCode).click(); + + commonPageObj.dialog.btnCancel().shouldBe(Condition.enabled); + commonPageObj.dialog.btnSave().shouldNotBe(Condition.enabled); + + vTextField(memberSubsystemsPageObj.renameDialog().subsystemName()) + .setValue(newName); + + commonPageObj.dialog.btnSave().shouldBe(Condition.enabled).click(); + + commonPageObj.snackBar.success().shouldBe(Condition.visible); + commonPageObj.snackBar.btnClose().click(); + } + + @Step("Subsystem with code: {string} not listed any more") + public void subsystemIsNotShown(String subsystemCode) { + memberSubsystemsPageObj.listSubsystemsRowOf(subsystemCode).shouldNotBe(Condition.visible); } } diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/MemberSubsystemsPageObj.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/MemberSubsystemsPageObj.java index 86e24d1427..7ba8ff9a97 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/MemberSubsystemsPageObj.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/MemberSubsystemsPageObj.java @@ -27,6 +27,7 @@ package org.niis.xroad.cs.test.ui.page; import com.codeborne.selenide.SelenideElement; +import org.apache.commons.lang3.StringUtils; import static com.codeborne.selenide.Selenide.$x; import static org.openqa.selenium.By.xpath; @@ -34,6 +35,7 @@ @SuppressWarnings("InnerClassMayBeStatic") public class MemberSubsystemsPageObj { private final AddDialog addDialog = new AddDialog(); + private final RenameDialog renameDialog = new RenameDialog(); public SelenideElement tabSubsystems() { return $x("//a[@data-test='member-subsystems-tab-button']"); @@ -43,18 +45,25 @@ public SelenideElement listSubsystems() { return $x("//div[@data-test='subsystems-table']"); } - public SelenideElement listSubsystemsRowOf(String code, String status) { + public SelenideElement listSubsystemsRowOf(String code, Object... other) { - var xpath = ".//div//table//tbody//tr[td[contains(text(), '%s')] and td[contains(text(), '%s')]]"; + var xpath = ".//div//table//tbody//tr[td[contains(text(), '%s')] %s]"; - return listSubsystems().find(xpath(String.format(xpath, code, status))); + var additional = StringUtils.repeat(" and td[contains(text(), '%s')]", other.length).formatted(other); + + return listSubsystems().find(xpath(String.format(xpath, code, additional))); } - public SelenideElement btnDeleteSubsystem(String code, String status) { - return listSubsystemsRowOf(code, status) + public SelenideElement btnDeleteSubsystem(String code) { + return listSubsystemsRowOf(code) .find(xpath(".//button[@data-test='delete-subsystem']")); } + public SelenideElement btnRenameSubsystem(String code) { + return listSubsystemsRowOf(code) + .find(xpath(".//button[@data-test='rename-subsystem']")); + } + public SelenideElement btnAddSubsystem() { return $x("//button[@data-test='add-subsystem']"); } @@ -63,9 +72,23 @@ public AddDialog addDialog() { return addDialog; } + public RenameDialog renameDialog() { + return renameDialog; + } + public class AddDialog { public SelenideElement subsystemCode() { return $x("//div[@data-test='add-subsystem-input']"); } + + public SelenideElement subsystemName() { + return $x("//div[@data-test='add-subsystem-name-input']"); + } + } + + public class RenameDialog { + public SelenideElement subsystemName() { + return $x("//div[@data-test='subsystem-name-input']"); + } } } diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0450-cs-member-subsystems.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0450-cs-member-subsystems.feature index b89370158d..92e78be762 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0450-cs-member-subsystems.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0450-cs-member-subsystems.feature @@ -19,20 +19,28 @@ Feature: 0450 - CS: Member details view Subsystem tab And A new member with name: E2E TC2 Member with Subsystems, code: e2e-tc2-member-subsystem & member class: E2E-TC1 is added And Member E2E TC2 Member with Subsystems is selected And Subsystems tab is selected - When A new subsystem with code: e2e-tc2-subsystem is added - Then Subsystem with code: e2e-tc2-subsystem and status: Unregistered is listed - When A new subsystem with code: e2e-tc4-subsystem is added - Then Subsystem with code: e2e-tc4-subsystem and status: Unregistered is listed + When A new subsystem with code: 'e2e-tc2-subsystem' and name: 'TC2 Subsystem' is added + Then Subsystem with code: 'e2e-tc2-subsystem', name: 'TC2 Subsystem' and status: 'Unregistered' is listed + When A new subsystem with code: 'e2e-tc4-subsystem' is added + Then Subsystem with code: 'e2e-tc4-subsystem' and status: 'Unregistered' is listed + + Scenario: The subsystem can be renamed and the change immediately appears in the table + Given Members tab is selected + And Member E2E TC2 Member with Subsystems is selected + And Subsystems tab is selected + Then Subsystem with code: 'e2e-tc4-subsystem' and status: 'Unregistered' is listed + When Subsystem with code: 'e2e-tc4-subsystem' is renamed to 'TC4 Subsystem' + Then Subsystem with code: 'e2e-tc4-subsystem', name: 'TC4 Subsystem' and status: 'Unregistered' is listed Scenario: Can be delete an unregistered subsystem Given Members tab is selected And A new member with name: E2E TC3 Member with Subsystems, code: e2e-tc3-member-subsystem & member class: E2E-TC1 is added And Member E2E TC3 Member with Subsystems is selected And Subsystems tab is selected - When A new subsystem with code: e2e-tc3-subsystem is added - And Subsystem with code: e2e-tc3-subsystem and status: Unregistered is listed - When Subsystem with code: e2e-tc3-subsystem and status: Unregistered is deleted - Then Subsystem with code: e2e-tc3-subsystem and status: Unregistered not listed any more - When A new subsystem with code: e2e-tc3-subsystem is added - And Subsystem with code: e2e-tc3-subsystem and status: Unregistered is listed + When A new subsystem with code: 'e2e-tc3-subsystem' is added + And Subsystem with code: 'e2e-tc3-subsystem' and status: 'Unregistered' is listed + When Subsystem with code: 'e2e-tc3-subsystem' is deleted + Then Subsystem with code: 'e2e-tc3-subsystem' not listed any more + When A new subsystem with code: 'e2e-tc3-subsystem' is added + And Subsystem with code: 'e2e-tc3-subsystem' and status: 'Unregistered' is listed diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0460-cs-management-service-provider-registration.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0460-cs-management-service-provider-registration.feature index 603584d0e9..5a0ee0f62d 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0460-cs-management-service-provider-registration.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0460-cs-management-service-provider-registration.feature @@ -22,7 +22,7 @@ Feature: 0460 - CS: management service provider registration And A new member with name: E2E Management Member, code: e2e-member-management & member class: E2E-TC1 is added And Member E2E Management Member is selected And Subsystems tab is selected - And A new subsystem with code: e2e-sub-management is added + And A new subsystem with code: 'e2e-sub-management' is added And CentralServer Settings tab is selected And System settings sub-tab is selected And service provider identifier field should be empty diff --git a/src/central-server/admin-service/ui/src/global.ts b/src/central-server/admin-service/ui/src/global.ts index e7d995ce2f..c3ee6398dc 100644 --- a/src/central-server/admin-service/ui/src/global.ts +++ b/src/central-server/admin-service/ui/src/global.ts @@ -77,6 +77,7 @@ export enum Permissions { EDIT_MEMBER_NAME = 'EDIT_MEMBER_NAME', ADD_MEMBER_SUBSYSTEM = 'ADD_MEMBER_SUBSYSTEM', REMOVE_MEMBER_SUBSYSTEM = 'REMOVE_MEMBER_SUBSYSTEM', + EDIT_MEMBER_SUBSYSTEM = 'EDIT_MEMBER_SUBSYSTEM', UNREGISTER_SUBSYSTEM = 'UNREGISTER_SUBSYSTEM', UNREGISTER_MEMBER = 'UNREGISTER_MEMBER', DELETE_MEMBER = 'DELETE_MEMBER', diff --git a/src/central-server/admin-service/ui/src/locales/en.json b/src/central-server/admin-service/ui/src/locales/en.json index b57191959c..d7383e93f2 100644 --- a/src/central-server/admin-service/ui/src/locales/en.json +++ b/src/central-server/admin-service/ui/src/locales/en.json @@ -9,6 +9,7 @@ "approve": "Approve", "decline": "Decline", "generateCsr": "Generate CSR", + "rename": "Rename", "select": "Select" }, "apiKey": { @@ -434,13 +435,16 @@ "areYouSureDelete": "Are you sure you want to delete the Subsystem {subsystemCode} from the X-Road member {memberId} from the system configuration?", "areYouSureUnregister": "Are you sure you want to delete the Subsystem {subsystemCode} from server {serverCode} from the system configuration?", "deleteSubsystem": "Delete Subsystem", + "renameSubsystem": "Rename Subsystem", "serverOwner": "Server owner", "servercode": "Server code", "status": "Status", "subsystemSuccessfullyAdded": "Subsystem {subsystemCode} is added to the system configuration", "subsystemSuccessfullyDeleted": "Subsystem {subsystemCode} has been deleted from the system configuration", "subsystemSuccessfullyUnregistered": "Subsystem {subsystemCode} from server {serverCode} has been deleted", - "subsystemcode": "Subsystem code" + "subsystemSuccessfullyRenamed": "Subsystem name successfully saved", + "subsystemcode": "Subsystem code", + "subsystemname": "Subsystem name" } }, "memberSuccessfullyAdded": "Member {memberName} is added to the system configuration." diff --git a/src/central-server/admin-service/ui/src/store/modules/subsystems.ts b/src/central-server/admin-service/ui/src/store/modules/subsystems.ts index eec8ab4202..50cad12c11 100644 --- a/src/central-server/admin-service/ui/src/store/modules/subsystems.ts +++ b/src/central-server/admin-service/ui/src/store/modules/subsystems.ts @@ -25,7 +25,7 @@ * THE SOFTWARE. */ import axios from 'axios'; -import { Subsystem, SubsystemAdd } from '@/openapi-types'; +import { Subsystem, SubsystemAdd, SubsystemName } from '@/openapi-types'; import { defineStore } from 'pinia'; export const useSubsystem = defineStore('subsystem', { @@ -41,6 +41,9 @@ export const useSubsystem = defineStore('subsystem', { throw error; }); }, + renameSubsystem(subsystemId: string, newName:SubsystemName) { + return axios.patch(`/subsystems/${subsystemId}`, newName); + }, deleteById(subsystemId: string) { return axios.delete(`/subsystems/${subsystemId}`); }, diff --git a/src/central-server/admin-service/ui/src/views/Members/Member/Subsystems/AddMemberSubsystemDialog.vue b/src/central-server/admin-service/ui/src/views/Members/Member/Subsystems/AddMemberSubsystemDialog.vue index 2249825fcf..600534d1f5 100644 --- a/src/central-server/admin-service/ui/src/views/Members/Member/Subsystems/AddMemberSubsystemDialog.vue +++ b/src/central-server/admin-service/ui/src/views/Members/Member/Subsystems/AddMemberSubsystemDialog.vue @@ -42,8 +42,15 @@ :label="$t('members.member.subsystems.subsystemcode')" variant="outlined" autofocus - data-test="add-subsystem-input" - > + data-test="add-subsystem-input" /> + + @@ -68,7 +75,7 @@ const emits = defineEmits(['save', 'cancel']); const { defineField, meta, handleSubmit, resetForm } = useForm({ validationSchema: { subsystemCode: 'required' }, - initialValues: { subsystemCode: '' }, + initialValues: { subsystemCode: '', subsystemName: '' }, }); const { addSubsystem } = useSubsystem(); @@ -78,6 +85,10 @@ const [subsystemCode, subsystemCodeAttrs] = defineField('subsystemCode', { props: (state) => ({ 'error-messages': state.errors }), }); +const [subsystemName, subsystemNameAttrs] = defineField('subsystemName', { + props: (state) => ({ 'error-messages': state.errors }), +}); + const loading = ref(false); function cancel() { @@ -89,6 +100,7 @@ const { t } = i18n.global; const add = handleSubmit((values) => { loading.value = true; addSubsystem({ + subsystem_name: values.subsystemName, subsystem_id: { member_class: props.member.client_id.member_class, member_code: props.member.client_id.member_code, diff --git a/src/central-server/admin-service/ui/src/views/Members/Member/Subsystems/MemberSubsystems.vue b/src/central-server/admin-service/ui/src/views/Members/Member/Subsystems/MemberSubsystems.vue index 1b257bfe5b..d948d3ba65 100644 --- a/src/central-server/admin-service/ui/src/views/Members/Member/Subsystems/MemberSubsystems.vue +++ b/src/central-server/admin-service/ui/src/views/Members/Member/Subsystems/MemberSubsystems.vue @@ -59,6 +59,7 @@ })` }} + {{ $t('members.member.subsystems.subsystemname') }} {{ $t('members.member.subsystems.servercode') }} {{ $t('members.member.subsystems.serverOwner') }} {{ $t('members.member.subsystems.status') }} @@ -70,6 +71,9 @@ {{ item.subsystem_id.subsystem_code }} + + {{ item.subsystem_name }} + @@ -80,6 +84,16 @@

+ + {{ $t('action.rename') }} + + {{ item.subsystem_id.subsystem_code }} + {{ item.subsystem_name }} {{ subitem.server_code }} {{ subitem.server_owner }} @@ -125,6 +140,16 @@
+ + {{ $t('action.rename') }} + + + + + + + diff --git a/src/central-server/management-service/int-test/build.gradle.kts b/src/central-server/management-service/int-test/build.gradle.kts index 7e2fb5c9e4..6781142577 100644 --- a/src/central-server/management-service/int-test/build.gradle.kts +++ b/src/central-server/management-service/int-test/build.gradle.kts @@ -53,3 +53,7 @@ tasks.register("intTest") { tasks.named("check") { dependsOn(tasks.named("intTest")) } + +archUnit { + setSkip(true) +} diff --git a/src/central-server/openapi-model/src/main/resources/openapi-definition.yaml b/src/central-server/openapi-model/src/main/resources/openapi-definition.yaml index 1d2e69fa9b..77eec51f8e 100644 --- a/src/central-server/openapi-model/src/main/resources/openapi-definition.yaml +++ b/src/central-server/openapi-model/src/main/resources/openapi-definition.yaml @@ -1974,11 +1974,11 @@ paths: tags: - subsystems /subsystems/{subsystem_id}: + parameters: + - $ref: '#/components/parameters/SubsystemIdParam' delete: description:

CS administrator deletes a subsystem

operationId: deleteSubsystem - parameters: - - $ref: '#/components/parameters/SubsystemIdParam' responses: '204': $ref: '#/components/responses/NoContent' @@ -1995,6 +1995,36 @@ paths: summary: delete a subsystem tags: - subsystems + patch: + description:

CS administrator edits the name of a subsystem.

+ operationId: updateSubsystemName + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SubsystemName' + description: subsystem name + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Client' + description: the updated member + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '500': + $ref: '#/components/responses/InternalServerError' + summary: update the name of a subsystem + tags: + - subsystems /subsystems/{subsystem_id}/servers/{server_id}: delete: description:

CS administrator unregisters a subsystem from a Security Server

@@ -4025,6 +4055,8 @@ components: - code type: object Subsystem: + allOf: + - $ref: '#/components/schemas/SubsystemName' properties: subsystem_id: $ref: '#/components/schemas/ClientId' @@ -4082,7 +4114,7 @@ components: example: Subsystem123 format: text maxLength: 255 - minLength: 1 + minLength: 0 type: string type: object MemberCode: diff --git a/src/common/common-admin-api/src/main/java/org/niis/xroad/restapi/config/audit/RestApiAuditEvent.java b/src/common/common-admin-api/src/main/java/org/niis/xroad/restapi/config/audit/RestApiAuditEvent.java index 84ea32276d..8e3ac4a5a3 100644 --- a/src/common/common-admin-api/src/main/java/org/niis/xroad/restapi/config/audit/RestApiAuditEvent.java +++ b/src/common/common-admin-api/src/main/java/org/niis/xroad/restapi/config/audit/RestApiAuditEvent.java @@ -170,6 +170,7 @@ public enum RestApiAuditEvent { ADD_SUBSYSTEM("Add subsystem"), UNREGISTER_SUBSYSTEM("Unregister subsystem as security server client"), DELETE_SUBSYSTEM("Delete subsystem"), + EDIT_SUBSYSTEM("Edit subsystem"), DELETE_INTERMEDIATE_CA("Delete intermediate CA"), DELETE_OCSP_RESPONDER("Delete OCSP responder"), diff --git a/src/lib/globalconf-core/build.gradle.kts b/src/lib/globalconf-core/build.gradle.kts index 492b300b36..d1e5bef010 100644 --- a/src/lib/globalconf-core/build.gradle.kts +++ b/src/lib/globalconf-core/build.gradle.kts @@ -111,14 +111,6 @@ tasks.register("xjc") { "binding" to "${layout.buildDirectory.get().asFile}/resources/main/identifiers-bindings.xml" ) - // Generate classes for global internal conf v4 - "xjc"( - "destdir" to schemaTargetDir, - "package" to "org.niis.xroad.globalconf.schema.privateparameters.v4", - "schema" to "${layout.buildDirectory.get().asFile}/resources/main/globalconf/v4/private-parameters.xsd", - "binding" to "${layout.buildDirectory.get().asFile}/resources/main/identifiers-bindings.xml" - ) - // Generate classes for federateable global external conf v5 "xjc"( "destdir" to schemaTargetDir, @@ -126,14 +118,6 @@ tasks.register("xjc") { "schema" to "${layout.buildDirectory.get().asFile}/resources/main/globalconf/v5/shared-parameters.xsd", "binding" to "${layout.buildDirectory.get().asFile}/resources/main/identifiers-bindings.xml" ) - - // Generate classes for global internal conf v5 - "xjc"( - "destdir" to schemaTargetDir, - "package" to "org.niis.xroad.globalconf.schema.privateparameters.v5", - "schema" to "${layout.buildDirectory.get().asFile}/resources/main/globalconf/v5/private-parameters.xsd", - "binding" to "${layout.buildDirectory.get().asFile}/resources/main/identifiers-bindings.xml" - ) } } } diff --git a/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/ParametersProviderFactory.java b/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/ParametersProviderFactory.java index 889c7d684c..40dc03eb0f 100644 --- a/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/ParametersProviderFactory.java +++ b/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/ParametersProviderFactory.java @@ -52,6 +52,12 @@ public final class ParametersProviderFactory { SharedParametersV4::new, PrivateParametersV3::new, // Version 4 private parameters are the same as version 3 PrivateParametersV3::new + ), + 5, new ParamsConstructors( + SharedParametersV5::new, + SharedParametersV5::new, + PrivateParametersV3::new, // Version 5 private parameters are the same as version 3 + PrivateParametersV3::new ) ); diff --git a/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParameters.java b/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParameters.java index 20867f27b8..66d7fa5e37 100644 --- a/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParameters.java +++ b/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParameters.java @@ -90,6 +90,7 @@ public static class MemberClass { @AllArgsConstructor public static class Subsystem { private String subsystemCode; + private String subsystemName; private ClientId id; } diff --git a/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersSchemaValidatorV5.java b/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersSchemaValidatorV5.java new file mode 100644 index 0000000000..5d0b93cb92 --- /dev/null +++ b/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersSchemaValidatorV5.java @@ -0,0 +1,63 @@ +/* + * The MIT License + * Copyright (c) 2019- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2018 Estonian Information System Authority (RIA), + * Nordic Institute for Interoperability Solutions (NIIS), Population Register Centre (VRK) + * Copyright (c) 2015-2017 Estonian Information System Authority (RIA), Population Register Centre (VRK) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.niis.xroad.globalconf.model; + +import ee.ria.xroad.common.ErrorCodes; +import ee.ria.xroad.common.util.SchemaValidator; + +import javax.xml.transform.Source; +import javax.xml.transform.stream.StreamSource; +import javax.xml.validation.Schema; + +import java.io.StringReader; + +public class SharedParametersSchemaValidatorV5 extends SchemaValidator { + + private static final Schema SCHEMA = createSchema("globalconf/v5/shared-parameters.xsd"); + + public static Schema getSchema() { + return SCHEMA; + } + + /** + * Validates the input XML as string against the schema. + * @param xml the input XML as string + * @throws Exception if validation fails + */ + public static void validate(String xml) throws Exception { + validate(new StreamSource(new StringReader(xml))); + } + + /** + * Validates the input source against the schema. + * @param source the input source + * @throws Exception if validation fails + */ + public static void validate(Source source) throws Exception { + validate(SCHEMA, source, ErrorCodes.X_MALFORMED_GLOBALCONF); + } + +} diff --git a/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV2Converter.java b/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV2Converter.java index a99d33104c..c1056a9ad5 100644 --- a/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV2Converter.java +++ b/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV2Converter.java @@ -180,7 +180,7 @@ private SharedParameters.MemberClass toMemberClass(MemberClassType source) { } private SharedParameters.Subsystem toSubsystem(String instanceIdentifier, MemberType memberType, SubsystemType source) { - return new SharedParameters.Subsystem(source.getSubsystemCode(), toClientId(instanceIdentifier, memberType, source)); + return new SharedParameters.Subsystem(source.getSubsystemCode(), null, toClientId(instanceIdentifier, memberType, source)); } private SharedParameters.SecurityServer toSecurityServer( diff --git a/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV3Converter.java b/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV3Converter.java index 25358e887d..2180237853 100644 --- a/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV3Converter.java +++ b/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV3Converter.java @@ -210,7 +210,7 @@ private SharedParameters.MemberClass toMemberClass(MemberClassType source) { } private SharedParameters.Subsystem toSubsystem(String instanceIdentifier, MemberType memberType, SubsystemType source) { - return new SharedParameters.Subsystem(source.getSubsystemCode(), toClientId(instanceIdentifier, memberType, source)); + return new SharedParameters.Subsystem(source.getSubsystemCode(), null, toClientId(instanceIdentifier, memberType, source)); } private SharedParameters.SecurityServer toSecurityServer( diff --git a/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV4Converter.java b/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV4Converter.java index e1b084d9da..0c59677c6f 100644 --- a/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV4Converter.java +++ b/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV4Converter.java @@ -212,7 +212,7 @@ private SharedParameters.MemberClass toMemberClass(MemberClassType source) { } private SharedParameters.Subsystem toSubsystem(String instanceIdentifier, MemberType memberType, SubsystemType source) { - return new SharedParameters.Subsystem(source.getSubsystemCode(), toClientId(instanceIdentifier, memberType, source)); + return new SharedParameters.Subsystem(source.getSubsystemCode(), null, toClientId(instanceIdentifier, memberType, source)); } private SharedParameters.SecurityServer toSecurityServer( diff --git a/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV5.java b/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV5.java new file mode 100644 index 0000000000..ef68aa5d26 --- /dev/null +++ b/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV5.java @@ -0,0 +1,122 @@ +/* + * The MIT License + * Copyright (c) 2019- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2018 Estonian Information System Authority (RIA), + * Nordic Institute for Interoperability Solutions (NIIS), Population Register Centre (VRK) + * Copyright (c) 2015-2017 Estonian Information System Authority (RIA), Population Register Centre (VRK) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.niis.xroad.globalconf.model; + +import ee.ria.xroad.common.conf.AbstractXmlConf; + +import jakarta.xml.bind.JAXBContext; +import jakarta.xml.bind.JAXBException; +import lombok.AccessLevel; +import lombok.Getter; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.ObjectFactory; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.SharedParametersTypeV5; + +import java.io.IOException; +import java.nio.file.Path; +import java.security.cert.CertificateEncodingException; +import java.time.OffsetDateTime; + +@Getter(AccessLevel.PACKAGE) +public class SharedParametersV5 extends AbstractXmlConf implements SharedParametersProvider { + private static final JAXBContext JAXB_CONTEXT = createJAXBContext(); + + private final SharedParametersV5Converter converter = new SharedParametersV5Converter(); + + @Getter + private final SharedParameters sharedParameters; + + @Getter + private final OffsetDateTime expiresOn; + + // variable to prevent using load methods after construction + private final boolean initCompleted; + + // This constructor is used for simple verifications after configuration download. + // It does not initialise class fully! + public SharedParametersV5(byte[] content) throws CertificateEncodingException, IOException { + super(content, SharedParametersSchemaValidatorV5.class); + expiresOn = OffsetDateTime.MAX; + sharedParameters = converter.convert(confType); + initCompleted = true; + } + + public SharedParametersV5(Path sharedParametersPath, OffsetDateTime expiresOn) throws CertificateEncodingException, IOException { + super(sharedParametersPath.toString(), SharedParametersSchemaValidatorV5.class); + this.expiresOn = expiresOn; + sharedParameters = converter.convert(confType); + initCompleted = true; + } + + private SharedParametersV5(SharedParametersV5 original, OffsetDateTime newExpiresOn) throws CertificateEncodingException, IOException { + super(original); + expiresOn = newExpiresOn; + sharedParameters = converter.convert(confType); + initCompleted = true; + } + + @Override + public SharedParametersProvider refresh(OffsetDateTime fileExpiresOn) throws CertificateEncodingException, IOException { + return new SharedParametersV5(this, fileExpiresOn); + } + + @Override + public SharedParametersMarshaller getMarshaller() { + return new SharedParametersV5Marshaller(); + } + + @Override + public void load(String fileName) throws Exception { + throwIfInitCompleted(); + super.load(fileName); + } + + @Override + public void load(byte[] data) throws Exception { + throwIfInitCompleted(); + super.load(data); + } + + + private void throwIfInitCompleted() { + if (initCompleted) { + throw new IllegalStateException("This object can not be reloaded"); + } + } + + @Override + protected JAXBContext getJAXBContext() { + return JAXB_CONTEXT; + } + + private static JAXBContext createJAXBContext() { + try { + return JAXBContext.newInstance(ObjectFactory.class); + } catch (JAXBException e) { + throw new RuntimeException(e); + } + } + +} diff --git a/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV5Converter.java b/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV5Converter.java new file mode 100644 index 0000000000..09a66cd730 --- /dev/null +++ b/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV5Converter.java @@ -0,0 +1,271 @@ +/* + * The MIT License + * Copyright (c) 2019- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2018 Estonian Information System Authority (RIA), + * Nordic Institute for Interoperability Solutions (NIIS), Population Register Centre (VRK) + * Copyright (c) 2015-2017 Estonian Information System Authority (RIA), Population Register Centre (VRK) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.niis.xroad.globalconf.model; + +import ee.ria.xroad.common.crypto.identifier.DigestAlgorithm; +import ee.ria.xroad.common.identifier.ClientId; + +import jakarta.xml.bind.JAXBElement; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.AcmeServer; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.ApprovedCATypeV3; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.ApprovedTSAType; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.CaInfoType; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.ConfigurationSourceType; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.GlobalGroupType; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.GlobalSettingsType; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.MemberClassType; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.MemberType; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.OcspInfoType; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.SecurityServerType; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.SharedParametersTypeV5; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.SubsystemType; + +import java.io.IOException; +import java.security.cert.CertificateEncodingException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class SharedParametersV5Converter { + + SharedParameters convert(SharedParametersTypeV5 source) throws CertificateEncodingException, IOException { + String instanceIdentifier = source.getInstanceIdentifier(); + List configurationSources = getConfigurationSources(source.getSource()); + List approvedCAs = getApprovedCAs(source.getApprovedCA()); + List approvedTSAs = getApprovedTSAs(source.getApprovedTSA()); + List members = getMembers(instanceIdentifier, source.getMember()); + List securityServers = getSecurityServers(source); + List globalGroups = getGlobalGroups(source.getGlobalGroup()); + SharedParameters.GlobalSettings globalSettings = getGlobalSettings(source.getGlobalSettings()); + return new SharedParameters(instanceIdentifier, configurationSources, approvedCAs, approvedTSAs, + members, securityServers, globalGroups, globalSettings); + } + + private List getConfigurationSources(List sources) { + List configurationSources = new ArrayList<>(); + if (sources != null) { + configurationSources.addAll(sources.stream().map(this::toConfigurationSource).toList()); + } + return configurationSources; + } + + private List getApprovedCAs(List approvedCATypes) { + List approvedCAs = new ArrayList<>(); + if (approvedCATypes != null) { + approvedCAs.addAll(approvedCATypes.stream().map(this::toApprovedCa).toList()); + } + return approvedCAs; + } + + + private List getApprovedTSAs(List approvedTSATypes) { + List approvedTSAs = new ArrayList<>(); + if (approvedTSATypes != null) { + approvedTSAs.addAll(approvedTSATypes.stream().map(this::toApprovedTsa).toList()); + } + return approvedTSAs; + } + + private List getMembers(String instanceIdentifier, List memberTypes) { + if (memberTypes != null) { + return memberTypes.stream().map(source -> toMember(instanceIdentifier, source)).toList(); + } + return List.of(); + } + + private List getSecurityServers(SharedParametersTypeV5 source) { + List securityServers = new ArrayList<>(); + if (source.getSecurityServer() != null) { + Map clientIds = getClientIds(source); + securityServers.addAll( + source.getSecurityServer().stream() + .map(s -> toSecurityServer(clientIds, s, source.getInstanceIdentifier())) + .toList() + ); + } + return securityServers; + } + + private Map getClientIds(SharedParametersTypeV5 source) { + Map ret = new HashMap<>(); + source.getMember().forEach(member -> { + ret.put(member.getId(), toClientId(source.getInstanceIdentifier(), member)); + member.getSubsystem().forEach(subsystem -> { + ret.put(subsystem.getId(), toClientId(source.getInstanceIdentifier(), member, subsystem)); + }); + }); + return ret; + } + + private List getGlobalGroups(List globalGroupTypes) { + List globalGroups = new ArrayList<>(); + if (globalGroupTypes != null) { + globalGroups.addAll(globalGroupTypes.stream().map(this::toGlobalGroup).toList()); + } + return globalGroups; + } + + private SharedParameters.GlobalSettings getGlobalSettings(GlobalSettingsType globalSettingsType) { + return globalSettingsType != null ? toGlobalSettings(globalSettingsType) : null; + } + + private SharedParameters.ConfigurationSource toConfigurationSource(ConfigurationSourceType source) { + var target = new SharedParameters.ConfigurationSource(); + target.setAddress(source.getAddress()); + target.setInternalVerificationCerts(source.getInternalVerificationCert()); + target.setExternalVerificationCerts(source.getExternalVerificationCert()); + return target; + } + + private SharedParameters.ApprovedCA toApprovedCa(ApprovedCATypeV3 source) { + var target = new SharedParameters.ApprovedCA(); + target.setName(source.getName()); + target.setAuthenticationOnly(source.isAuthenticationOnly()); + if (source.getTopCA() != null) { + target.setTopCA(toCaInfo(source.getTopCA())); + } + if (source.getIntermediateCA() != null) { + target.setIntermediateCas(source.getIntermediateCA().stream().map(this::toCaInfo).toList()); + } + target.setCertificateProfileInfo(source.getCertificateProfileInfo()); + if (source.getAcmeServer() != null) { + target.setAcmeServer(toAcmeServer(source.getAcmeServer())); + } + return target; + } + + private SharedParameters.AcmeServer toAcmeServer(AcmeServer source) { + var acmeServer = new SharedParameters.AcmeServer(); + acmeServer.setDirectoryURL(source.getDirectoryURL()); + acmeServer.setIpAddress(source.getIpAddress()); + acmeServer.setAuthenticationCertificateProfileId(source.getAuthenticationCertificateProfileId()); + acmeServer.setSigningCertificateProfileId(source.getSigningCertificateProfileId()); + return acmeServer; + } + + private SharedParameters.CaInfo toCaInfo(CaInfoType source) { + var caInfo = new SharedParameters.CaInfo(); + caInfo.setCert(source.getCert()); + if (source.getOcsp() != null) { + caInfo.setOcsp(source.getOcsp().stream().map(this::toOcspInfo).toList()); + } + return caInfo; + } + + private SharedParameters.OcspInfo toOcspInfo(OcspInfoType source) { + var ocspInfo = new SharedParameters.OcspInfo(); + ocspInfo.setUrl(source.getUrl()); + ocspInfo.setCert(source.getCert()); + return ocspInfo; + } + + private SharedParameters.ApprovedTSA toApprovedTsa(ApprovedTSAType source) { + var target = new SharedParameters.ApprovedTSA(); + target.setName(source.getName()); + target.setUrl(source.getUrl()); + target.setCert(source.getCert()); + return target; + } + + private SharedParameters.Member toMember(String instanceIdentifier, MemberType source) { + var target = new SharedParameters.Member(); + target.setMemberClass(toMemberClass(source.getMemberClass())); + target.setMemberCode(source.getMemberCode()); + target.setName(source.getName()); + target.setId(toClientId(instanceIdentifier, source)); + if (source.getSubsystem() != null) { + target.setSubsystems(source.getSubsystem().stream().map(subsystem -> + toSubsystem(instanceIdentifier, source, subsystem)).toList()); + } + return target; + } + + private SharedParameters.MemberClass toMemberClass(MemberClassType source) { + var target = new SharedParameters.MemberClass(); + target.setCode(source.getCode()); + target.setDescription(source.getDescription()); + return target; + } + + private SharedParameters.Subsystem toSubsystem(String instanceIdentifier, MemberType memberType, SubsystemType source) { + return new SharedParameters.Subsystem(source.getSubsystemCode(), + source.getSubsystemName(), + toClientId(instanceIdentifier, memberType, source)); + } + + private SharedParameters.SecurityServer toSecurityServer( + Map clientIds, SecurityServerType source, String instanceIdentifier) { + var target = new SharedParameters.SecurityServer(); + target.setOwner(toClientId(instanceIdentifier, (MemberType) source.getOwner())); + target.setServerCode(source.getServerCode()); + target.setAddress(source.getAddress()); + target.setAuthCertHashes(source.getAuthCertHash().stream().map(hash -> new CertHash(DigestAlgorithm.SHA256, hash)).toList()); + if (source.getClient() != null) { + List clients = new ArrayList<>(); + for (JAXBElement client : source.getClient()) { + if (client.getValue() instanceof MemberType) { + clients.add(toClientId(instanceIdentifier, (MemberType) client.getValue())); + } else if (client.getValue() instanceof SubsystemType) { + clients.add(clientIds.get(((SubsystemType) client.getValue()).getId())); + } + } + target.setClients(clients); + } + return target; + } + + private ClientId toClientId(String instanceIdentifier, MemberType source) { + return ClientId.Conf.create(instanceIdentifier, source.getMemberClass().getCode(), source.getMemberCode()); + } + + private ClientId toClientId(String instanceIdentifier, MemberType member, SubsystemType subsystem) { + return ClientId.Conf.create( + instanceIdentifier, member.getMemberClass().getCode(), member.getMemberCode(), subsystem.getSubsystemCode() + ); + } + + private SharedParameters.GlobalGroup toGlobalGroup(GlobalGroupType source) { + var target = new SharedParameters.GlobalGroup(); + target.setGroupCode(source.getGroupCode()); + target.setDescription(source.getDescription()); + + if (source.getGroupMember() != null) { + target.setGroupMembers(source.getGroupMember().stream().map(ClientId.class::cast).toList()); + } + return target; + } + + private SharedParameters.GlobalSettings toGlobalSettings(GlobalSettingsType source) { + var target = new SharedParameters.GlobalSettings(); + target.setOcspFreshnessSeconds(source.getOcspFreshnessSeconds().intValue()); + if (source.getMemberClass() != null) { + target.setMemberClasses(source.getMemberClass().stream().map(this::toMemberClass).toList()); + } + return target; + } + +} diff --git a/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV5Marshaller.java b/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV5Marshaller.java new file mode 100644 index 0000000000..94e8b40337 --- /dev/null +++ b/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV5Marshaller.java @@ -0,0 +1,59 @@ +/* + * The MIT License + * + * Copyright (c) 2019- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2018 Estonian Information System Authority (RIA), + * Nordic Institute for Interoperability Solutions (NIIS), Population Register Centre (VRK) + * Copyright (c) 2015-2017 Estonian Information System Authority (RIA), Population Register Centre (VRK) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.niis.xroad.globalconf.model; + +import jakarta.xml.bind.JAXBContext; +import jakarta.xml.bind.JAXBElement; +import lombok.SneakyThrows; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.ObjectFactory; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.SharedParametersTypeV5; + +import javax.xml.validation.Schema; + +public class SharedParametersV5Marshaller extends AbstractSharedParametersMarshaller { + private static final JAXBContext JAXB_CONTEXT = createJaxbContext(); + + @SneakyThrows + private static JAXBContext createJaxbContext() { + return JAXBContext.newInstance(ObjectFactory.class); + } + + @Override + JAXBContext getJaxbContext() { + return JAXB_CONTEXT; + } + + @Override + Schema getSchema() { + return SharedParametersSchemaValidatorV5.getSchema(); + } + + @Override + JAXBElement convert(SharedParameters parameters) { + return new ObjectFactory().createConf(SharedParametersV5ToXmlConverter.INSTANCE.convert(parameters)); + } +} diff --git a/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV5ToXmlConverter.java b/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV5ToXmlConverter.java new file mode 100644 index 0000000000..ea7f096813 --- /dev/null +++ b/src/lib/globalconf-core/src/main/java/org/niis/xroad/globalconf/model/SharedParametersV5ToXmlConverter.java @@ -0,0 +1,160 @@ +/* + * The MIT License + * + * Copyright (c) 2019- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2018 Estonian Information System Authority (RIA), + * Nordic Institute for Interoperability Solutions (NIIS), Population Register Centre (VRK) + * Copyright (c) 2015-2017 Estonian Information System Authority (RIA), Population Register Centre (VRK) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.niis.xroad.globalconf.model; + + +import ee.ria.xroad.common.crypto.identifier.DigestAlgorithm; +import ee.ria.xroad.common.identifier.ClientId; + +import jakarta.xml.bind.JAXBElement; +import lombok.SneakyThrows; +import org.mapstruct.Context; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Named; +import org.mapstruct.ReportingPolicy; +import org.mapstruct.factory.Mappers; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.AcmeServer; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.ApprovedCATypeV3; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.ConfigurationSourceType; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.GlobalGroupType; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.GlobalSettingsType; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.MemberType; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.ObjectFactory; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.SecurityServerType; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.SharedParametersTypeV5; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.SubsystemType; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Mapper(uses = {ObjectFactory.class, MappingUtils.class}, unmappedTargetPolicy = ReportingPolicy.ERROR) +abstract class SharedParametersV5ToXmlConverter { + public static final SharedParametersV5ToXmlConverter INSTANCE = Mappers.getMapper(SharedParametersV5ToXmlConverter.class); + protected static final ObjectFactory OBJECT_FACTORY = new ObjectFactory(); + + SharedParametersTypeV5 convert(SharedParameters sharedParameters) { + return sharedParameters == null ? null : convert(sharedParameters, createClientIdMap(sharedParameters)); + } + + @Mapping(source = "sources", target = "source") + @Mapping(source = "approvedCAs", target = "approvedCA") + @Mapping(source = "approvedTSAs", target = "approvedTSA") + @Mapping(source = "members", target = "member") + @Mapping(source = "securityServers", target = "securityServer") + @Mapping(source = "globalGroups", target = "globalGroup") + @Mapping(target = "centralService", ignore = true) + @Mapping(target = "any", ignore = true) + abstract SharedParametersTypeV5 convert(SharedParameters sharedParameters, + @Context Map clientMap); + + @Mapping(source = "memberClasses", target = "memberClass") + abstract GlobalSettingsType convert(SharedParameters.GlobalSettings globalSettings); + + @Mapping(source = "internalVerificationCerts", target = "internalVerificationCert") + @Mapping(source = "externalVerificationCerts", target = "externalVerificationCert") + abstract ConfigurationSourceType convert(SharedParameters.ConfigurationSource configurationSource); + + @Mapping(source = "intermediateCas", target = "intermediateCA") + abstract ApprovedCATypeV3 convert(SharedParameters.ApprovedCA approvedCa); + + abstract AcmeServer convert(SharedParameters.AcmeServer acmeServer); + + @Mapping(source = "authCertHashes", target = "authCertHash", qualifiedByName = "toAuthCertHashes") + @Mapping(source = "clients", target = "client", qualifiedByName = "clientsById") + @Mapping(target = "owner", qualifiedByName = "clientById") + abstract SecurityServerType convert(SharedParameters.SecurityServer securityServer, @Context Map clientMap); + + @Mapping(source = "groupMembers", target = "groupMember") + abstract GlobalGroupType convert(SharedParameters.GlobalGroup globalGroup); + + @Mapping(target = "subsystem", ignore = true) + @Mapping(source = "id", target = "id") + abstract MemberType convertMember(SharedParameters.Member member, String id); + + @Mapping(source = "id", target = "id") + abstract SubsystemType convertSubsystem(SharedParameters.Subsystem subsystem, String id); + + MemberType convertMember(SharedParameters.Member member, @Context Map clientMap) { + return (MemberType) clientMap.get(member.getId()); + } + + @Named("clientById") + Object xmlClientId(ClientId value, @Context Map clientMap) { + return clientMap.get(value); + } + + @Named("clientsById") + List> xmlClientIds(List clientIds, @Context Map clientMap) { + if (clientIds == null) { + return List.of(); + } + return clientIds.stream() + .map(clientId -> OBJECT_FACTORY.createSecurityServerTypeClient(xmlClientId(clientId, clientMap))) + .toList(); + } + + @Named("toAuthCertHashes") + protected List toAuthCertHashes(List authCerts) { + return authCerts.stream() + .map(this::toAuthCertHash) + .toList(); + } + + @SneakyThrows + private byte[] toAuthCertHash(CertHash authCert) { + return authCert.getHash(DigestAlgorithm.SHA256); + } + + private Map createClientIdMap(SharedParameters sharedParameters) { + if (sharedParameters.getMembers() == null) { + return Map.of(); + } + Map clientMap = new HashMap<>(); + var sequence = new IdSequence(); + + for (SharedParameters.Member member : sharedParameters.getMembers()) { + var memberType = convertMember(member, sequence.nextValue()); + clientMap.put(member.getId(), memberType); + for (SharedParameters.Subsystem subsystem : member.getSubsystems()) { + var subsystemType = convertSubsystem(subsystem, sequence.nextValue()); + clientMap.put(subsystem.getId(), subsystemType); + memberType.getSubsystem().add(subsystemType); + } + } + return clientMap; + } + + private static final class IdSequence { + int nextId = 0; + + String nextValue() { + return String.format("id%d", nextId++); + } + } +} diff --git a/src/lib/globalconf-core/src/main/resources/globalconf/v4/private-parameters.xsd b/src/lib/globalconf-core/src/main/resources/globalconf/v4/private-parameters.xsd deleted file mode 100644 index 12cbe63278..0000000000 --- a/src/lib/globalconf-core/src/main/resources/globalconf/v4/private-parameters.xsd +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - Set of configuration parameters that are used only by members of this X-Road instance. - - - - - - - - - - Code that uniquely identifies this instance of the X-Road system within a federation of - systems. - - - - - - - Information about a source of configuration. - - - - - - - Parameters of management services called by the security servers. - - - - - - - Time interval (in seconds) after which a logged signature should be time-stamped. - This ensures that the time-stamped signature can be used as evidence at some later date. - - - - - - - - diff --git a/src/lib/globalconf-core/src/main/resources/globalconf/v5/private-parameters.xsd b/src/lib/globalconf-core/src/main/resources/globalconf/v5/private-parameters.xsd deleted file mode 100644 index 12cbe63278..0000000000 --- a/src/lib/globalconf-core/src/main/resources/globalconf/v5/private-parameters.xsd +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - Set of configuration parameters that are used only by members of this X-Road instance. - - - - - - - - - - Code that uniquely identifies this instance of the X-Road system within a federation of - systems. - - - - - - - Information about a source of configuration. - - - - - - - Parameters of management services called by the security servers. - - - - - - - Time interval (in seconds) after which a logged signature should be time-stamped. - This ensures that the time-stamped signature can be used as evidence at some later date. - - - - - - - - diff --git a/src/lib/globalconf-core/src/main/resources/globalconf/v5/shared-parameters.xsd b/src/lib/globalconf-core/src/main/resources/globalconf/v5/shared-parameters.xsd index 6c2514a81e..29e4086709 100644 --- a/src/lib/globalconf-core/src/main/resources/globalconf/v5/shared-parameters.xsd +++ b/src/lib/globalconf-core/src/main/resources/globalconf/v5/shared-parameters.xsd @@ -5,7 +5,25 @@ - + + + + + + + + + Full, official name of the subsystem, used in user interfaces. + + + + + + + + + + Set of configuration parameters that are used by members of this X-Road instance and other federated @@ -14,22 +32,6 @@ - - - - - - - - Full, official name of the subsystem, used in user interfaces. - - - - - - - - @@ -56,7 +58,7 @@ - + diff --git a/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersMarshallRoundTripTest.java b/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersMarshallRoundTripTest.java index 4a310990d9..ec2ed761b6 100644 --- a/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersMarshallRoundTripTest.java +++ b/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersMarshallRoundTripTest.java @@ -39,6 +39,7 @@ class SharedParametersMarshallRoundTripTest { @ParameterizedTest @ValueSource(strings = { + "src/test/resources/globalconf_good_v5/EE/shared-params.xml", "src/test/resources/globalconf_good_v4/EE/shared-params.xml", "src/test/resources/globalconf_good_v3/EE/shared-params.xml", "src/test/resources/globalconf_good_v2/EE/shared-params.xml" diff --git a/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersV2ToXmlConverterTest.java b/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersV2ToXmlConverterTest.java index 9652141373..346f802bc3 100644 --- a/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersV2ToXmlConverterTest.java +++ b/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersV2ToXmlConverterTest.java @@ -35,12 +35,10 @@ import lombok.extern.slf4j.Slf4j; import org.assertj.core.api.recursive.comparison.ComparingNormalizedFields; import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration; -import org.bouncycastle.operator.OperatorCreationException; import org.junit.jupiter.api.Test; import org.niis.xroad.globalconf.schema.sharedparameters.v2.ObjectFactory; import org.niis.xroad.globalconf.schema.sharedparameters.v2.SharedParametersTypeV2; -import java.io.IOException; import java.io.StringWriter; import java.math.BigInteger; import java.util.List; @@ -71,7 +69,7 @@ class SharedParametersV2ToXmlConverterTest { ); @Test - void shouldConvertAllFields() throws IOException, OperatorCreationException { + void shouldConvertAllFields() { var sharedParameters = getSharedParameters(); var xmlType = SharedParametersV2ToXmlConverter.INSTANCE.convert(sharedParameters); @@ -99,8 +97,8 @@ void shouldConvertAllFields() throws IOException, OperatorCreationException { .allFieldsSatisfy(Objects::nonNull); assertIdReferences(xmlType); - assertThat(xmlType.getSecurityServer().get(0).getAuthCertHash().get(0)) - .isEqualTo(sharedParameters.getSecurityServers().get(0).getAuthCertHashes().get(0).getHash(SHA1)); + assertThat(xmlType.getSecurityServer().getFirst().getAuthCertHash().getFirst()) + .isEqualTo(sharedParameters.getSecurityServers().getFirst().getAuthCertHashes().getFirst().getHash(SHA1)); } @Test @@ -124,8 +122,8 @@ void shouldReturnNullWhenInputIsNull() { } private static void assertIdReferences(SharedParametersTypeV2 xmlType) { - var ownerMember = xmlType.getMember().get(0); - var client = ownerMember.getSubsystem().get(0); + var ownerMember = xmlType.getMember().getFirst(); + var client = ownerMember.getSubsystem().getFirst(); assertThat(ownerMember).isNotNull(); assertThat(client).isNotNull(); @@ -201,7 +199,7 @@ private static SharedParameters.MemberClass getMemberClass() { } private static SharedParameters.Subsystem subsystem(ClientId.Conf clientId, String subsystemCode) { - return new SharedParameters.Subsystem(subsystemCode, subsystemId(clientId, subsystemCode)); + return new SharedParameters.Subsystem(subsystemCode, null, subsystemId(clientId, subsystemCode)); } private static ClientId.Conf subsystemId(ClientId.Conf clientId, String subsystemCode) { diff --git a/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersV3ToXmlConverterTest.java b/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersV3ToXmlConverterTest.java index e0b0c2095f..8fb6e56e8d 100644 --- a/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersV3ToXmlConverterTest.java +++ b/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersV3ToXmlConverterTest.java @@ -35,12 +35,10 @@ import lombok.extern.slf4j.Slf4j; import org.assertj.core.api.recursive.comparison.ComparingNormalizedFields; import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration; -import org.bouncycastle.operator.OperatorCreationException; import org.junit.jupiter.api.Test; import org.niis.xroad.globalconf.schema.sharedparameters.v3.ObjectFactory; import org.niis.xroad.globalconf.schema.sharedparameters.v3.SharedParametersTypeV3; -import java.io.IOException; import java.io.StringWriter; import java.math.BigInteger; import java.util.List; @@ -74,7 +72,7 @@ class SharedParametersV3ToXmlConverterTest { ); @Test - void shouldConvertAllFields() throws IOException, OperatorCreationException { + void shouldConvertAllFields() { var sharedParameters = getSharedParameters(); var xmlType = SharedParametersV3ToXmlConverter.INSTANCE.convert(sharedParameters); @@ -103,8 +101,8 @@ void shouldConvertAllFields() throws IOException, OperatorCreationException { .allFieldsSatisfy(Objects::nonNull); assertIdReferences(xmlType); - assertThat(xmlType.getSecurityServer().get(0).getAuthCertHash().get(0)) - .isEqualTo(sharedParameters.getSecurityServers().get(0).getAuthCertHashes().get(0).getHash(SHA256)); + assertThat(xmlType.getSecurityServer().getFirst().getAuthCertHash().getFirst()) + .isEqualTo(sharedParameters.getSecurityServers().getFirst().getAuthCertHashes().getFirst().getHash(SHA256)); } @Test @@ -128,8 +126,8 @@ void shouldReturnNullWhenInputIsNull() { } private static void assertIdReferences(SharedParametersTypeV3 xmlType) { - var ownerMember = xmlType.getMember().get(0); - var client = ownerMember.getSubsystem().get(0); + var ownerMember = xmlType.getMember().getFirst(); + var client = ownerMember.getSubsystem().getFirst(); assertThat(ownerMember).isNotNull(); assertThat(client).isNotNull(); @@ -214,7 +212,7 @@ private static SharedParameters.MemberClass getMemberClass() { } private static SharedParameters.Subsystem subsystem(ClientId.Conf clientId, String subsystemCode) { - return new SharedParameters.Subsystem(subsystemCode, subsystemId(clientId, subsystemCode)); + return new SharedParameters.Subsystem(subsystemCode, null, subsystemId(clientId, subsystemCode)); } private static ClientId.Conf subsystemId(ClientId.Conf clientId, String subsystemCode) { diff --git a/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersV4ToXmlConverterTest.java b/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersV4ToXmlConverterTest.java index e0781c588a..295b5c1163 100644 --- a/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersV4ToXmlConverterTest.java +++ b/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersV4ToXmlConverterTest.java @@ -35,12 +35,10 @@ import lombok.extern.slf4j.Slf4j; import org.assertj.core.api.recursive.comparison.ComparingNormalizedFields; import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration; -import org.bouncycastle.operator.OperatorCreationException; import org.junit.jupiter.api.Test; import org.niis.xroad.globalconf.schema.sharedparameters.v4.ObjectFactory; import org.niis.xroad.globalconf.schema.sharedparameters.v4.SharedParametersTypeV4; -import java.io.IOException; import java.io.StringWriter; import java.math.BigInteger; import java.util.List; @@ -74,7 +72,7 @@ class SharedParametersV4ToXmlConverterTest { ); @Test - void shouldConvertAllFields() throws IOException, OperatorCreationException { + void shouldConvertAllFields() { var sharedParameters = getSharedParameters(); var xmlType = SharedParametersV4ToXmlConverter.INSTANCE.convert(sharedParameters); @@ -103,8 +101,8 @@ void shouldConvertAllFields() throws IOException, OperatorCreationException { .allFieldsSatisfy(Objects::nonNull); assertIdReferences(xmlType); - assertThat(xmlType.getSecurityServer().get(0).getAuthCertHash().get(0)) - .isEqualTo(sharedParameters.getSecurityServers().get(0).getAuthCertHashes().get(0).getHash(SHA256)); + assertThat(xmlType.getSecurityServer().getFirst().getAuthCertHash().getFirst()) + .isEqualTo(sharedParameters.getSecurityServers().getFirst().getAuthCertHashes().getFirst().getHash(SHA256)); } @Test @@ -128,8 +126,8 @@ void shouldReturnNullWhenInputIsNull() { } private static void assertIdReferences(SharedParametersTypeV4 xmlType) { - var ownerMember = xmlType.getMember().get(0); - var client = ownerMember.getSubsystem().get(0); + var ownerMember = xmlType.getMember().getFirst(); + var client = ownerMember.getSubsystem().getFirst(); assertThat(ownerMember).isNotNull(); assertThat(client).isNotNull(); @@ -214,7 +212,7 @@ private static SharedParameters.MemberClass getMemberClass() { } private static SharedParameters.Subsystem subsystem(ClientId.Conf clientId, String subsystemCode) { - return new SharedParameters.Subsystem(subsystemCode, subsystemId(clientId, subsystemCode)); + return new SharedParameters.Subsystem(subsystemCode, null, subsystemId(clientId, subsystemCode)); } private static ClientId.Conf subsystemId(ClientId.Conf clientId, String subsystemCode) { diff --git a/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersV5MarshallerTest.java b/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersV5MarshallerTest.java new file mode 100644 index 0000000000..8e46977db4 --- /dev/null +++ b/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersV5MarshallerTest.java @@ -0,0 +1,93 @@ +/* + * The MIT License + * + * Copyright (c) 2019- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2018 Estonian Information System Authority (RIA), + * Nordic Institute for Interoperability Solutions (NIIS), Population Register Centre (VRK) + * Copyright (c) 2015-2017 Estonian Information System Authority (RIA), Population Register Centre (VRK) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.niis.xroad.globalconf.model; + +import ee.ria.xroad.common.identifier.ClientId; + +import jakarta.xml.bind.MarshalException; +import org.junit.jupiter.api.Test; + +import java.nio.charset.StandardCharsets; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; + +class SharedParametersV5MarshallerTest { + + private static final String MEMBER_CODE = "mcode"; + private static final String MEMBER_CLASS = "mclass"; + private static final String MEMBER_INSTANCE = "mtest"; + + private final SharedParametersV5Marshaller marshaller = new SharedParametersV5Marshaller(); + + @Test + void marshall() { + var sharedParamsBuilder = SharedParameters.builder(); + sharedParamsBuilder.instanceIdentifier("CS"); + + var configurationSource = new SharedParameters.ConfigurationSource(); + configurationSource.setAddress("cs"); + configurationSource.setInternalVerificationCerts(List.of("internal-conf-signing-cert".getBytes(StandardCharsets.UTF_8))); + configurationSource.setExternalVerificationCerts(List.of("external-conf-signing-cert".getBytes(StandardCharsets.UTF_8))); + sharedParamsBuilder.globalSettings(new SharedParameters.GlobalSettings(null, 60)); + sharedParamsBuilder.sources(List.of(configurationSource)); + + var member = new SharedParameters.Member(); + member.setMemberClass(new SharedParameters.MemberClass(MEMBER_CLASS, MEMBER_CLASS + " description")); + member.setMemberCode(MEMBER_CODE); + member.setName(MEMBER_CODE + " Name"); + + member.setSubsystems(List.of( + createSubsystem("sub1", null), + createSubsystem("sub2", "Subsystem 2 name"), + createSubsystem("sub3", null) + )); + + sharedParamsBuilder.members(List.of(member)); + + final String result = marshaller.marshall(sharedParamsBuilder.build()); + + assertThat(result).isNotBlank(); + System.out.println(result); + } + + private SharedParameters.Subsystem createSubsystem(String code, String name) { + return new SharedParameters.Subsystem(code, name, ClientId.Conf.create(MEMBER_INSTANCE, MEMBER_CLASS, MEMBER_CODE, code)); + } + + @Test + void marshallShouldFailWhenInvalid() { + var sharedParamsBuilder = SharedParameters.builder(); + sharedParamsBuilder.instanceIdentifier("CS"); + sharedParamsBuilder.sources(List.of(new SharedParameters.ConfigurationSource())); // missing address or cert + sharedParamsBuilder.globalSettings(new SharedParameters.GlobalSettings(null, 60)); + assertThrows(MarshalException.class, () -> marshaller.marshall(sharedParamsBuilder.build())); + } + + +} diff --git a/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersV5ToXmlConverterTest.java b/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersV5ToXmlConverterTest.java new file mode 100644 index 0000000000..19d5ef5395 --- /dev/null +++ b/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/SharedParametersV5ToXmlConverterTest.java @@ -0,0 +1,228 @@ +/* + * The MIT License + * + * Copyright (c) 2019- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2018 Estonian Information System Authority (RIA), + * Nordic Institute for Interoperability Solutions (NIIS), Population Register Centre (VRK) + * Copyright (c) 2015-2017 Estonian Information System Authority (RIA), Population Register Centre (VRK) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.niis.xroad.globalconf.model; + +import ee.ria.xroad.common.identifier.ClientId; + +import jakarta.xml.bind.JAXBContext; +import jakarta.xml.bind.JAXBElement; +import jakarta.xml.bind.JAXBException; +import jakarta.xml.bind.Marshaller; +import lombok.extern.slf4j.Slf4j; +import org.assertj.core.api.recursive.comparison.ComparingNormalizedFields; +import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration; +import org.junit.jupiter.api.Test; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.ObjectFactory; +import org.niis.xroad.globalconf.schema.sharedparameters.v5.SharedParametersTypeV5; + +import java.io.StringWriter; +import java.math.BigInteger; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +import static ee.ria.xroad.common.crypto.identifier.DigestAlgorithm.SHA256; +import static java.nio.charset.StandardCharsets.UTF_8; +import static java.util.Map.entry; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatNoException; + +@Slf4j +class SharedParametersV5ToXmlConverterTest { + + private static final Map FIELD_NAME_MAP = Map.ofEntries( + entry("securityServer", "securityServers"), + entry("source", "sources"), + entry("internalVerificationCert", "internalVerificationCerts"), + entry("externalVerificationCert", "externalVerificationCerts"), + entry("approvedCA", "approvedCAs"), + entry("approvedTSA", "approvedTSAs"), + entry("member", "members"), + entry("globalGroup", "globalGroups"), + entry("intermediateCA", "intermediateCas"), + entry("subsystem", "subsystems"), + entry("client", "clients"), + entry("memberClass", "memberClasses"), + entry("authCertHash", "authCerts"), + entry("groupMember", "groupMembers") + ); + + @Test + void shouldConvertAllFields() { + var sharedParameters = getSharedParameters(); + var xmlType = SharedParametersV5ToXmlConverter.INSTANCE.convert(sharedParameters); + + var conf = RecursiveComparisonConfiguration.builder() + .withIntrospectionStrategy(compareRenamedFields()) + .withIgnoredFields("securityServers.owner", + "securityServers.clients", + "securityServers.authCerts", + "members.id", + "members.subsystems.id", + "centralService", + "any" + ) + .withEqualsForFields((a, b) -> new BigInteger(a.toString()).compareTo(new BigInteger(b.toString())) == 0, + "globalSettings.ocspFreshnessSeconds") + .build(); + + assertThat(xmlType) + .hasNoNullFieldsOrPropertiesExcept("centralService") + .usingRecursiveComparison(conf) + .isEqualTo(sharedParameters); + + assertThat(xmlType) + .usingRecursiveAssertion() + .ignoringFields("globalGroup.groupMember.id") + .allFieldsSatisfy(Objects::nonNull); + + assertIdReferences(xmlType); + assertThat(xmlType.getSecurityServer().getFirst().getAuthCertHash().getFirst()) + .isEqualTo(sharedParameters.getSecurityServers().getFirst().getAuthCertHashes().getFirst().getHash(SHA256)); + } + + @Test + void shouldBeAbleToMarshall() throws JAXBException { + var xmlType = SharedParametersV5ToXmlConverter.INSTANCE.convert(getSharedParameters()); + + JAXBContext jaxbContext = JAXBContext.newInstance(ObjectFactory.class); + var writer = new StringWriter(); + var marshaller = jaxbContext.createMarshaller(); + marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); + var conf = new ObjectFactory().createConf(xmlType); + + assertThatNoException().isThrownBy(() -> marshaller.marshal(conf, writer)); + + log.info(writer.toString()); + } + + @Test + void shouldReturnNullWhenInputIsNull() { + assertThat(SharedParametersV4ToXmlConverter.INSTANCE.convert((SharedParameters) null)).isNull(); + } + + private static void assertIdReferences(SharedParametersTypeV5 xmlType) { + var ownerMember = xmlType.getMember().getFirst(); + var client = ownerMember.getSubsystem().getFirst(); + + assertThat(ownerMember).isNotNull(); + assertThat(client).isNotNull(); + + assertThat(xmlType.getSecurityServer()).singleElement() + .satisfies(ss -> { + assertThat(ss.getOwner()).isSameAs(ownerMember); + assertThat(ss.getClient()) + .map(JAXBElement::getValue) + .singleElement().isSameAs(client); + }); + } + + private static ComparingNormalizedFields compareRenamedFields() { + return new ComparingNormalizedFields() { + @Override + protected String normalizeFieldName(String fieldName) { + return FIELD_NAME_MAP.getOrDefault(fieldName, fieldName); + } + }; + } + + private static SharedParameters getSharedParameters() { + return new SharedParameters("INSTANCE", getConfigurationSources(), List.of(getApprovedCA()), + List.of(new SharedParameters.ApprovedTSA("tsa-name", "tsa-url", "tsa cert".getBytes(UTF_8))), + getMembers(), List.of(getSecurityServer()), List.of(new SharedParameters.GlobalGroup("group-code", + "group-description", List.of(subsystemId(memberId(), "SUB1")))), + new SharedParameters.GlobalSettings(List.of(getMemberClass()), 333)); + } + + private static List getConfigurationSources() { + var configurationSource = new SharedParameters.ConfigurationSource(); + configurationSource.setAddress("cs"); + configurationSource.setInternalVerificationCerts(List.of("internal-conf-singing-cert".getBytes(UTF_8))); + configurationSource.setExternalVerificationCerts(List.of("external-conf-singing-cert".getBytes(UTF_8))); + return List.of(configurationSource); + } + + private static SharedParameters.ApprovedCA getApprovedCA() { + var approvedCA = new SharedParameters.ApprovedCA(); + approvedCA.setName("approved ca name"); + approvedCA.setAuthenticationOnly(true); + approvedCA.setTopCA(getCaInfo()); + approvedCA.setCertificateProfileInfo("certificateProfileInfo"); + approvedCA.setIntermediateCas(List.of(getCaInfo())); + approvedCA.setAcmeServer(new SharedParameters.AcmeServer("http://testca.com/acme", "192.99.88.7", "1", "2")); + return approvedCA; + } + + private static SharedParameters.CaInfo getCaInfo() { + return new SharedParameters.CaInfo("ca-cert".getBytes(UTF_8), List.of( + new SharedParameters.OcspInfo("ocsp:url", "ocsp-cert".getBytes(UTF_8)))); + } + + private static List getMembers() { + SharedParameters.Member member = new SharedParameters.Member(); + member.setMemberCode("M1"); + member.setMemberClass(getMemberClass()); + member.setName("Member1"); + var clientId = memberId(); + member.setId(clientId); + member.setSubsystems(List.of( + subsystem(clientId, "SUB1", "Name1"), + subsystem(clientId, "SUB2", "Name2") + )); + return List.of(member); + } + + private static ClientId.Conf memberId() { + return ClientId.Conf.create("INSTANCE", "CLASS1", "M1"); + } + + private static SharedParameters.SecurityServer getSecurityServer() { + var securityServer = new SharedParameters.SecurityServer(); + securityServer.setOwner(memberId()); + securityServer.setServerCode("security-server-code"); + securityServer.setAddress("security-server-address"); + securityServer.setClients(List.of(subsystemId(memberId(), "SUB1"))); + securityServer.setAuthCertHashes(List.of(new CertHash("ss-auth-cert".getBytes(UTF_8)))); + return securityServer; + } + + private static SharedParameters.MemberClass getMemberClass() { + return new SharedParameters.MemberClass("CLASS1", "member class description"); + } + + private static SharedParameters.Subsystem subsystem(ClientId.Conf clientId, String subsystemCode, String subsystemName) { + return new SharedParameters.Subsystem(subsystemCode, subsystemName, subsystemId(clientId, subsystemCode)); + } + + private static ClientId.Conf subsystemId(ClientId.Conf clientId, String subsystemCode) { + return ClientId.Conf.create(clientId.getXRoadInstance(), + clientId.getXRoadInstance(), + clientId.getMemberCode(), + subsystemCode); + } + +} diff --git a/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/VersionedConfigurationDirectoryTest.java b/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/VersionedConfigurationDirectoryTest.java index 88b81474ad..8475b0d550 100644 --- a/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/VersionedConfigurationDirectoryTest.java +++ b/src/lib/globalconf-core/src/test/java/org/niis/xroad/globalconf/model/VersionedConfigurationDirectoryTest.java @@ -100,7 +100,7 @@ public void readConfigurationFilesV2() throws Exception { * @throws Exception in case of any unexpected errors */ @Test - public void readDirectoryContainingBothV3AndV2Configurations() throws Exception { + public void readDirectoryContainingV3AndV2Configurations() throws Exception { VersionedConfigurationDirectory dir = new VersionedConfigurationDirectory("src/test/resources/globalconf_good_v3"); assertEquals("EE", dir.getInstanceIdentifier()); @@ -119,7 +119,7 @@ public void readDirectoryContainingBothV3AndV2Configurations() throws Exception } @Test - public void readDirectoryContainingAllOfV4V3AndV2Configurations() throws Exception { + public void readDirectoryContainingV4V3AndV2Configurations() throws Exception { VersionedConfigurationDirectory dir = new VersionedConfigurationDirectory("src/test/resources/globalconf_good_v4"); assertEquals("EE", dir.getInstanceIdentifier()); @@ -145,6 +145,41 @@ public void readDirectoryContainingAllOfV4V3AndV2Configurations() throws Excepti assertTrue(dir.findShared("xxx").isEmpty()); } + @Test + public void readDirectoryContainingV5V4V3AndV2Configurations() throws Exception { + VersionedConfigurationDirectory dir = new VersionedConfigurationDirectory("src/test/resources/globalconf_good_v5"); + + assertEquals("EE", dir.getInstanceIdentifier()); + + PrivateParameters p2 = dir.findPrivate("foo_v2").orElseThrow(); + + assertEquals("foo_v2", p2.getInstanceIdentifier()); + + SharedParameters s2 = dir.findShared("foo_v2").orElseThrow(); + + assertEquals("foo_v2", s2.getInstanceIdentifier()); + + PrivateParameters p3 = dir.findPrivate("baz_v3").orElseThrow(); + + assertEquals("baz_v3", p3.getInstanceIdentifier()); + + SharedParameters s3 = dir.findShared("baz_v3").orElseThrow(); + + assertEquals("baz_v3", s3.getInstanceIdentifier()); + + PrivateParameters p4 = dir.findPrivate("qux_v4").orElseThrow(); + + assertEquals("qux_v4", p4.getInstanceIdentifier()); + + SharedParameters s4 = dir.findShared("qux_v4").orElseThrow(); + + assertEquals("qux_v4", s4.getInstanceIdentifier()); + + assertTrue(dir.findPrivate("bar").isEmpty()); + assertTrue(dir.findShared("bar").isPresent()); + assertTrue(dir.findShared("xxx").isEmpty()); + } + /** * Test to ensure that the list of available configuration files excluding metadata and directories * is read properly. @@ -177,7 +212,7 @@ public void readConfigurationFilesContainingBothV3AndV2() throws Exception { } @Test - public void readConfigurationFilesContainingAllOfV4V3AndV2() throws Exception { + public void readConfigurationFilesContainingV4V3AndV2() throws Exception { String rootDir = "src/test/resources/globalconf_good_v4"; VersionedConfigurationDirectory dir = new VersionedConfigurationDirectory(rootDir); @@ -206,6 +241,41 @@ public void readConfigurationFilesContainingAllOfV4V3AndV2() throws Exception { assertFalse(pathExists(configurationFiles, rootDir + "/baz_v3/private-params.xml.metadata")); } + @Test + public void readConfigurationFilesContainingAllOfV5V4V3AndV2() throws Exception { + String rootDir = "src/test/resources/globalconf_good_v5"; + VersionedConfigurationDirectory dir = new VersionedConfigurationDirectory(rootDir); + + List configurationFiles = dir.getConfigurationFiles(); + + assertFalse(pathExists(configurationFiles, rootDir + "/instance-identifier")); + + assertTrue(pathExists(configurationFiles, rootDir + "/bar/shared-params.xml")); + assertFalse(pathExists(configurationFiles, rootDir + "/bar/shared-params.xml.metadata")); + assertFalse(pathExists(configurationFiles, rootDir + "/bar/private-params.xml")); + assertFalse(pathExists(configurationFiles, rootDir + "/bar/private-params.xml.metadata")); + + assertTrue(pathExists(configurationFiles, rootDir + "/EE/shared-params.xml")); + assertFalse(pathExists(configurationFiles, rootDir + "/EE/shared-params.xml.metadata")); + assertTrue(pathExists(configurationFiles, rootDir + "/EE/private-params.xml")); + assertFalse(pathExists(configurationFiles, rootDir + "/EE/private-params.xml.metadata")); + + assertTrue(pathExists(configurationFiles, rootDir + "/foo_v2/shared-params.xml")); + assertFalse(pathExists(configurationFiles, rootDir + "/foo_v2/shared-params.xml.metadata")); + assertTrue(pathExists(configurationFiles, rootDir + "/foo_v2/private-params.xml")); + assertFalse(pathExists(configurationFiles, rootDir + "/foo_v2/private-params.xml.metadata")); + + assertTrue(pathExists(configurationFiles, rootDir + "/baz_v3/shared-params.xml")); + assertFalse(pathExists(configurationFiles, rootDir + "/baz_v3/shared-params.xml.metadata")); + assertTrue(pathExists(configurationFiles, rootDir + "/baz_v3/private-params.xml")); + assertFalse(pathExists(configurationFiles, rootDir + "/baz_v3/private-params.xml.metadata")); + + assertTrue(pathExists(configurationFiles, rootDir + "/qux_v4/shared-params.xml")); + assertFalse(pathExists(configurationFiles, rootDir + "/qux_v4/shared-params.xml.metadata")); + assertTrue(pathExists(configurationFiles, rootDir + "/qux_v4/private-params.xml")); + assertFalse(pathExists(configurationFiles, rootDir + "/qux_v4/private-params.xml.metadata")); + } + /** * Test to ensure an empty configuration directory is read properly. diff --git a/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/EE/private-params.xml b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/EE/private-params.xml new file mode 100644 index 0000000000..a272c5ca20 --- /dev/null +++ b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/EE/private-params.xml @@ -0,0 +1,24 @@ + + + EE + + bar + + http://www.bar.com/conf + YmFyCg== + + + + http://mgmt.com:1234 + + + EE + BUSINESS + servicemember2 + + + 123 + diff --git a/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/EE/private-params.xml.metadata b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/EE/private-params.xml.metadata new file mode 100644 index 0000000000..d3c4e2f538 --- /dev/null +++ b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/EE/private-params.xml.metadata @@ -0,0 +1 @@ +{"contentIdentifier":"PRIVATE-PARAMETERS","instanceIdentifier":"EE","expirationDate":"2124-05-20T17:42:55Z", "configurationVersion": "4"} diff --git a/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/EE/shared-params.xml b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/EE/shared-params.xml new file mode 100644 index 0000000000..52e5568e66 --- /dev/null +++ b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/EE/shared-params.xml @@ -0,0 +1,498 @@ + + + + EE + + +
cs0
+ MIICqTCCAZGgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAOMQwwCgYDVQQDDANOL0EwHhcNNzAwMTAxMDAwMDAwWhcNMzgwMTAxMDAwMDAwWjAOMQwwCgYDVQQDDANOL0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDe10ai/VApuFjG+cgVLaV18qOEor6il83v0ErKBVznkSEzhzfplPJbfbXVHCezUsZOtVypvS4VCKg3S9wDBJVHmLrTl8z43xHowSE2KhvBxP+boH+9wt4dWdkiM4vohzuDuqz2k7ly50LlaokY/hQfLZKqRAB4PyiA9H1dk9hri9kIckGZpKHxVmXD19pd1hbvRmEcxF0kEAP4oyQ8EaQpgoy4KiN60x6hV8+xZPUqf03eQgh5LXvpmXDtGT58zN43Om8L+dPCtKyK6dTTjNakv6tJxoZJ2yUnVWPZKH9B3nM79bToxA9SiCjg3i6rU8HJ8ih163Dh9upPwqpmdEqDAgMBAAGjEjAQMA4GA1UdDwEB/wQEAwIGQDANBgkqhkiG9w0BAQ0FAAOCAQEAdgVRzoNWG7shsBV+r9I4dB/ghfnxZAcgag9qevG4YrzLEDHupGB7a0Rx4dKp7gxzSV+E82oFOTZMhQdcVinRrqZT1U8DeT1tgvRH6V24g8HCplDp3AuRWKlPFAWIpsyZ6n6oMIrS9uVCaTF4A8uFZ7GxgcByMP+9BwCNQAigFGJOZzwln60idlR8YmtVCn4oVfBVrH+JRNSfgosVqqZe3q/XHNJP4iVqPt7taYzwwdz2XW02p8lgYZ1MwhMbcZ7xqNjYA0U9yQbUc6/oZ54R5FIgNldINCAJaNRRjXVS+1nt6bRM9GtZoeC4vhFqxIpduQRYpMD2MaJqbwDgal2pmA== + MIICqTCCAZGgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAOMQwwCgYDVQQDDANOL0EwHhcNNzAwMTAxMDAwMDAwWhcNMzgwMTAxMDAwMDAwWjAOMQwwCgYDVQQDDANOL0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDe10ai/VApuFjG+cgVLaV18qOEor6il83v0ErKBVznkSEzhzfplPJbfbXVHCezUsZOtVypvS4VCKg3S9wDBJVHmLrTl8z43xHowSE2KhvBxP+boH+9wt4dWdkiM4vohzuDuqz2k7ly50LlaokY/hQfLZKqRAB4PyiA9H1dk9hri9kIckGZpKHxVmXD19pd1hbvRmEcxF0kEAP4oyQ8EaQpgoy4KiN60x6hV8+xZPUqf03eQgh5LXvpmXDtGT58zN43Om8L+dPCtKyK6dTTjNakv6tJxoZJ2yUnVWPZKH9B3nM79bToxA9SiCjg3i6rU8HJ8ih163Dh9upPwqpmdEqDAgMBAAGjEjAQMA4GA1UdDwEB/wQEAwIGQDANBgkqhkiG9w0BAQ0FAAOCAQEAdgVRzoNWG7shsBV+r9I4dB/ghfnxZAcgag9qevG4YrzLEDHupGB7a0Rx4dKp7gxzSV+E82oFOTZMhQdcVinRrqZT1U8DeT1tgvRH6V24g8HCplDp3AuRWKlPFAWIpsyZ6n6oMIrS9uVCaTF4A8uFZ7GxgcByMP+9BwCNQAigFGJOZzwln60idlR8YmtVCn4oVfBVrH+JRNSfgosVqqZe3q/XHNJP4iVqPt7taYzwwdz2XW02p8lgYZ1MwhMbcZ7xqNjYA0U9yQbUc6/oZ54R5FIgNldINCAJaNRRjXVS+1nt6bRM9GtZoeC4vhFqxIpduQRYpMD2MaJqbwDgal2pmA== + + + + pki1 + + + MIIDjTCCAnWgAwIBAgIJAKL3zm5uAgNAMA0GCSqGSIb3DQEBBQUAMF0xCzAJBgNV + BAYTAkVFMRQwEgYDVQQKEwtDeWJlcm5ldGljYTEMMAoGA1UECxMDSVRPMQ4wDAYD + VQQDEwVDeWJlcjEaMBgGCSqGSIb3DQEJARYLYWFhQGJiYi5jY2MwHhcNMTQwOTI5 + MDk0MTM3WhcNMjQwOTI2MDk0MTM3WjBdMQswCQYDVQQGEwJFRTEUMBIGA1UEChML + Q3liZXJuZXRpY2ExDDAKBgNVBAsTA0lUTzEOMAwGA1UEAxMFQ3liZXIxGjAYBgkq + hkiG9w0BCQEWC2FhYUBiYmIuY2NjMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB + CgKCAQEA0ntJBTdBj7KT+j37yQ3r9pzO/VgVRQptQO6pDGSYonBRDbziYyBAuo8O + wta2GshTqiqbD9OMqi8EK2fxrnCfo5HhG4BwY4DPGCozwI/9ETCNp/ElxrICbb68 + zCQy6ecOrPbirG3baKUKPxBwnN/S1w57rR66Eb02hlA0/AAqN7GJnNqonpeDnIQ5 + vq4bdrrjGEwke44hfR+wI81fVP2oc28AWk3p1TVA0TPLjKfQOlXMfVYIA+Pf+9N4 + uiOXAcv4ZfUAJbiZQujBdHR7wF4SiV0u3Xfwfk6uj1Ddpv5ehh8HKhiNoDySCXgR + I8I5X1gbQ3MIFR7CSwcZuZkolsQnHQIDAQABo1AwTjAMBgNVHRMEBTADAQH/MB0G + A1UdDgQWBBR+egbuTBG1XAUq40xvTvPKht3y3jAfBgNVHSMEGDAWgBR+egbuTBG1 + XAUq40xvTvPKht3y3jANBgkqhkiG9w0BAQUFAAOCAQEAu6QBabq8zQXnxGRCeKpB + vp4iMY4VOWm2QYiwDljaQpMvQWjoBhMEZsaaux/ouSiQvAzbO/NdHHJsXAfwxM2E + o8kFtZNIlTvBs3Os7CvLle1z7pwU/m9LOeakys9xDQRzlPqQwN0Q2oELu0tOHtkd + 2RBLXjy5ZXHHw+KnDwfQlLUzvNRLLmZIfZxMf57z53eP59T0UYBj2bHYV2hxfzYH + mJG6nz8FW/mImr53meFTrM6muw6fKbeKTNvr4n+7AK6Hn6Whie730DB4A9xyWvjd + QWYo7FtYJ/WvbC45E8ppGZH0OWBI028yDvfVgeB8eIpzeMyI1fSHGb66hKc3ruWd + SA== + + http://127.0.0.1:8082/ocsp + + MIIDejCCAmKgAwIBAgIBBDANBgkqhkiG9w0BAQUFADBdMQswCQYDVQQGEwJFRTEU + MBIGA1UEChMLQ3liZXJuZXRpY2ExDDAKBgNVBAsTA0lUTzEOMAwGA1UEAxMFQ3li + ZXIxGjAYBgkqhkiG9w0BCQEWC2FhYUBiYmIuY2NjMB4XDTE0MDkyOTA5NTYxMloX + DTI0MDkyNjA5NTYxMlowYDELMAkGA1UEBhMCRUUxFDASBgNVBAoTC0N5YmVybmV0 + aWNhMQwwCgYDVQQLEwNJVE8xETAPBgNVBAMTCGNvbnN1bWVyMRowGAYJKoZIhvcN + AQkBFgthYWFAYmJiLmNjYzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB + AM0nxh0cNjmjmqYIyBpOCnQb4/eIgPcJF7gTMmhlg5HAkczGraGyrywUumZTUU0j + 3CzsXpXjsCWKtgkwzfmDQggfA95x50fu8HxIlHyd75FnA0EnXS9c9aw5v8SOEKYB + 5UADIhqoGUkqZd21O3o8RJyO8pI4hfe0EiVbQumH3VtNwkgoiK0XlZVRvJeYBYe8 + OODIU+xj8db+BV7QHcRVHBzuynJoy15kByNMzx+kjAPZH+AbB7r6c11i/qd0weno + 55QMlilG/Ez/TZiW7oDBgj7lH8c7AQy8bwhEJSLXAD0H3uytOVaWB9O5PkDDdUD+ + O0yRvSf+hCtaQ828sfQxYz8CAwEAAaNCMEAwHQYDVR0OBBYEFGe3oWflVEr3ammj + rELcGPOdqmwSMB8GA1UdIwQYMBaAFH56Bu5MEbVcBSrjTG9O88qG3fLeMA0GCSqG + SIb3DQEBBQUAA4IBAQC968pzwVBu+nJgpLnQDF4oEyoJHg+fteCBo/IU0DHvWgYv + vliTOelxwIOhjerGBFGxWQVYJiB1VRBTa/e8q4NTFjeN0LGkyO8KdYIA4yhZTwIe + 0ctA62R46II4S7cvoCl993b9wxujMjz9v4Zz7oOx+sFOV8fOI828YQjQCRSOCbcJ + okpGIjJQrdDq3nBVf5f7bCUH6SRWnng3y9ntzgjx8SiQgX+CYTcdWew/9c0Ko6je + neKQsBCiYuP03CJX5gg5yC37MxlcC2NpwdM60Q+7sp+Riz+eGw4tpVnAEmD8ZwHl + vuN63j9maswGt/KrgylIF99T/5WpbFVRWQHibbEH + + + + http://www.example.net/ocsp + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + ee.ria.xroad.common.certificateprofile.impl.TestCertificateProfileInfoProvider + + http://ca:8887/acme/directory + 5 + 6 + + + + pki2 + true + + + MIIDiDCCAnCgAwIBAgIIEVk07cr7+SMwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIxMTE5MDkxODU2WhcNMTQxMTE5MDkxODU2WjATMREwDwYDVQQDDAhjb25z + dW1lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM64hfHPpteJYaUm + DJaEVQ+3yst6hNocO1Ax8Bu1Zk1MKkyOiayfwsnCDN5XpDSlFRx/+aP6x8PFte2D + YFPq+3aP1ymN/iBCJlp2vDukkD8TAMaewKJpdWZD8WFAUnncRPy1q8BcLehexieE + rTGlPLrgbW115FXur7YN8CHZPb0TyfELsXPPWK3i/YREhl4Xk7keI7z3qQnUQbJL + wIrkSLq07pt2ciVmmZxFJq3TpB9grw/mnCURLJ1yY14FWLZ+hPrYGnzlkTcfKB6c + JfBKWUxkB5+JRL3yFo4dySfdiZ8wsJh0cbqEHDW2UghQQ/hkbJnn4UmZrrHn95we + t5pZQAcCAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGGPGh0 + dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dlYi9z + dGF0dXMvb2NzcDAdBgNVHQ4EFgQUfbgfWLDuAcEKrjXT3/CdH4D/CEEwDAYDVR0T + AQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNVHQ8B + Af8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBADe8dzcmKMa6RHzrgRTmApBMBlHR + Vg2kRRJF4NdSUbxUotLxBCA5ZlXdqm5cb3m9XtcU45+mC9S1eLPO69ZuVe6K3zY8 + MSoKSfKzVkWEEtqEn/wHiqkb90qtAITjt4FkWo3mSufMzSpBkUrxasaqIYBloLKm + tYmuCfu1gS2euG0KDPfH+i0IBgCZLBeZzdU+H2qTXH734Y3CF3eYGJ3XP6RQzZaZ + vE8J5km9BgGS1wqIsuBwdy3Zt8yuq1kR02CQ/0BnfnUsqVIvZR61Nl0j6VK8RtUS + yoYV9OkEmN6OTK4J8F47fh8AZUeagLJ29t0KdlS9VR849VWHQqAzakOU1uk= + + + http://127.0.0.1:8082/ocsp + + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + http://www.example.net/ocsp + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + ee.ria.xroad.common.certificateprofile.impl.TestCertificateProfileInfoProvider + + + pki3 + false + + + MIIDiDCCAnCgAwIBAgIIVYNTWA8JcLwwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIxMTE5MDkxNDIzWhcNMTQxMTE5MDkxNDIzWjATMREwDwYDVQQDDAhwcm9k + dWNlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALKNC381RiACCftv + ApBzk5HD5YHw0u9SOkwcIkn4cZ4eQWrlROnqHTpS9IVSBoOz6pjCx/FwxZTdpw0j + X+bRYpxnj11I2XKzHfhfa6BvL5VkaDtjGpOdSGMJUtrI6m9jFiYryEmYHWxPlL9V + pDK0KknevYm2BR23/xDHweBSZ7tkMENU1kXFWLunoBys+W0waR+Z8HH5WNuBLz8X + z2iz/6KQ5BoWSPJc9P5TXNOBB+5XyjBR2ogoAOtX53OJzu0wMgLpjuJGdfcpy1S9 + ukU27B21i2MfZ6Tjhu9oKrAIgcMWJaHJ/gRX6iX1vXlfhUTkE1ACSfvhZdntKLzN + TZGEcxsCAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGGPGh0 + dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dlYi9z + dGF0dXMvb2NzcDAdBgNVHQ4EFgQUUHtGmEl0Cuh/x/wj+UU5S7Wui48wDAYDVR0T + AQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNVHQ8B + Af8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACJqqey5Ywoegq+Rjo4v89AN78Ou + tKtRzQZtuCZP9+ZhY6ivCPK4F8Ne6qpWZb63OLORyQosDAvj6m0iCFMsUZS3nC0U + DR0VyP2WrOihBOFC4CA7H2X4l7pkSyMN73ZC6icXkbj9H0ix5/Bv3Ug64DK9SixG + RxMwLxouIzk7WvePQ6ywlhGvZRTXxhr0DwvfZnPXxHDPB2q+9pKzC9h2txG1tyD9 + ffohEC/LKdGrHSe6hnTRedQUN3hcMQqCTc5cHsaB8bh5EaHrib3RR0YsOhjAd6IC + ms33BZnfNWQuGVTXw74Eu/P1JkwR0ReO+XuxxMp3DW2epMfL44OHWTb6JGY= + + + http://127.0.0.1:8082/ocsp + + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + http://www.example.net/ocsp + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + ee.ria.xroad.common.certificateprofile.impl.TestCertificateProfileInfoProvider + + + pki4 + true + + + MIIDZzCCAk+gAwIBAgIBAzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJFRTEU + MBIGA1UEChMLQ3liZXJuZXRpY2ExDTALBgNVBAsTBENBIDExGjAYBgkqhkiG9w0B + CQEWC2FhYUBiYmIuY2NjMB4XDTEyMDkxNDExNTk0MFoXDTIyMDkxMjExNTk0MFow + TjELMAkGA1UEBhMCRUUxFDASBgNVBAoTC0N5YmVybmV0aWNhMQ0wCwYDVQQLEwRD + QSAyMRowGAYJKoZIhvcNAQkBFgthYWFAYmJiLmNjYzCCASIwDQYJKoZIhvcNAQEB + BQADggEPADCCAQoCggEBAM1Ex4Bh8zHU+wWyp2fm7U2dAqooUamE4hyLVrmNifvB + AjKT7gSMeTB2bxCE38BYfzvnbQCs82piQRC6iCgHE/Ywr1zz86Pa/OI36tBmCCjW + NDm/U6MAlwT7s+GL3bpty4aY4pLilQZbmyDsE2hsJ+R82GMBttRku3LMKKE/jyQI + 26gK9xhYPPF85cfv7hylekcr8fUeGFmxEULLWyFFwhR9pr7HPcKhJR/h4rhJ3e0d + EDfROPtVfBSViS5UCh7UNut8Q3kbwwZBIa1NEN9vPUIBhH/ZvKr3a7188y3n1GY8 + paSVdYmGZYDSyK7ugztEOFWqekiA7gfLdyeCto12K10CAwEAAaNQME4wDAYDVR0T + BAUwAwEB/zAdBgNVHQ4EFgQUJDYGHNJmNdoV9S/T4ZLv/ze+JYIwHwYDVR0jBBgw + FoAUqV/rN9mEwnTBN+y4Di3aLz4BKj8wDQYJKoZIhvcNAQEFBQADggEBAC63dW7v + 5J1Yf7ue2ybTfIYVFAN1LOY4Ge+zLai2wkhRjaOqzV67HB/e1zItBbq0M1NkA4DQ + DM/aEoave5aMoZtR77JUrFG2KLnTqJZb3AZDWi3qsdYNo1yW0YMgGBVq8pThJ4NH + +QV5MdgkMZjDUJArtU0Z6eD7br0BiA4uEx4irr0j8e5oInBbMPb4Orv05yuaXc9n + utPIm7iudKcNsHs+16ACAo0KdU38GnwgGW83B0LB0sCVwFMH1OpC435dXLDycvg+ + Pe5VvXxCL6guFtZtBbnAAtRreTC3bhS+bnxLyj+Hk7oAYyaW441BnzPcVWYeAf56 + 89A9e6HCmXEY1bo= + + ee.ria.xroad.common.certificateprofile.impl.TestCertificateProfileInfoProvider + + + + pki5 with intermediate certs + true + + + MIIDdTCCAl2gAwIBAgIJAOuBNCIUm0gwMA0GCSqGSIb3DQEBBQUAMFExCzAJBgNV + BAYTAkVFMRQwEgYDVQQKEwtDeWJlcm5ldGljYTEQMA4GA1UECxMHUm9vdCBDQTEa + MBgGCSqGSIb3DQEJARYLYWFhQGJiYi5jY2MwHhcNMTIwOTE0MTE1NjM3WhcNMjIw + OTEyMTE1NjM3WjBRMQswCQYDVQQGEwJFRTEUMBIGA1UEChMLQ3liZXJuZXRpY2Ex + EDAOBgNVBAsTB1Jvb3QgQ0ExGjAYBgkqhkiG9w0BCQEWC2FhYUBiYmIuY2NjMIIB + IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArnYuIDCNNqIZ/GH0THglNHoU + T8PCfH5HGeVadaQu5xJFg2hLfbCvJNDGDgOcGXlss8tZ51y80EGwJFAU1IajhELF + yRDhEUsBd7FzulMxMwMFwluoPB1u0XUsNmYunmdlBc6BERkrTQi8oRXO7psslbiU + 4LDqeIdP04RhySNnVRwfb3eBfGR7Gh/EbdFeB814gCpoM6nmK1XR2f3JdCTJxPyE + 7EppIDPBBmgpzq2TzHF3qzd1Qv5Xe0XSC6DnkTbzpxrCvalGqGrIYOsV5vtOFt+2 + Tlx+QHIWhvZ9bDdEGY58O0jWj3lO5VkFYsloauYa8trCm7w20J6QqwtCIskMvwID + AQABo1AwTjAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBRSFYADqiIAKTGIT44uTLwS + hz1YZzAfBgNVHSMEGDAWgBRSFYADqiIAKTGIT44uTLwShz1YZzANBgkqhkiG9w0B + AQUFAAOCAQEAMn7YD7C3cjkQL0wm1v47KYda/Y05jR5zMwV648VHgPeNLRyZYWJr + pHdUQiAqKL3zhF8neOQO100fwUxSxLsuPNqkce02DwjMSMWi3bF9xX7MlrQnAb6a + SJ47YaPyZSvXlkzRC3dcDjcBIRSGNxsftISSEJJeqGWQz6b9LkIfxTjtcHbTnm/y + GPWpmr2blkm7qRKK4eFwvooJ6KqBmm8/J086VpDOc9qRy/ar3za6UdFEBDX2aHQD + 4OLgBvj0dLYCu3w32ltmVOgBoewIq5M1wBGp8dIs5Jrr4P9xYprRY1une3IWvviJ + NXoWm1enl1+N31r32YIc4vXZiA2L+cjlvQ== + + + + MIIDajCCAlKgAwIBAgIBAzANBgkqhkiG9w0BAQUFADBRMQswCQYDVQQGEwJFRTEU + MBIGA1UEChMLQ3liZXJuZXRpY2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGjAYBgkqhkiG + 9w0BCQEWC2FhYUBiYmIuY2NjMB4XDTEyMDkxNDExNTY1OFoXDTIyMDkxMjExNTY1 + OFowTjELMAkGA1UEBhMCRUUxFDASBgNVBAoTC0N5YmVybmV0aWNhMQ0wCwYDVQQL + EwRDQSAxMRowGAYJKoZIhvcNAQkBFgthYWFAYmJiLmNjYzCCASIwDQYJKoZIhvcN + AQEBBQADggEPADCCAQoCggEBAOnguIBD8dfb4vM73WKR+T2zWKAbFeUu7Wcpio/2 + CDLJZ3mF2Zo+JWOk8nYSUrZkFpCvH+S5Mhj0Eo4LcCk2PTiRP2fPPABIQmEXgLKU + gcqH132fVCyPRKdL+hG+CA7yzDOIO0h8ME/nQBuEJHc+ayGSyKG5/PfsETfseD0f + 9QoaAXsrztkhH+yNX+JgaPAyxQqFB8p8PLX3DrkD1JtslSjMJTuitVsf4JKb9zmI + /lGaMGqkq5ss3c1weF8s38+Zt8rU4FHS+DvFTVJVMHjnTu/emgiRiLJWXioKmijy + glMoZvpahgtOieS50Vgn8V+ttL4kLYSBFlAVkNOa0Fbz8eMCAwEAAaNQME4wDAYD + VR0TBAUwAwEB/zAdBgNVHQ4EFgQUqV/rN9mEwnTBN+y4Di3aLz4BKj8wHwYDVR0j + BBgwFoAUUhWAA6oiACkxiE+OLky8Eoc9WGcwDQYJKoZIhvcNAQEFBQADggEBAKBk + ++HBiGxSqDQUVWRjrD/5uBk/RH9oH2C/ZXYUyFCjAvmUWa+dWFyJScyVcZpchnbO + SUPKtFR78N3nJp01mbWyvzws4C+DbwPOdwPJHNKqwybn4uz1oWDoNioi1ITkjlYo + haDs9uVI9sLrApqQnSgL7Oc4yG2TSoa0YkLmdICHxH9TCK0NEUxW6Sa4aehftLD/ + 7gNORIe8YT9MqPGWDW6Za9f74Vx+H5/ejRkTKUA6jHTLmZCly4L2f+tpDIs22omd + 0X3Ct9os/XA7ZbbwiMuqAiiXKVGerTmeCrkWcixDkN9ATCI0ur5NZniSVnXGjV6m + u3cl4oYr+u2NJVPDgKI= + + + + + MIIDZzCCAk+gAwIBAgIBAzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJFRTEU + MBIGA1UEChMLQ3liZXJuZXRpY2ExDTALBgNVBAsTBENBIDExGjAYBgkqhkiG9w0B + CQEWC2FhYUBiYmIuY2NjMB4XDTEyMDkxNDExNTk0MFoXDTIyMDkxMjExNTk0MFow + TjELMAkGA1UEBhMCRUUxFDASBgNVBAoTC0N5YmVybmV0aWNhMQ0wCwYDVQQLEwRD + QSAyMRowGAYJKoZIhvcNAQkBFgthYWFAYmJiLmNjYzCCASIwDQYJKoZIhvcNAQEB + BQADggEPADCCAQoCggEBAM1Ex4Bh8zHU+wWyp2fm7U2dAqooUamE4hyLVrmNifvB + AjKT7gSMeTB2bxCE38BYfzvnbQCs82piQRC6iCgHE/Ywr1zz86Pa/OI36tBmCCjW + NDm/U6MAlwT7s+GL3bpty4aY4pLilQZbmyDsE2hsJ+R82GMBttRku3LMKKE/jyQI + 26gK9xhYPPF85cfv7hylekcr8fUeGFmxEULLWyFFwhR9pr7HPcKhJR/h4rhJ3e0d + EDfROPtVfBSViS5UCh7UNut8Q3kbwwZBIa1NEN9vPUIBhH/ZvKr3a7188y3n1GY8 + paSVdYmGZYDSyK7ugztEOFWqekiA7gfLdyeCto12K10CAwEAAaNQME4wDAYDVR0T + BAUwAwEB/zAdBgNVHQ4EFgQUJDYGHNJmNdoV9S/T4ZLv/ze+JYIwHwYDVR0jBBgw + FoAUqV/rN9mEwnTBN+y4Di3aLz4BKj8wDQYJKoZIhvcNAQEFBQADggEBAC63dW7v + 5J1Yf7ue2ybTfIYVFAN1LOY4Ge+zLai2wkhRjaOqzV67HB/e1zItBbq0M1NkA4DQ + DM/aEoave5aMoZtR77JUrFG2KLnTqJZb3AZDWi3qsdYNo1yW0YMgGBVq8pThJ4NH + +QV5MdgkMZjDUJArtU0Z6eD7br0BiA4uEx4irr0j8e5oInBbMPb4Orv05yuaXc9n + utPIm7iudKcNsHs+16ACAo0KdU38GnwgGW83B0LB0sCVwFMH1OpC435dXLDycvg+ + Pe5VvXxCL6guFtZtBbnAAtRreTC3bhS+bnxLyj+Hk7oAYyaW441BnzPcVWYeAf56 + 89A9e6HCmXEY1bo= + + + + + MIIDZzCCAk+gAwIBAgIBAzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJFRTEU + MBIGA1UEChMLQ3liZXJuZXRpY2ExDTALBgNVBAsTBENBIDIxGjAYBgkqhkiG9w0B + CQEWC2FhYUBiYmIuY2NjMB4XDTEyMDkxNDEyMDEyNVoXDTIyMDkxMjEyMDEyNVow + TjELMAkGA1UEBhMCRUUxFDASBgNVBAoTC0N5YmVybmV0aWNhMQ0wCwYDVQQLEwRD + QSAzMRowGAYJKoZIhvcNAQkBFgthYWFAYmJiLmNjYzCCASIwDQYJKoZIhvcNAQEB + BQADggEPADCCAQoCggEBALxWxIfonRRiiS+mylDJdep1uyNqeq6LkfLZjJHdrgBB + oBi9TB2l4BSHND5jxvyFKpvCDEebx4ye+eWTNdzL+JRP/fstNhM4hb6Ikxjko4nK + DsJHkzKH7pV0B6BfTeWTWyO2Lu2hmfkYHYRzXTH0dxTBe9PibHLNoZYTk6aA3rH/ + q+Wqs+G1adKg9JJ98iCqzcP4dw/6C+EFI1irADu3UB02WXn5LW3r4j3s683EHbg1 + LVEpYtN/12lMXzPN26D9+AfoW1pCma88K0W4tYMERxTU+TJgZP4QnTO8obANlJKJ + NT3NCoFfc5A93hdcz5LZI0toqhf4NVRCYFo8PSwcTyUCAwEAAaNQME4wDAYDVR0T + BAUwAwEB/zAdBgNVHQ4EFgQUuAqclcUU2JuYKrI5EBrP7vlheJswHwYDVR0jBBgw + FoAUJDYGHNJmNdoV9S/T4ZLv/ze+JYIwDQYJKoZIhvcNAQEFBQADggEBAHmyfjiQ + mkjnXxC/Z350Re99WUHqmaSdWoK96yCkeAJrTAe57KV99/ekTGCAeXkicFUothgp + eEZ/TGEdtrcl/dKma7XKYc7OcUzxWlA4YM6XkS8ewYue9+Ve+ia1tLEQua62Z/zk + GUf+jnHFaVK34jNUdN1FpCJjj3CdLJ3TIkWvQ55pAkc6yXUp3rR0zRjpX/Mcz+Ca + 8+pBGcKD9DWQQTI7ZMEqOvClDGEFF2TM6Ye0vN4uM/Ye7xyogFGFt9XCBKUi2XPM + uk/rtVp9PsdYPCM92EN77lA0iMR5+qvVp1Q17OuF+tEHHI3jaGzchYkkMhmBtVpb + 1Z2YSB+hTVhscCU= + + + ee.ria.xroad.common.certificateprofile.impl.TestCertificateProfileInfoProvider + + + + Test TSP + http://www.foo.bar + MIICwjCCAaqgAwIBAgIIb+RPNmkfCdYwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIxMTI5MTE1MzA2WhcNMTQxMTI5MTE1MzA2WjAVMRMwEQYDVQQDDAp0aW1l + c3RhbXAxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCb55NVDtHzs91sflX3 + fatZWUS69rxkxDMpcGo6doJ7YaKrCMr3BZ3ZlDTfCdEosWocTcYXdm3CO8BXlZvh + kvKyHN/hr0UzD0T8j8mBYoq3fGjTVTJOIG2yTsyT/3z3dpcMyGMWwsiqOd9TTtI8 + DcR2cOvQzlLiV9hz/kB9iLJeSQIDAQABo3gwdjAdBgNVHQ4EFgQUbdmtvKHCe0+v + hKP+ZcVUjmf5w/AwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJl + OTE1ItBGGujSCTAOBgNVHQ8BAf8EBAMCBkAwFgYDVR0lAQH/BAwwCgYIKwYBBQUH + AwgwDQYJKoZIhvcNAQEFBQADggEBAFJ3AJ4I4RTeMBWhN8RLPQdJzcd0VRp9FUyY + hnIkR679nXU+ZbIyaQNx3+hPIbhcOMKxlKGm0LcDnjHL4EuJ6Gb027vF7mSwFbcK + PM+L23x2QLvuVcUEjcbP3Kcm93XCSu3RI71JINM+WinjXke/COuFzhMWJcLYj7S5 + dGR53ya0NnSf7dlua5FLBRiOFA5kRWTft6RcEW0jGZzscL6wZn+hH99IihjqgdxV + 1GydL+BgDMfryZzhl+h1WtTwv0Bi5Gs81v8UlNUTnCCfLu9fatHx85/ttFcXEyt9 + SQze3NGcaR1i3kyZvNijzG3C+jrUnJ/lFs5AcIiPG0Emz6oZEYs= + + + + + BUSINESS + 1 + + producer + Experimental producer + + + + + BUSINESS + 1 + + consumer + Experimental consumer + + + + + BUSINESS + 1 + + foo + Org with no address + + foosubsystem + FOO Subsystem + + + barsubsystemId + + + + + producerId + producerServerCode +
127.0.0.1
+ + xcuWTrx4uFeP5mNBXIhYITy+gUM72CJfL63MsWXffXM= + consumerId + fooId + foosubsystemId +
+ + + consumerId + consumerServerCode +
https://www.foo.com/bar
+ + XhdxNaWNz7XBuakTRDyz+5Ald53DCy3DwxUacFe/VX8= +
+ + + fooId + fooServerCode + enRxKzBGb0q7sUJa8Hx0A5aHmQwCa1HzWNFrN3ZDDJw= + producerId + + + + fooId + FooBarServerCode +
https://foo.bar.baz
+ Q/wASEqban646kxZ0/uveKBv4h7U3FWnlKzsSJZU1f8= + fooId +
+ + + Test group + Description + + EE + BUSINESS + member1 + subsys + + + EE + BUSINESS + member2 + + + EE + BUSINESS + member3 + + + EE + BUSINESS + member4 + + + + + central1 + + EE + BUSINESS + foobar + bazservice + + + + + + BUSINESS + Business clients + + 42 + + +
diff --git a/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/EE/shared-params.xml.metadata b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/EE/shared-params.xml.metadata new file mode 100644 index 0000000000..d769ebe1f7 --- /dev/null +++ b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/EE/shared-params.xml.metadata @@ -0,0 +1 @@ +{"contentIdentifier":"SHARED-PARAMETERS","instanceIdentifier":"EE","expirationDate":"2124-05-20T17:42:55Z", "configurationVersion": "5"} diff --git a/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/bar/shared-params.xml b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/bar/shared-params.xml new file mode 100644 index 0000000000..8a970f1f7a --- /dev/null +++ b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/bar/shared-params.xml @@ -0,0 +1,218 @@ + + + + bar + + +
cs0
+ MIICqTCCAZGgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAOMQwwCgYDVQQDDANOL0EwHhcNNzAwMTAxMDAwMDAwWhcNMzgwMTAxMDAwMDAwWjAOMQwwCgYDVQQDDANOL0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDe10ai/VApuFjG+cgVLaV18qOEor6il83v0ErKBVznkSEzhzfplPJbfbXVHCezUsZOtVypvS4VCKg3S9wDBJVHmLrTl8z43xHowSE2KhvBxP+boH+9wt4dWdkiM4vohzuDuqz2k7ly50LlaokY/hQfLZKqRAB4PyiA9H1dk9hri9kIckGZpKHxVmXD19pd1hbvRmEcxF0kEAP4oyQ8EaQpgoy4KiN60x6hV8+xZPUqf03eQgh5LXvpmXDtGT58zN43Om8L+dPCtKyK6dTTjNakv6tJxoZJ2yUnVWPZKH9B3nM79bToxA9SiCjg3i6rU8HJ8ih163Dh9upPwqpmdEqDAgMBAAGjEjAQMA4GA1UdDwEB/wQEAwIGQDANBgkqhkiG9w0BAQ0FAAOCAQEAdgVRzoNWG7shsBV+r9I4dB/ghfnxZAcgag9qevG4YrzLEDHupGB7a0Rx4dKp7gxzSV+E82oFOTZMhQdcVinRrqZT1U8DeT1tgvRH6V24g8HCplDp3AuRWKlPFAWIpsyZ6n6oMIrS9uVCaTF4A8uFZ7GxgcByMP+9BwCNQAigFGJOZzwln60idlR8YmtVCn4oVfBVrH+JRNSfgosVqqZe3q/XHNJP4iVqPt7taYzwwdz2XW02p8lgYZ1MwhMbcZ7xqNjYA0U9yQbUc6/oZ54R5FIgNldINCAJaNRRjXVS+1nt6bRM9GtZoeC4vhFqxIpduQRYpMD2MaJqbwDgal2pmA== + MIICqTCCAZGgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAOMQwwCgYDVQQDDANOL0EwHhcNNzAwMTAxMDAwMDAwWhcNMzgwMTAxMDAwMDAwWjAOMQwwCgYDVQQDDANOL0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDe10ai/VApuFjG+cgVLaV18qOEor6il83v0ErKBVznkSEzhzfplPJbfbXVHCezUsZOtVypvS4VCKg3S9wDBJVHmLrTl8z43xHowSE2KhvBxP+boH+9wt4dWdkiM4vohzuDuqz2k7ly50LlaokY/hQfLZKqRAB4PyiA9H1dk9hri9kIckGZpKHxVmXD19pd1hbvRmEcxF0kEAP4oyQ8EaQpgoy4KiN60x6hV8+xZPUqf03eQgh5LXvpmXDtGT58zN43Om8L+dPCtKyK6dTTjNakv6tJxoZJ2yUnVWPZKH9B3nM79bToxA9SiCjg3i6rU8HJ8ih163Dh9upPwqpmdEqDAgMBAAGjEjAQMA4GA1UdDwEB/wQEAwIGQDANBgkqhkiG9w0BAQ0FAAOCAQEAdgVRzoNWG7shsBV+r9I4dB/ghfnxZAcgag9qevG4YrzLEDHupGB7a0Rx4dKp7gxzSV+E82oFOTZMhQdcVinRrqZT1U8DeT1tgvRH6V24g8HCplDp3AuRWKlPFAWIpsyZ6n6oMIrS9uVCaTF4A8uFZ7GxgcByMP+9BwCNQAigFGJOZzwln60idlR8YmtVCn4oVfBVrH+JRNSfgosVqqZe3q/XHNJP4iVqPt7taYzwwdz2XW02p8lgYZ1MwhMbcZ7xqNjYA0U9yQbUc6/oZ54R5FIgNldINCAJaNRRjXVS+1nt6bRM9GtZoeC4vhFqxIpduQRYpMD2MaJqbwDgal2pmA== + + + + pki1 + + + MIIDUzCCAjugAwIBAgIIU1eWoysptjUwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwNjE0MTAwNDI5WhcNMjIwNjEyMTAwNDI5WjA3MREwDwYDVQQDDAhBZG1p + bkNBMTEVMBMGA1UECgwMRUpCQ0EgU2FtcGxlMQswCQYDVQQGEwJTRTCCASIwDQYJ + KoZIhvcNAQEBBQADggEPADCCAQoCggEBAILYKYehC6hsbPQnqBPWoatI8I7qZGow + 3otWO9pW8lMvjgNiE8Cl8oFQS+C3CaqSvHU+iXUVkIlHuAr6k30G/mm6JqU0zA2o + 2apt5HJFzkg/0/LvLbSB1S5e0VTRDhMncgJakEUJvHFL0aKtq1RigP9C7Zt5BdDy + RBuJiutvaFjSeJ2sCQrHDcrJ1uAtdidv3z3Zih9O8CnalNZFltFf7M8pm+O+HIbu + miA19kShJwvpcdC9fVPuwsF1Qbeo4SeKuDPU1KHq7ZP9Heh7P6eywxghkYC4yewj + Bu8COi1FJMGHt9OdD+rNa/GTZ7ULPFiCH8wwCTn+YUtFe5pFLkvCG7sCAwEAAaNj + MGEwHQYDVR0OBBYEFHctiS4Dtv340mU5MTUi0EYa6NIJMA8GA1UdEwEB/wQFMAMB + Af8wHwYDVR0jBBgwFoAUdy2JLgO2/fjSZTkxNSLQRhro0gkwDgYDVR0PAQH/BAQD + AgGGMA0GCSqGSIb3DQEBBQUAA4IBAQAnEhhOwvk2Goy+wRwZgQLkmv9QIzBwP+Bw + d45DQOJyPjVTukNoc5w1y1in7yR9T8Cv5Ba1ctAqclztwjhAYAhWcG/CSZ4RvX8z + ysbnthW6qhZGGz5KJATZhFYrIaNGqC9i0FfTe3PF3HaowqndnBFtwjV65mszTaTN + p94LKhLk1ARc/BidplsM1cBSoA9VWvTANI8alKuJxh1QG9TbEJul1BTzA/wItMVD + tganTDrQxmkP1NW7d+MsIB5AQHABaXWgjygcqoMlLjyH/0QOP13iyvMXQU4jtSla + TmGm9CaC/xRQ10YD7AHHvq1P2cvfbQaV3I5xUYF7aqwM93ZjmptI + + + http://127.0.0.1:8082/ocsp + + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + http://www.example.net/ocsp + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + ee.ria.xroad.common.certificateprofile.impl.TestCertificateProfileInfoProvider + + + + Test TSP + http://www.foo.bar + MIICwjCCAaqgAwIBAgIIb+RPNmkfCdYwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIxMTI5MTE1MzA2WhcNMTQxMTI5MTE1MzA2WjAVMRMwEQYDVQQDDAp0aW1l + c3RhbXAxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCb55NVDtHzs91sflX3 + fatZWUS69rxkxDMpcGo6doJ7YaKrCMr3BZ3ZlDTfCdEosWocTcYXdm3CO8BXlZvh + kvKyHN/hr0UzD0T8j8mBYoq3fGjTVTJOIG2yTsyT/3z3dpcMyGMWwsiqOd9TTtI8 + DcR2cOvQzlLiV9hz/kB9iLJeSQIDAQABo3gwdjAdBgNVHQ4EFgQUbdmtvKHCe0+v + hKP+ZcVUjmf5w/AwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJl + OTE1ItBGGujSCTAOBgNVHQ8BAf8EBAMCBkAwFgYDVR0lAQH/BAwwCgYIKwYBBQUH + AwgwDQYJKoZIhvcNAQEFBQADggEBAFJ3AJ4I4RTeMBWhN8RLPQdJzcd0VRp9FUyY + hnIkR679nXU+ZbIyaQNx3+hPIbhcOMKxlKGm0LcDnjHL4EuJ6Gb027vF7mSwFbcK + PM+L23x2QLvuVcUEjcbP3Kcm93XCSu3RI71JINM+WinjXke/COuFzhMWJcLYj7S5 + dGR53ya0NnSf7dlua5FLBRiOFA5kRWTft6RcEW0jGZzscL6wZn+hH99IihjqgdxV + 1GydL+BgDMfryZzhl+h1WtTwv0Bi5Gs81v8UlNUTnCCfLu9fatHx85/ttFcXEyt9 + SQze3NGcaR1i3kyZvNijzG3C+jrUnJ/lFs5AcIiPG0Emz6oZEYs= + + + + + BUSINESS + 1 + + producer + Experimental producer + + + + + BUSINESS + 1 + + consumer + Experimental consumer + + + + + BUSINESS + 1 + + foo + Org with no address + + foosubsystem + + + barsubsystemId + + + + + producerId + producerServerCode +
127.0.0.1
+ + xcuWTrx4uFeP5mNBXIhYITy+gUM72CJfL63MsWXffXM= + consumerId + fooId + foosubsystemId +
+ + + consumerId + consumerServerCode +
https://www.foo.com/bar
+ + XhdxNaWNz7XBuakTRDyz+5Ald53DCy3DwxUacFe/VX8= +
+ + + fooId + fooServerCode + enRxKzBGb0q7sUJa8Hx0A5aHmQwCa1HzWNFrN3ZDDJw= + producerId + + + + fooId + FooBarServerCode +
https://foo.bar.baz
+ Q/wASEqban646kxZ0/uveKBv4h7U3FWnlKzsSJZU1f8= + fooId +
+ + + Test group + Description + + EE + BUSINESS + member1 + subsys + + + EE + BUSINESS + member2 + + + EE + BUSINESS + member3 + + + EE + BUSINESS + member4 + + + + + central1 + + EE + BUSINESS + foobar + bazservice + + + + + + BUSINESS + Business clients + + 420 + + +
diff --git a/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/bar/shared-params.xml.metadata b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/bar/shared-params.xml.metadata new file mode 100644 index 0000000000..94e7a4b5a7 --- /dev/null +++ b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/bar/shared-params.xml.metadata @@ -0,0 +1 @@ +{"contentIdentifier":"SHARED-PARAMETERS","instanceIdentifier":"bar","expirationDate":"2124-05-20T17:42:55Z","configurationVersion": "3"} diff --git a/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/baz_v3/private-params.xml b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/baz_v3/private-params.xml new file mode 100644 index 0000000000..e3db69a012 --- /dev/null +++ b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/baz_v3/private-params.xml @@ -0,0 +1,24 @@ + + + baz_v3 + + bar + + http://www.bar.com/conf + YmFyCg== + + + + http://mgmt.com:1234 + + + EE + BUSINESS + servicemember2 + + + 123 + diff --git a/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/baz_v3/private-params.xml.metadata b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/baz_v3/private-params.xml.metadata new file mode 100644 index 0000000000..b3f140cd5c --- /dev/null +++ b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/baz_v3/private-params.xml.metadata @@ -0,0 +1 @@ +{"contentIdentifier":"PRIVATE-PARAMETERS","instanceIdentifier":"baz_v3","expirationDate":"2124-05-20T17:42:55Z", "configurationVersion": "3"} diff --git a/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/baz_v3/shared-params.xml b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/baz_v3/shared-params.xml new file mode 100644 index 0000000000..d4d3fc617a --- /dev/null +++ b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/baz_v3/shared-params.xml @@ -0,0 +1,495 @@ + + + + baz_v3 + + +
cs0
+ MIICqTCCAZGgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAOMQwwCgYDVQQDDANOL0EwHhcNNzAwMTAxMDAwMDAwWhcNMzgwMTAxMDAwMDAwWjAOMQwwCgYDVQQDDANOL0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDe10ai/VApuFjG+cgVLaV18qOEor6il83v0ErKBVznkSEzhzfplPJbfbXVHCezUsZOtVypvS4VCKg3S9wDBJVHmLrTl8z43xHowSE2KhvBxP+boH+9wt4dWdkiM4vohzuDuqz2k7ly50LlaokY/hQfLZKqRAB4PyiA9H1dk9hri9kIckGZpKHxVmXD19pd1hbvRmEcxF0kEAP4oyQ8EaQpgoy4KiN60x6hV8+xZPUqf03eQgh5LXvpmXDtGT58zN43Om8L+dPCtKyK6dTTjNakv6tJxoZJ2yUnVWPZKH9B3nM79bToxA9SiCjg3i6rU8HJ8ih163Dh9upPwqpmdEqDAgMBAAGjEjAQMA4GA1UdDwEB/wQEAwIGQDANBgkqhkiG9w0BAQ0FAAOCAQEAdgVRzoNWG7shsBV+r9I4dB/ghfnxZAcgag9qevG4YrzLEDHupGB7a0Rx4dKp7gxzSV+E82oFOTZMhQdcVinRrqZT1U8DeT1tgvRH6V24g8HCplDp3AuRWKlPFAWIpsyZ6n6oMIrS9uVCaTF4A8uFZ7GxgcByMP+9BwCNQAigFGJOZzwln60idlR8YmtVCn4oVfBVrH+JRNSfgosVqqZe3q/XHNJP4iVqPt7taYzwwdz2XW02p8lgYZ1MwhMbcZ7xqNjYA0U9yQbUc6/oZ54R5FIgNldINCAJaNRRjXVS+1nt6bRM9GtZoeC4vhFqxIpduQRYpMD2MaJqbwDgal2pmA== + MIICqTCCAZGgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAOMQwwCgYDVQQDDANOL0EwHhcNNzAwMTAxMDAwMDAwWhcNMzgwMTAxMDAwMDAwWjAOMQwwCgYDVQQDDANOL0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDe10ai/VApuFjG+cgVLaV18qOEor6il83v0ErKBVznkSEzhzfplPJbfbXVHCezUsZOtVypvS4VCKg3S9wDBJVHmLrTl8z43xHowSE2KhvBxP+boH+9wt4dWdkiM4vohzuDuqz2k7ly50LlaokY/hQfLZKqRAB4PyiA9H1dk9hri9kIckGZpKHxVmXD19pd1hbvRmEcxF0kEAP4oyQ8EaQpgoy4KiN60x6hV8+xZPUqf03eQgh5LXvpmXDtGT58zN43Om8L+dPCtKyK6dTTjNakv6tJxoZJ2yUnVWPZKH9B3nM79bToxA9SiCjg3i6rU8HJ8ih163Dh9upPwqpmdEqDAgMBAAGjEjAQMA4GA1UdDwEB/wQEAwIGQDANBgkqhkiG9w0BAQ0FAAOCAQEAdgVRzoNWG7shsBV+r9I4dB/ghfnxZAcgag9qevG4YrzLEDHupGB7a0Rx4dKp7gxzSV+E82oFOTZMhQdcVinRrqZT1U8DeT1tgvRH6V24g8HCplDp3AuRWKlPFAWIpsyZ6n6oMIrS9uVCaTF4A8uFZ7GxgcByMP+9BwCNQAigFGJOZzwln60idlR8YmtVCn4oVfBVrH+JRNSfgosVqqZe3q/XHNJP4iVqPt7taYzwwdz2XW02p8lgYZ1MwhMbcZ7xqNjYA0U9yQbUc6/oZ54R5FIgNldINCAJaNRRjXVS+1nt6bRM9GtZoeC4vhFqxIpduQRYpMD2MaJqbwDgal2pmA== + + + + pki1 + + + MIIDjTCCAnWgAwIBAgIJAKL3zm5uAgNAMA0GCSqGSIb3DQEBBQUAMF0xCzAJBgNV + BAYTAkVFMRQwEgYDVQQKEwtDeWJlcm5ldGljYTEMMAoGA1UECxMDSVRPMQ4wDAYD + VQQDEwVDeWJlcjEaMBgGCSqGSIb3DQEJARYLYWFhQGJiYi5jY2MwHhcNMTQwOTI5 + MDk0MTM3WhcNMjQwOTI2MDk0MTM3WjBdMQswCQYDVQQGEwJFRTEUMBIGA1UEChML + Q3liZXJuZXRpY2ExDDAKBgNVBAsTA0lUTzEOMAwGA1UEAxMFQ3liZXIxGjAYBgkq + hkiG9w0BCQEWC2FhYUBiYmIuY2NjMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB + CgKCAQEA0ntJBTdBj7KT+j37yQ3r9pzO/VgVRQptQO6pDGSYonBRDbziYyBAuo8O + wta2GshTqiqbD9OMqi8EK2fxrnCfo5HhG4BwY4DPGCozwI/9ETCNp/ElxrICbb68 + zCQy6ecOrPbirG3baKUKPxBwnN/S1w57rR66Eb02hlA0/AAqN7GJnNqonpeDnIQ5 + vq4bdrrjGEwke44hfR+wI81fVP2oc28AWk3p1TVA0TPLjKfQOlXMfVYIA+Pf+9N4 + uiOXAcv4ZfUAJbiZQujBdHR7wF4SiV0u3Xfwfk6uj1Ddpv5ehh8HKhiNoDySCXgR + I8I5X1gbQ3MIFR7CSwcZuZkolsQnHQIDAQABo1AwTjAMBgNVHRMEBTADAQH/MB0G + A1UdDgQWBBR+egbuTBG1XAUq40xvTvPKht3y3jAfBgNVHSMEGDAWgBR+egbuTBG1 + XAUq40xvTvPKht3y3jANBgkqhkiG9w0BAQUFAAOCAQEAu6QBabq8zQXnxGRCeKpB + vp4iMY4VOWm2QYiwDljaQpMvQWjoBhMEZsaaux/ouSiQvAzbO/NdHHJsXAfwxM2E + o8kFtZNIlTvBs3Os7CvLle1z7pwU/m9LOeakys9xDQRzlPqQwN0Q2oELu0tOHtkd + 2RBLXjy5ZXHHw+KnDwfQlLUzvNRLLmZIfZxMf57z53eP59T0UYBj2bHYV2hxfzYH + mJG6nz8FW/mImr53meFTrM6muw6fKbeKTNvr4n+7AK6Hn6Whie730DB4A9xyWvjd + QWYo7FtYJ/WvbC45E8ppGZH0OWBI028yDvfVgeB8eIpzeMyI1fSHGb66hKc3ruWd + SA== + + http://127.0.0.1:8082/ocsp + + MIIDejCCAmKgAwIBAgIBBDANBgkqhkiG9w0BAQUFADBdMQswCQYDVQQGEwJFRTEU + MBIGA1UEChMLQ3liZXJuZXRpY2ExDDAKBgNVBAsTA0lUTzEOMAwGA1UEAxMFQ3li + ZXIxGjAYBgkqhkiG9w0BCQEWC2FhYUBiYmIuY2NjMB4XDTE0MDkyOTA5NTYxMloX + DTI0MDkyNjA5NTYxMlowYDELMAkGA1UEBhMCRUUxFDASBgNVBAoTC0N5YmVybmV0 + aWNhMQwwCgYDVQQLEwNJVE8xETAPBgNVBAMTCGNvbnN1bWVyMRowGAYJKoZIhvcN + AQkBFgthYWFAYmJiLmNjYzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB + AM0nxh0cNjmjmqYIyBpOCnQb4/eIgPcJF7gTMmhlg5HAkczGraGyrywUumZTUU0j + 3CzsXpXjsCWKtgkwzfmDQggfA95x50fu8HxIlHyd75FnA0EnXS9c9aw5v8SOEKYB + 5UADIhqoGUkqZd21O3o8RJyO8pI4hfe0EiVbQumH3VtNwkgoiK0XlZVRvJeYBYe8 + OODIU+xj8db+BV7QHcRVHBzuynJoy15kByNMzx+kjAPZH+AbB7r6c11i/qd0weno + 55QMlilG/Ez/TZiW7oDBgj7lH8c7AQy8bwhEJSLXAD0H3uytOVaWB9O5PkDDdUD+ + O0yRvSf+hCtaQ828sfQxYz8CAwEAAaNCMEAwHQYDVR0OBBYEFGe3oWflVEr3ammj + rELcGPOdqmwSMB8GA1UdIwQYMBaAFH56Bu5MEbVcBSrjTG9O88qG3fLeMA0GCSqG + SIb3DQEBBQUAA4IBAQC968pzwVBu+nJgpLnQDF4oEyoJHg+fteCBo/IU0DHvWgYv + vliTOelxwIOhjerGBFGxWQVYJiB1VRBTa/e8q4NTFjeN0LGkyO8KdYIA4yhZTwIe + 0ctA62R46II4S7cvoCl993b9wxujMjz9v4Zz7oOx+sFOV8fOI828YQjQCRSOCbcJ + okpGIjJQrdDq3nBVf5f7bCUH6SRWnng3y9ntzgjx8SiQgX+CYTcdWew/9c0Ko6je + neKQsBCiYuP03CJX5gg5yC37MxlcC2NpwdM60Q+7sp+Riz+eGw4tpVnAEmD8ZwHl + vuN63j9maswGt/KrgylIF99T/5WpbFVRWQHibbEH + + + + http://www.example.net/ocsp + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + ee.ria.xroad.common.certificateprofile.impl.TestCertificateProfileInfoProvider + + http://ca:8887/acme/directory + + + + pki2 + true + + + MIIDiDCCAnCgAwIBAgIIEVk07cr7+SMwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIxMTE5MDkxODU2WhcNMTQxMTE5MDkxODU2WjATMREwDwYDVQQDDAhjb25z + dW1lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM64hfHPpteJYaUm + DJaEVQ+3yst6hNocO1Ax8Bu1Zk1MKkyOiayfwsnCDN5XpDSlFRx/+aP6x8PFte2D + YFPq+3aP1ymN/iBCJlp2vDukkD8TAMaewKJpdWZD8WFAUnncRPy1q8BcLehexieE + rTGlPLrgbW115FXur7YN8CHZPb0TyfELsXPPWK3i/YREhl4Xk7keI7z3qQnUQbJL + wIrkSLq07pt2ciVmmZxFJq3TpB9grw/mnCURLJ1yY14FWLZ+hPrYGnzlkTcfKB6c + JfBKWUxkB5+JRL3yFo4dySfdiZ8wsJh0cbqEHDW2UghQQ/hkbJnn4UmZrrHn95we + t5pZQAcCAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGGPGh0 + dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dlYi9z + dGF0dXMvb2NzcDAdBgNVHQ4EFgQUfbgfWLDuAcEKrjXT3/CdH4D/CEEwDAYDVR0T + AQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNVHQ8B + Af8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBADe8dzcmKMa6RHzrgRTmApBMBlHR + Vg2kRRJF4NdSUbxUotLxBCA5ZlXdqm5cb3m9XtcU45+mC9S1eLPO69ZuVe6K3zY8 + MSoKSfKzVkWEEtqEn/wHiqkb90qtAITjt4FkWo3mSufMzSpBkUrxasaqIYBloLKm + tYmuCfu1gS2euG0KDPfH+i0IBgCZLBeZzdU+H2qTXH734Y3CF3eYGJ3XP6RQzZaZ + vE8J5km9BgGS1wqIsuBwdy3Zt8yuq1kR02CQ/0BnfnUsqVIvZR61Nl0j6VK8RtUS + yoYV9OkEmN6OTK4J8F47fh8AZUeagLJ29t0KdlS9VR849VWHQqAzakOU1uk= + + + http://127.0.0.1:8082/ocsp + + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + http://www.example.net/ocsp + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + ee.ria.xroad.common.certificateprofile.impl.TestCertificateProfileInfoProvider + + + pki3 + false + + + MIIDiDCCAnCgAwIBAgIIVYNTWA8JcLwwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIxMTE5MDkxNDIzWhcNMTQxMTE5MDkxNDIzWjATMREwDwYDVQQDDAhwcm9k + dWNlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALKNC381RiACCftv + ApBzk5HD5YHw0u9SOkwcIkn4cZ4eQWrlROnqHTpS9IVSBoOz6pjCx/FwxZTdpw0j + X+bRYpxnj11I2XKzHfhfa6BvL5VkaDtjGpOdSGMJUtrI6m9jFiYryEmYHWxPlL9V + pDK0KknevYm2BR23/xDHweBSZ7tkMENU1kXFWLunoBys+W0waR+Z8HH5WNuBLz8X + z2iz/6KQ5BoWSPJc9P5TXNOBB+5XyjBR2ogoAOtX53OJzu0wMgLpjuJGdfcpy1S9 + ukU27B21i2MfZ6Tjhu9oKrAIgcMWJaHJ/gRX6iX1vXlfhUTkE1ACSfvhZdntKLzN + TZGEcxsCAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGGPGh0 + dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dlYi9z + dGF0dXMvb2NzcDAdBgNVHQ4EFgQUUHtGmEl0Cuh/x/wj+UU5S7Wui48wDAYDVR0T + AQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNVHQ8B + Af8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACJqqey5Ywoegq+Rjo4v89AN78Ou + tKtRzQZtuCZP9+ZhY6ivCPK4F8Ne6qpWZb63OLORyQosDAvj6m0iCFMsUZS3nC0U + DR0VyP2WrOihBOFC4CA7H2X4l7pkSyMN73ZC6icXkbj9H0ix5/Bv3Ug64DK9SixG + RxMwLxouIzk7WvePQ6ywlhGvZRTXxhr0DwvfZnPXxHDPB2q+9pKzC9h2txG1tyD9 + ffohEC/LKdGrHSe6hnTRedQUN3hcMQqCTc5cHsaB8bh5EaHrib3RR0YsOhjAd6IC + ms33BZnfNWQuGVTXw74Eu/P1JkwR0ReO+XuxxMp3DW2epMfL44OHWTb6JGY= + + + http://127.0.0.1:8082/ocsp + + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + http://www.example.net/ocsp + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + ee.ria.xroad.common.certificateprofile.impl.TestCertificateProfileInfoProvider + + + pki4 + true + + + MIIDZzCCAk+gAwIBAgIBAzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJFRTEU + MBIGA1UEChMLQ3liZXJuZXRpY2ExDTALBgNVBAsTBENBIDExGjAYBgkqhkiG9w0B + CQEWC2FhYUBiYmIuY2NjMB4XDTEyMDkxNDExNTk0MFoXDTIyMDkxMjExNTk0MFow + TjELMAkGA1UEBhMCRUUxFDASBgNVBAoTC0N5YmVybmV0aWNhMQ0wCwYDVQQLEwRD + QSAyMRowGAYJKoZIhvcNAQkBFgthYWFAYmJiLmNjYzCCASIwDQYJKoZIhvcNAQEB + BQADggEPADCCAQoCggEBAM1Ex4Bh8zHU+wWyp2fm7U2dAqooUamE4hyLVrmNifvB + AjKT7gSMeTB2bxCE38BYfzvnbQCs82piQRC6iCgHE/Ywr1zz86Pa/OI36tBmCCjW + NDm/U6MAlwT7s+GL3bpty4aY4pLilQZbmyDsE2hsJ+R82GMBttRku3LMKKE/jyQI + 26gK9xhYPPF85cfv7hylekcr8fUeGFmxEULLWyFFwhR9pr7HPcKhJR/h4rhJ3e0d + EDfROPtVfBSViS5UCh7UNut8Q3kbwwZBIa1NEN9vPUIBhH/ZvKr3a7188y3n1GY8 + paSVdYmGZYDSyK7ugztEOFWqekiA7gfLdyeCto12K10CAwEAAaNQME4wDAYDVR0T + BAUwAwEB/zAdBgNVHQ4EFgQUJDYGHNJmNdoV9S/T4ZLv/ze+JYIwHwYDVR0jBBgw + FoAUqV/rN9mEwnTBN+y4Di3aLz4BKj8wDQYJKoZIhvcNAQEFBQADggEBAC63dW7v + 5J1Yf7ue2ybTfIYVFAN1LOY4Ge+zLai2wkhRjaOqzV67HB/e1zItBbq0M1NkA4DQ + DM/aEoave5aMoZtR77JUrFG2KLnTqJZb3AZDWi3qsdYNo1yW0YMgGBVq8pThJ4NH + +QV5MdgkMZjDUJArtU0Z6eD7br0BiA4uEx4irr0j8e5oInBbMPb4Orv05yuaXc9n + utPIm7iudKcNsHs+16ACAo0KdU38GnwgGW83B0LB0sCVwFMH1OpC435dXLDycvg+ + Pe5VvXxCL6guFtZtBbnAAtRreTC3bhS+bnxLyj+Hk7oAYyaW441BnzPcVWYeAf56 + 89A9e6HCmXEY1bo= + + ee.ria.xroad.common.certificateprofile.impl.TestCertificateProfileInfoProvider + + + + pki5 with intermediate certs + true + + + MIIDdTCCAl2gAwIBAgIJAOuBNCIUm0gwMA0GCSqGSIb3DQEBBQUAMFExCzAJBgNV + BAYTAkVFMRQwEgYDVQQKEwtDeWJlcm5ldGljYTEQMA4GA1UECxMHUm9vdCBDQTEa + MBgGCSqGSIb3DQEJARYLYWFhQGJiYi5jY2MwHhcNMTIwOTE0MTE1NjM3WhcNMjIw + OTEyMTE1NjM3WjBRMQswCQYDVQQGEwJFRTEUMBIGA1UEChMLQ3liZXJuZXRpY2Ex + EDAOBgNVBAsTB1Jvb3QgQ0ExGjAYBgkqhkiG9w0BCQEWC2FhYUBiYmIuY2NjMIIB + IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArnYuIDCNNqIZ/GH0THglNHoU + T8PCfH5HGeVadaQu5xJFg2hLfbCvJNDGDgOcGXlss8tZ51y80EGwJFAU1IajhELF + yRDhEUsBd7FzulMxMwMFwluoPB1u0XUsNmYunmdlBc6BERkrTQi8oRXO7psslbiU + 4LDqeIdP04RhySNnVRwfb3eBfGR7Gh/EbdFeB814gCpoM6nmK1XR2f3JdCTJxPyE + 7EppIDPBBmgpzq2TzHF3qzd1Qv5Xe0XSC6DnkTbzpxrCvalGqGrIYOsV5vtOFt+2 + Tlx+QHIWhvZ9bDdEGY58O0jWj3lO5VkFYsloauYa8trCm7w20J6QqwtCIskMvwID + AQABo1AwTjAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBRSFYADqiIAKTGIT44uTLwS + hz1YZzAfBgNVHSMEGDAWgBRSFYADqiIAKTGIT44uTLwShz1YZzANBgkqhkiG9w0B + AQUFAAOCAQEAMn7YD7C3cjkQL0wm1v47KYda/Y05jR5zMwV648VHgPeNLRyZYWJr + pHdUQiAqKL3zhF8neOQO100fwUxSxLsuPNqkce02DwjMSMWi3bF9xX7MlrQnAb6a + SJ47YaPyZSvXlkzRC3dcDjcBIRSGNxsftISSEJJeqGWQz6b9LkIfxTjtcHbTnm/y + GPWpmr2blkm7qRKK4eFwvooJ6KqBmm8/J086VpDOc9qRy/ar3za6UdFEBDX2aHQD + 4OLgBvj0dLYCu3w32ltmVOgBoewIq5M1wBGp8dIs5Jrr4P9xYprRY1une3IWvviJ + NXoWm1enl1+N31r32YIc4vXZiA2L+cjlvQ== + + + + MIIDajCCAlKgAwIBAgIBAzANBgkqhkiG9w0BAQUFADBRMQswCQYDVQQGEwJFRTEU + MBIGA1UEChMLQ3liZXJuZXRpY2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGjAYBgkqhkiG + 9w0BCQEWC2FhYUBiYmIuY2NjMB4XDTEyMDkxNDExNTY1OFoXDTIyMDkxMjExNTY1 + OFowTjELMAkGA1UEBhMCRUUxFDASBgNVBAoTC0N5YmVybmV0aWNhMQ0wCwYDVQQL + EwRDQSAxMRowGAYJKoZIhvcNAQkBFgthYWFAYmJiLmNjYzCCASIwDQYJKoZIhvcN + AQEBBQADggEPADCCAQoCggEBAOnguIBD8dfb4vM73WKR+T2zWKAbFeUu7Wcpio/2 + CDLJZ3mF2Zo+JWOk8nYSUrZkFpCvH+S5Mhj0Eo4LcCk2PTiRP2fPPABIQmEXgLKU + gcqH132fVCyPRKdL+hG+CA7yzDOIO0h8ME/nQBuEJHc+ayGSyKG5/PfsETfseD0f + 9QoaAXsrztkhH+yNX+JgaPAyxQqFB8p8PLX3DrkD1JtslSjMJTuitVsf4JKb9zmI + /lGaMGqkq5ss3c1weF8s38+Zt8rU4FHS+DvFTVJVMHjnTu/emgiRiLJWXioKmijy + glMoZvpahgtOieS50Vgn8V+ttL4kLYSBFlAVkNOa0Fbz8eMCAwEAAaNQME4wDAYD + VR0TBAUwAwEB/zAdBgNVHQ4EFgQUqV/rN9mEwnTBN+y4Di3aLz4BKj8wHwYDVR0j + BBgwFoAUUhWAA6oiACkxiE+OLky8Eoc9WGcwDQYJKoZIhvcNAQEFBQADggEBAKBk + ++HBiGxSqDQUVWRjrD/5uBk/RH9oH2C/ZXYUyFCjAvmUWa+dWFyJScyVcZpchnbO + SUPKtFR78N3nJp01mbWyvzws4C+DbwPOdwPJHNKqwybn4uz1oWDoNioi1ITkjlYo + haDs9uVI9sLrApqQnSgL7Oc4yG2TSoa0YkLmdICHxH9TCK0NEUxW6Sa4aehftLD/ + 7gNORIe8YT9MqPGWDW6Za9f74Vx+H5/ejRkTKUA6jHTLmZCly4L2f+tpDIs22omd + 0X3Ct9os/XA7ZbbwiMuqAiiXKVGerTmeCrkWcixDkN9ATCI0ur5NZniSVnXGjV6m + u3cl4oYr+u2NJVPDgKI= + + + + + MIIDZzCCAk+gAwIBAgIBAzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJFRTEU + MBIGA1UEChMLQ3liZXJuZXRpY2ExDTALBgNVBAsTBENBIDExGjAYBgkqhkiG9w0B + CQEWC2FhYUBiYmIuY2NjMB4XDTEyMDkxNDExNTk0MFoXDTIyMDkxMjExNTk0MFow + TjELMAkGA1UEBhMCRUUxFDASBgNVBAoTC0N5YmVybmV0aWNhMQ0wCwYDVQQLEwRD + QSAyMRowGAYJKoZIhvcNAQkBFgthYWFAYmJiLmNjYzCCASIwDQYJKoZIhvcNAQEB + BQADggEPADCCAQoCggEBAM1Ex4Bh8zHU+wWyp2fm7U2dAqooUamE4hyLVrmNifvB + AjKT7gSMeTB2bxCE38BYfzvnbQCs82piQRC6iCgHE/Ywr1zz86Pa/OI36tBmCCjW + NDm/U6MAlwT7s+GL3bpty4aY4pLilQZbmyDsE2hsJ+R82GMBttRku3LMKKE/jyQI + 26gK9xhYPPF85cfv7hylekcr8fUeGFmxEULLWyFFwhR9pr7HPcKhJR/h4rhJ3e0d + EDfROPtVfBSViS5UCh7UNut8Q3kbwwZBIa1NEN9vPUIBhH/ZvKr3a7188y3n1GY8 + paSVdYmGZYDSyK7ugztEOFWqekiA7gfLdyeCto12K10CAwEAAaNQME4wDAYDVR0T + BAUwAwEB/zAdBgNVHQ4EFgQUJDYGHNJmNdoV9S/T4ZLv/ze+JYIwHwYDVR0jBBgw + FoAUqV/rN9mEwnTBN+y4Di3aLz4BKj8wDQYJKoZIhvcNAQEFBQADggEBAC63dW7v + 5J1Yf7ue2ybTfIYVFAN1LOY4Ge+zLai2wkhRjaOqzV67HB/e1zItBbq0M1NkA4DQ + DM/aEoave5aMoZtR77JUrFG2KLnTqJZb3AZDWi3qsdYNo1yW0YMgGBVq8pThJ4NH + +QV5MdgkMZjDUJArtU0Z6eD7br0BiA4uEx4irr0j8e5oInBbMPb4Orv05yuaXc9n + utPIm7iudKcNsHs+16ACAo0KdU38GnwgGW83B0LB0sCVwFMH1OpC435dXLDycvg+ + Pe5VvXxCL6guFtZtBbnAAtRreTC3bhS+bnxLyj+Hk7oAYyaW441BnzPcVWYeAf56 + 89A9e6HCmXEY1bo= + + + + + MIIDZzCCAk+gAwIBAgIBAzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJFRTEU + MBIGA1UEChMLQ3liZXJuZXRpY2ExDTALBgNVBAsTBENBIDIxGjAYBgkqhkiG9w0B + CQEWC2FhYUBiYmIuY2NjMB4XDTEyMDkxNDEyMDEyNVoXDTIyMDkxMjEyMDEyNVow + TjELMAkGA1UEBhMCRUUxFDASBgNVBAoTC0N5YmVybmV0aWNhMQ0wCwYDVQQLEwRD + QSAzMRowGAYJKoZIhvcNAQkBFgthYWFAYmJiLmNjYzCCASIwDQYJKoZIhvcNAQEB + BQADggEPADCCAQoCggEBALxWxIfonRRiiS+mylDJdep1uyNqeq6LkfLZjJHdrgBB + oBi9TB2l4BSHND5jxvyFKpvCDEebx4ye+eWTNdzL+JRP/fstNhM4hb6Ikxjko4nK + DsJHkzKH7pV0B6BfTeWTWyO2Lu2hmfkYHYRzXTH0dxTBe9PibHLNoZYTk6aA3rH/ + q+Wqs+G1adKg9JJ98iCqzcP4dw/6C+EFI1irADu3UB02WXn5LW3r4j3s683EHbg1 + LVEpYtN/12lMXzPN26D9+AfoW1pCma88K0W4tYMERxTU+TJgZP4QnTO8obANlJKJ + NT3NCoFfc5A93hdcz5LZI0toqhf4NVRCYFo8PSwcTyUCAwEAAaNQME4wDAYDVR0T + BAUwAwEB/zAdBgNVHQ4EFgQUuAqclcUU2JuYKrI5EBrP7vlheJswHwYDVR0jBBgw + FoAUJDYGHNJmNdoV9S/T4ZLv/ze+JYIwDQYJKoZIhvcNAQEFBQADggEBAHmyfjiQ + mkjnXxC/Z350Re99WUHqmaSdWoK96yCkeAJrTAe57KV99/ekTGCAeXkicFUothgp + eEZ/TGEdtrcl/dKma7XKYc7OcUzxWlA4YM6XkS8ewYue9+Ve+ia1tLEQua62Z/zk + GUf+jnHFaVK34jNUdN1FpCJjj3CdLJ3TIkWvQ55pAkc6yXUp3rR0zRjpX/Mcz+Ca + 8+pBGcKD9DWQQTI7ZMEqOvClDGEFF2TM6Ye0vN4uM/Ye7xyogFGFt9XCBKUi2XPM + uk/rtVp9PsdYPCM92EN77lA0iMR5+qvVp1Q17OuF+tEHHI3jaGzchYkkMhmBtVpb + 1Z2YSB+hTVhscCU= + + + ee.ria.xroad.common.certificateprofile.impl.TestCertificateProfileInfoProvider + + + + Test TSP + http://www.foo.bar + MIICwjCCAaqgAwIBAgIIb+RPNmkfCdYwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIxMTI5MTE1MzA2WhcNMTQxMTI5MTE1MzA2WjAVMRMwEQYDVQQDDAp0aW1l + c3RhbXAxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCb55NVDtHzs91sflX3 + fatZWUS69rxkxDMpcGo6doJ7YaKrCMr3BZ3ZlDTfCdEosWocTcYXdm3CO8BXlZvh + kvKyHN/hr0UzD0T8j8mBYoq3fGjTVTJOIG2yTsyT/3z3dpcMyGMWwsiqOd9TTtI8 + DcR2cOvQzlLiV9hz/kB9iLJeSQIDAQABo3gwdjAdBgNVHQ4EFgQUbdmtvKHCe0+v + hKP+ZcVUjmf5w/AwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJl + OTE1ItBGGujSCTAOBgNVHQ8BAf8EBAMCBkAwFgYDVR0lAQH/BAwwCgYIKwYBBQUH + AwgwDQYJKoZIhvcNAQEFBQADggEBAFJ3AJ4I4RTeMBWhN8RLPQdJzcd0VRp9FUyY + hnIkR679nXU+ZbIyaQNx3+hPIbhcOMKxlKGm0LcDnjHL4EuJ6Gb027vF7mSwFbcK + PM+L23x2QLvuVcUEjcbP3Kcm93XCSu3RI71JINM+WinjXke/COuFzhMWJcLYj7S5 + dGR53ya0NnSf7dlua5FLBRiOFA5kRWTft6RcEW0jGZzscL6wZn+hH99IihjqgdxV + 1GydL+BgDMfryZzhl+h1WtTwv0Bi5Gs81v8UlNUTnCCfLu9fatHx85/ttFcXEyt9 + SQze3NGcaR1i3kyZvNijzG3C+jrUnJ/lFs5AcIiPG0Emz6oZEYs= + + + + + BUSINESS + 1 + + producer + Experimental producer + + + + + BUSINESS + 1 + + consumer + Experimental consumer + + + + + BUSINESS + 1 + + foo + Org with no address + + foosubsystem + + + barsubsystemId + + + + + producerId + producerServerCode +
127.0.0.1
+ + xcuWTrx4uFeP5mNBXIhYITy+gUM72CJfL63MsWXffXM= + consumerId + fooId + foosubsystemId +
+ + + consumerId + consumerServerCode +
https://www.foo.com/bar
+ + XhdxNaWNz7XBuakTRDyz+5Ald53DCy3DwxUacFe/VX8= +
+ + + fooId + fooServerCode + enRxKzBGb0q7sUJa8Hx0A5aHmQwCa1HzWNFrN3ZDDJw= + producerId + + + + fooId + FooBarServerCode +
https://foo.bar.baz
+ Q/wASEqban646kxZ0/uveKBv4h7U3FWnlKzsSJZU1f8= + fooId +
+ + + Test group + Description + + EE + BUSINESS + member1 + subsys + + + EE + BUSINESS + member2 + + + EE + BUSINESS + member3 + + + EE + BUSINESS + member4 + + + + + central1 + + EE + BUSINESS + foobar + bazservice + + + + + + BUSINESS + Business clients + + 42 + + +
diff --git a/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/baz_v3/shared-params.xml.metadata b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/baz_v3/shared-params.xml.metadata new file mode 100644 index 0000000000..b57952b256 --- /dev/null +++ b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/baz_v3/shared-params.xml.metadata @@ -0,0 +1 @@ +{"contentIdentifier":"SHARED-PARAMETERS","instanceIdentifier":"baz_v3","expirationDate":"2124-05-20T17:42:55Z", "configurationVersion": "3"} diff --git a/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/foo_v2/private-params.xml b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/foo_v2/private-params.xml new file mode 100644 index 0000000000..d4127c37a2 --- /dev/null +++ b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/foo_v2/private-params.xml @@ -0,0 +1,24 @@ + + + foo_v2 + + bar + + http://www.bar.com/conf + YmFyCg== + + + + http://mgmt.com:1234 + + + foo + fooclass + foocode + + + 123 + diff --git a/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/foo_v2/private-params.xml.metadata b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/foo_v2/private-params.xml.metadata new file mode 100644 index 0000000000..d124387486 --- /dev/null +++ b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/foo_v2/private-params.xml.metadata @@ -0,0 +1 @@ +{"contentIdentifier":"PRIVATE-PARAMETERS","instanceIdentifier":"v2","expirationDate":"2124-05-20T17:42:55Z"} diff --git a/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/foo_v2/shared-params.xml b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/foo_v2/shared-params.xml new file mode 100644 index 0000000000..9c8d9252f9 --- /dev/null +++ b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/foo_v2/shared-params.xml @@ -0,0 +1,412 @@ + + + + foo_v2 + + + pki2 + true + + + MIIDiDCCAnCgAwIBAgIIEVk07cr7+SMwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIxMTE5MDkxODU2WhcNMTQxMTE5MDkxODU2WjATMREwDwYDVQQDDAhjb25z + dW1lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM64hfHPpteJYaUm + DJaEVQ+3yst6hNocO1Ax8Bu1Zk1MKkyOiayfwsnCDN5XpDSlFRx/+aP6x8PFte2D + YFPq+3aP1ymN/iBCJlp2vDukkD8TAMaewKJpdWZD8WFAUnncRPy1q8BcLehexieE + rTGlPLrgbW115FXur7YN8CHZPb0TyfELsXPPWK3i/YREhl4Xk7keI7z3qQnUQbJL + wIrkSLq07pt2ciVmmZxFJq3TpB9grw/mnCURLJ1yY14FWLZ+hPrYGnzlkTcfKB6c + JfBKWUxkB5+JRL3yFo4dySfdiZ8wsJh0cbqEHDW2UghQQ/hkbJnn4UmZrrHn95we + t5pZQAcCAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGGPGh0 + dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dlYi9z + dGF0dXMvb2NzcDAdBgNVHQ4EFgQUfbgfWLDuAcEKrjXT3/CdH4D/CEEwDAYDVR0T + AQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNVHQ8B + Af8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBADe8dzcmKMa6RHzrgRTmApBMBlHR + Vg2kRRJF4NdSUbxUotLxBCA5ZlXdqm5cb3m9XtcU45+mC9S1eLPO69ZuVe6K3zY8 + MSoKSfKzVkWEEtqEn/wHiqkb90qtAITjt4FkWo3mSufMzSpBkUrxasaqIYBloLKm + tYmuCfu1gS2euG0KDPfH+i0IBgCZLBeZzdU+H2qTXH734Y3CF3eYGJ3XP6RQzZaZ + vE8J5km9BgGS1wqIsuBwdy3Zt8yuq1kR02CQ/0BnfnUsqVIvZR61Nl0j6VK8RtUS + yoYV9OkEmN6OTK4J8F47fh8AZUeagLJ29t0KdlS9VR849VWHQqAzakOU1uk= + + + http://127.0.0.1:8082/ocsp + + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + http://www.example.net/ocsp + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + ee.ria.xroad.common.certificateprofile.impl.TestCertificateProfileInfoProvider + + + pki3 + false + + + MIIDiDCCAnCgAwIBAgIIVYNTWA8JcLwwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIxMTE5MDkxNDIzWhcNMTQxMTE5MDkxNDIzWjATMREwDwYDVQQDDAhwcm9k + dWNlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALKNC381RiACCftv + ApBzk5HD5YHw0u9SOkwcIkn4cZ4eQWrlROnqHTpS9IVSBoOz6pjCx/FwxZTdpw0j + X+bRYpxnj11I2XKzHfhfa6BvL5VkaDtjGpOdSGMJUtrI6m9jFiYryEmYHWxPlL9V + pDK0KknevYm2BR23/xDHweBSZ7tkMENU1kXFWLunoBys+W0waR+Z8HH5WNuBLz8X + z2iz/6KQ5BoWSPJc9P5TXNOBB+5XyjBR2ogoAOtX53OJzu0wMgLpjuJGdfcpy1S9 + ukU27B21i2MfZ6Tjhu9oKrAIgcMWJaHJ/gRX6iX1vXlfhUTkE1ACSfvhZdntKLzN + TZGEcxsCAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGGPGh0 + dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dlYi9z + dGF0dXMvb2NzcDAdBgNVHQ4EFgQUUHtGmEl0Cuh/x/wj+UU5S7Wui48wDAYDVR0T + AQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNVHQ8B + Af8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACJqqey5Ywoegq+Rjo4v89AN78Ou + tKtRzQZtuCZP9+ZhY6ivCPK4F8Ne6qpWZb63OLORyQosDAvj6m0iCFMsUZS3nC0U + DR0VyP2WrOihBOFC4CA7H2X4l7pkSyMN73ZC6icXkbj9H0ix5/Bv3Ug64DK9SixG + RxMwLxouIzk7WvePQ6ywlhGvZRTXxhr0DwvfZnPXxHDPB2q+9pKzC9h2txG1tyD9 + ffohEC/LKdGrHSe6hnTRedQUN3hcMQqCTc5cHsaB8bh5EaHrib3RR0YsOhjAd6IC + ms33BZnfNWQuGVTXw74Eu/P1JkwR0ReO+XuxxMp3DW2epMfL44OHWTb6JGY= + + + http://127.0.0.1:8082/ocsp + + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + http://www.example.net/ocsp + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + ee.ria.xroad.common.certificateprofile.impl.TestCertificateProfileInfoProvider + + + pki4 + true + + + MIIDZzCCAk+gAwIBAgIBAzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJFRTEU + MBIGA1UEChMLQ3liZXJuZXRpY2ExDTALBgNVBAsTBENBIDExGjAYBgkqhkiG9w0B + CQEWC2FhYUBiYmIuY2NjMB4XDTEyMDkxNDExNTk0MFoXDTIyMDkxMjExNTk0MFow + TjELMAkGA1UEBhMCRUUxFDASBgNVBAoTC0N5YmVybmV0aWNhMQ0wCwYDVQQLEwRD + QSAyMRowGAYJKoZIhvcNAQkBFgthYWFAYmJiLmNjYzCCASIwDQYJKoZIhvcNAQEB + BQADggEPADCCAQoCggEBAM1Ex4Bh8zHU+wWyp2fm7U2dAqooUamE4hyLVrmNifvB + AjKT7gSMeTB2bxCE38BYfzvnbQCs82piQRC6iCgHE/Ywr1zz86Pa/OI36tBmCCjW + NDm/U6MAlwT7s+GL3bpty4aY4pLilQZbmyDsE2hsJ+R82GMBttRku3LMKKE/jyQI + 26gK9xhYPPF85cfv7hylekcr8fUeGFmxEULLWyFFwhR9pr7HPcKhJR/h4rhJ3e0d + EDfROPtVfBSViS5UCh7UNut8Q3kbwwZBIa1NEN9vPUIBhH/ZvKr3a7188y3n1GY8 + paSVdYmGZYDSyK7ugztEOFWqekiA7gfLdyeCto12K10CAwEAAaNQME4wDAYDVR0T + BAUwAwEB/zAdBgNVHQ4EFgQUJDYGHNJmNdoV9S/T4ZLv/ze+JYIwHwYDVR0jBBgw + FoAUqV/rN9mEwnTBN+y4Di3aLz4BKj8wDQYJKoZIhvcNAQEFBQADggEBAC63dW7v + 5J1Yf7ue2ybTfIYVFAN1LOY4Ge+zLai2wkhRjaOqzV67HB/e1zItBbq0M1NkA4DQ + DM/aEoave5aMoZtR77JUrFG2KLnTqJZb3AZDWi3qsdYNo1yW0YMgGBVq8pThJ4NH + +QV5MdgkMZjDUJArtU0Z6eD7br0BiA4uEx4irr0j8e5oInBbMPb4Orv05yuaXc9n + utPIm7iudKcNsHs+16ACAo0KdU38GnwgGW83B0LB0sCVwFMH1OpC435dXLDycvg+ + Pe5VvXxCL6guFtZtBbnAAtRreTC3bhS+bnxLyj+Hk7oAYyaW441BnzPcVWYeAf56 + 89A9e6HCmXEY1bo= + + ee.ria.xroad.common.certificateprofile.impl.TestCertificateProfileInfoProvider + + + + pki5 with intermediate certs + true + + + MIIDdTCCAl2gAwIBAgIJAOuBNCIUm0gwMA0GCSqGSIb3DQEBBQUAMFExCzAJBgNV + BAYTAkVFMRQwEgYDVQQKEwtDeWJlcm5ldGljYTEQMA4GA1UECxMHUm9vdCBDQTEa + MBgGCSqGSIb3DQEJARYLYWFhQGJiYi5jY2MwHhcNMTIwOTE0MTE1NjM3WhcNMjIw + OTEyMTE1NjM3WjBRMQswCQYDVQQGEwJFRTEUMBIGA1UEChMLQ3liZXJuZXRpY2Ex + EDAOBgNVBAsTB1Jvb3QgQ0ExGjAYBgkqhkiG9w0BCQEWC2FhYUBiYmIuY2NjMIIB + IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArnYuIDCNNqIZ/GH0THglNHoU + T8PCfH5HGeVadaQu5xJFg2hLfbCvJNDGDgOcGXlss8tZ51y80EGwJFAU1IajhELF + yRDhEUsBd7FzulMxMwMFwluoPB1u0XUsNmYunmdlBc6BERkrTQi8oRXO7psslbiU + 4LDqeIdP04RhySNnVRwfb3eBfGR7Gh/EbdFeB814gCpoM6nmK1XR2f3JdCTJxPyE + 7EppIDPBBmgpzq2TzHF3qzd1Qv5Xe0XSC6DnkTbzpxrCvalGqGrIYOsV5vtOFt+2 + Tlx+QHIWhvZ9bDdEGY58O0jWj3lO5VkFYsloauYa8trCm7w20J6QqwtCIskMvwID + AQABo1AwTjAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBRSFYADqiIAKTGIT44uTLwS + hz1YZzAfBgNVHSMEGDAWgBRSFYADqiIAKTGIT44uTLwShz1YZzANBgkqhkiG9w0B + AQUFAAOCAQEAMn7YD7C3cjkQL0wm1v47KYda/Y05jR5zMwV648VHgPeNLRyZYWJr + pHdUQiAqKL3zhF8neOQO100fwUxSxLsuPNqkce02DwjMSMWi3bF9xX7MlrQnAb6a + SJ47YaPyZSvXlkzRC3dcDjcBIRSGNxsftISSEJJeqGWQz6b9LkIfxTjtcHbTnm/y + GPWpmr2blkm7qRKK4eFwvooJ6KqBmm8/J086VpDOc9qRy/ar3za6UdFEBDX2aHQD + 4OLgBvj0dLYCu3w32ltmVOgBoewIq5M1wBGp8dIs5Jrr4P9xYprRY1une3IWvviJ + NXoWm1enl1+N31r32YIc4vXZiA2L+cjlvQ== + + + + MIIDajCCAlKgAwIBAgIBAzANBgkqhkiG9w0BAQUFADBRMQswCQYDVQQGEwJFRTEU + MBIGA1UEChMLQ3liZXJuZXRpY2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGjAYBgkqhkiG + 9w0BCQEWC2FhYUBiYmIuY2NjMB4XDTEyMDkxNDExNTY1OFoXDTIyMDkxMjExNTY1 + OFowTjELMAkGA1UEBhMCRUUxFDASBgNVBAoTC0N5YmVybmV0aWNhMQ0wCwYDVQQL + EwRDQSAxMRowGAYJKoZIhvcNAQkBFgthYWFAYmJiLmNjYzCCASIwDQYJKoZIhvcN + AQEBBQADggEPADCCAQoCggEBAOnguIBD8dfb4vM73WKR+T2zWKAbFeUu7Wcpio/2 + CDLJZ3mF2Zo+JWOk8nYSUrZkFpCvH+S5Mhj0Eo4LcCk2PTiRP2fPPABIQmEXgLKU + gcqH132fVCyPRKdL+hG+CA7yzDOIO0h8ME/nQBuEJHc+ayGSyKG5/PfsETfseD0f + 9QoaAXsrztkhH+yNX+JgaPAyxQqFB8p8PLX3DrkD1JtslSjMJTuitVsf4JKb9zmI + /lGaMGqkq5ss3c1weF8s38+Zt8rU4FHS+DvFTVJVMHjnTu/emgiRiLJWXioKmijy + glMoZvpahgtOieS50Vgn8V+ttL4kLYSBFlAVkNOa0Fbz8eMCAwEAAaNQME4wDAYD + VR0TBAUwAwEB/zAdBgNVHQ4EFgQUqV/rN9mEwnTBN+y4Di3aLz4BKj8wHwYDVR0j + BBgwFoAUUhWAA6oiACkxiE+OLky8Eoc9WGcwDQYJKoZIhvcNAQEFBQADggEBAKBk + ++HBiGxSqDQUVWRjrD/5uBk/RH9oH2C/ZXYUyFCjAvmUWa+dWFyJScyVcZpchnbO + SUPKtFR78N3nJp01mbWyvzws4C+DbwPOdwPJHNKqwybn4uz1oWDoNioi1ITkjlYo + haDs9uVI9sLrApqQnSgL7Oc4yG2TSoa0YkLmdICHxH9TCK0NEUxW6Sa4aehftLD/ + 7gNORIe8YT9MqPGWDW6Za9f74Vx+H5/ejRkTKUA6jHTLmZCly4L2f+tpDIs22omd + 0X3Ct9os/XA7ZbbwiMuqAiiXKVGerTmeCrkWcixDkN9ATCI0ur5NZniSVnXGjV6m + u3cl4oYr+u2NJVPDgKI= + + + + + MIIDZzCCAk+gAwIBAgIBAzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJFRTEU + MBIGA1UEChMLQ3liZXJuZXRpY2ExDTALBgNVBAsTBENBIDExGjAYBgkqhkiG9w0B + CQEWC2FhYUBiYmIuY2NjMB4XDTEyMDkxNDExNTk0MFoXDTIyMDkxMjExNTk0MFow + TjELMAkGA1UEBhMCRUUxFDASBgNVBAoTC0N5YmVybmV0aWNhMQ0wCwYDVQQLEwRD + QSAyMRowGAYJKoZIhvcNAQkBFgthYWFAYmJiLmNjYzCCASIwDQYJKoZIhvcNAQEB + BQADggEPADCCAQoCggEBAM1Ex4Bh8zHU+wWyp2fm7U2dAqooUamE4hyLVrmNifvB + AjKT7gSMeTB2bxCE38BYfzvnbQCs82piQRC6iCgHE/Ywr1zz86Pa/OI36tBmCCjW + NDm/U6MAlwT7s+GL3bpty4aY4pLilQZbmyDsE2hsJ+R82GMBttRku3LMKKE/jyQI + 26gK9xhYPPF85cfv7hylekcr8fUeGFmxEULLWyFFwhR9pr7HPcKhJR/h4rhJ3e0d + EDfROPtVfBSViS5UCh7UNut8Q3kbwwZBIa1NEN9vPUIBhH/ZvKr3a7188y3n1GY8 + paSVdYmGZYDSyK7ugztEOFWqekiA7gfLdyeCto12K10CAwEAAaNQME4wDAYDVR0T + BAUwAwEB/zAdBgNVHQ4EFgQUJDYGHNJmNdoV9S/T4ZLv/ze+JYIwHwYDVR0jBBgw + FoAUqV/rN9mEwnTBN+y4Di3aLz4BKj8wDQYJKoZIhvcNAQEFBQADggEBAC63dW7v + 5J1Yf7ue2ybTfIYVFAN1LOY4Ge+zLai2wkhRjaOqzV67HB/e1zItBbq0M1NkA4DQ + DM/aEoave5aMoZtR77JUrFG2KLnTqJZb3AZDWi3qsdYNo1yW0YMgGBVq8pThJ4NH + +QV5MdgkMZjDUJArtU0Z6eD7br0BiA4uEx4irr0j8e5oInBbMPb4Orv05yuaXc9n + utPIm7iudKcNsHs+16ACAo0KdU38GnwgGW83B0LB0sCVwFMH1OpC435dXLDycvg+ + Pe5VvXxCL6guFtZtBbnAAtRreTC3bhS+bnxLyj+Hk7oAYyaW441BnzPcVWYeAf56 + 89A9e6HCmXEY1bo= + + + + + MIIDZzCCAk+gAwIBAgIBAzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJFRTEU + MBIGA1UEChMLQ3liZXJuZXRpY2ExDTALBgNVBAsTBENBIDIxGjAYBgkqhkiG9w0B + CQEWC2FhYUBiYmIuY2NjMB4XDTEyMDkxNDEyMDEyNVoXDTIyMDkxMjEyMDEyNVow + TjELMAkGA1UEBhMCRUUxFDASBgNVBAoTC0N5YmVybmV0aWNhMQ0wCwYDVQQLEwRD + QSAzMRowGAYJKoZIhvcNAQkBFgthYWFAYmJiLmNjYzCCASIwDQYJKoZIhvcNAQEB + BQADggEPADCCAQoCggEBALxWxIfonRRiiS+mylDJdep1uyNqeq6LkfLZjJHdrgBB + oBi9TB2l4BSHND5jxvyFKpvCDEebx4ye+eWTNdzL+JRP/fstNhM4hb6Ikxjko4nK + DsJHkzKH7pV0B6BfTeWTWyO2Lu2hmfkYHYRzXTH0dxTBe9PibHLNoZYTk6aA3rH/ + q+Wqs+G1adKg9JJ98iCqzcP4dw/6C+EFI1irADu3UB02WXn5LW3r4j3s683EHbg1 + LVEpYtN/12lMXzPN26D9+AfoW1pCma88K0W4tYMERxTU+TJgZP4QnTO8obANlJKJ + NT3NCoFfc5A93hdcz5LZI0toqhf4NVRCYFo8PSwcTyUCAwEAAaNQME4wDAYDVR0T + BAUwAwEB/zAdBgNVHQ4EFgQUuAqclcUU2JuYKrI5EBrP7vlheJswHwYDVR0jBBgw + FoAUJDYGHNJmNdoV9S/T4ZLv/ze+JYIwDQYJKoZIhvcNAQEFBQADggEBAHmyfjiQ + mkjnXxC/Z350Re99WUHqmaSdWoK96yCkeAJrTAe57KV99/ekTGCAeXkicFUothgp + eEZ/TGEdtrcl/dKma7XKYc7OcUzxWlA4YM6XkS8ewYue9+Ve+ia1tLEQua62Z/zk + GUf+jnHFaVK34jNUdN1FpCJjj3CdLJ3TIkWvQ55pAkc6yXUp3rR0zRjpX/Mcz+Ca + 8+pBGcKD9DWQQTI7ZMEqOvClDGEFF2TM6Ye0vN4uM/Ye7xyogFGFt9XCBKUi2XPM + uk/rtVp9PsdYPCM92EN77lA0iMR5+qvVp1Q17OuF+tEHHI3jaGzchYkkMhmBtVpb + 1Z2YSB+hTVhscCU= + + + ee.ria.xroad.common.certificateprofile.impl.TestCertificateProfileInfoProvider + + + + Test TSP + http://www.foo.bar + MIICwjCCAaqgAwIBAgIIb+RPNmkfCdYwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIxMTI5MTE1MzA2WhcNMTQxMTI5MTE1MzA2WjAVMRMwEQYDVQQDDAp0aW1l + c3RhbXAxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCb55NVDtHzs91sflX3 + fatZWUS69rxkxDMpcGo6doJ7YaKrCMr3BZ3ZlDTfCdEosWocTcYXdm3CO8BXlZvh + kvKyHN/hr0UzD0T8j8mBYoq3fGjTVTJOIG2yTsyT/3z3dpcMyGMWwsiqOd9TTtI8 + DcR2cOvQzlLiV9hz/kB9iLJeSQIDAQABo3gwdjAdBgNVHQ4EFgQUbdmtvKHCe0+v + hKP+ZcVUjmf5w/AwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJl + OTE1ItBGGujSCTAOBgNVHQ8BAf8EBAMCBkAwFgYDVR0lAQH/BAwwCgYIKwYBBQUH + AwgwDQYJKoZIhvcNAQEFBQADggEBAFJ3AJ4I4RTeMBWhN8RLPQdJzcd0VRp9FUyY + hnIkR679nXU+ZbIyaQNx3+hPIbhcOMKxlKGm0LcDnjHL4EuJ6Gb027vF7mSwFbcK + PM+L23x2QLvuVcUEjcbP3Kcm93XCSu3RI71JINM+WinjXke/COuFzhMWJcLYj7S5 + dGR53ya0NnSf7dlua5FLBRiOFA5kRWTft6RcEW0jGZzscL6wZn+hH99IihjqgdxV + 1GydL+BgDMfryZzhl+h1WtTwv0Bi5Gs81v8UlNUTnCCfLu9fatHx85/ttFcXEyt9 + SQze3NGcaR1i3kyZvNijzG3C+jrUnJ/lFs5AcIiPG0Emz6oZEYs= + + + + + BUSINESS + 1 + + producer + Experimental producer + + + + + BUSINESS + 1 + + consumer + Experimental consumer + + + + + BUSINESS + 1 + + foo + Org with no address + + foosubsystem + + + barsubsystemId + + + + + producerId + producerServerCode +
127.0.0.1
+ + BnAMEvOVGDx3mIT81J1MpV+khaplYX2lt12EknvsLJE= + consumerId + fooId + foosubsystemId +
+ + + consumerId + consumerServerCode +
https://www.foo.com/bar
+ NS21xw8PH7goeyqkzhT9NdqXi9c= +
+ + + fooId + fooServerCode + 6C4LKxhNQ4fCr9g3CNTP6uuHLPc= + producerId + + + + fooId + FooBarServerCode +
https://foo.bar.baz
+ S6j8iYRoUfcZEtUu/MPtToSYxLI= + fooId +
+ + + Test group + Description + + EE + BUSINESS + member1 + subsys + + + EE + BUSINESS + member2 + + + EE + BUSINESS + member3 + + + EE + BUSINESS + member4 + + + + + central1 + + EE + BUSINESS + foobar + bazservice + + + + + + BUSINESS + Business clients + + 4200 + + +
diff --git a/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/foo_v2/shared-params.xml.metadata b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/foo_v2/shared-params.xml.metadata new file mode 100644 index 0000000000..c10a1be8b6 --- /dev/null +++ b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/foo_v2/shared-params.xml.metadata @@ -0,0 +1 @@ +{"contentIdentifier":"SHARED-PARAMETERS","instanceIdentifier":"foo_v2","expirationDate":"2124-05-20T17:42:55Z"} diff --git a/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/instance-identifier b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/instance-identifier new file mode 100644 index 0000000000..7df404f894 --- /dev/null +++ b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/instance-identifier @@ -0,0 +1 @@ +EE diff --git a/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/qux_v4/private-params.xml b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/qux_v4/private-params.xml new file mode 100644 index 0000000000..1867bf168f --- /dev/null +++ b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/qux_v4/private-params.xml @@ -0,0 +1,24 @@ + + + qux_v4 + + bar + + http://www.bar.com/conf + YmFyCg== + + + + http://mgmt.com:1234 + + + EE + BUSINESS + servicemember2 + + + 123 + diff --git a/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/qux_v4/private-params.xml.metadata b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/qux_v4/private-params.xml.metadata new file mode 100644 index 0000000000..dc31c2ee71 --- /dev/null +++ b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/qux_v4/private-params.xml.metadata @@ -0,0 +1 @@ +{"contentIdentifier":"PRIVATE-PARAMETERS","instanceIdentifier":"qux_v4","expirationDate":"2124-05-20T17:42:55Z", "configurationVersion": "4"} diff --git a/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/qux_v4/shared-params.xml b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/qux_v4/shared-params.xml new file mode 100644 index 0000000000..b4b40afadb --- /dev/null +++ b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/qux_v4/shared-params.xml @@ -0,0 +1,494 @@ + + + + qux_v4 + + +
cs0
+ MIICqTCCAZGgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAOMQwwCgYDVQQDDANOL0EwHhcNNzAwMTAxMDAwMDAwWhcNMzgwMTAxMDAwMDAwWjAOMQwwCgYDVQQDDANOL0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDe10ai/VApuFjG+cgVLaV18qOEor6il83v0ErKBVznkSEzhzfplPJbfbXVHCezUsZOtVypvS4VCKg3S9wDBJVHmLrTl8z43xHowSE2KhvBxP+boH+9wt4dWdkiM4vohzuDuqz2k7ly50LlaokY/hQfLZKqRAB4PyiA9H1dk9hri9kIckGZpKHxVmXD19pd1hbvRmEcxF0kEAP4oyQ8EaQpgoy4KiN60x6hV8+xZPUqf03eQgh5LXvpmXDtGT58zN43Om8L+dPCtKyK6dTTjNakv6tJxoZJ2yUnVWPZKH9B3nM79bToxA9SiCjg3i6rU8HJ8ih163Dh9upPwqpmdEqDAgMBAAGjEjAQMA4GA1UdDwEB/wQEAwIGQDANBgkqhkiG9w0BAQ0FAAOCAQEAdgVRzoNWG7shsBV+r9I4dB/ghfnxZAcgag9qevG4YrzLEDHupGB7a0Rx4dKp7gxzSV+E82oFOTZMhQdcVinRrqZT1U8DeT1tgvRH6V24g8HCplDp3AuRWKlPFAWIpsyZ6n6oMIrS9uVCaTF4A8uFZ7GxgcByMP+9BwCNQAigFGJOZzwln60idlR8YmtVCn4oVfBVrH+JRNSfgosVqqZe3q/XHNJP4iVqPt7taYzwwdz2XW02p8lgYZ1MwhMbcZ7xqNjYA0U9yQbUc6/oZ54R5FIgNldINCAJaNRRjXVS+1nt6bRM9GtZoeC4vhFqxIpduQRYpMD2MaJqbwDgal2pmA== + MIICqTCCAZGgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAOMQwwCgYDVQQDDANOL0EwHhcNNzAwMTAxMDAwMDAwWhcNMzgwMTAxMDAwMDAwWjAOMQwwCgYDVQQDDANOL0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDe10ai/VApuFjG+cgVLaV18qOEor6il83v0ErKBVznkSEzhzfplPJbfbXVHCezUsZOtVypvS4VCKg3S9wDBJVHmLrTl8z43xHowSE2KhvBxP+boH+9wt4dWdkiM4vohzuDuqz2k7ly50LlaokY/hQfLZKqRAB4PyiA9H1dk9hri9kIckGZpKHxVmXD19pd1hbvRmEcxF0kEAP4oyQ8EaQpgoy4KiN60x6hV8+xZPUqf03eQgh5LXvpmXDtGT58zN43Om8L+dPCtKyK6dTTjNakv6tJxoZJ2yUnVWPZKH9B3nM79bToxA9SiCjg3i6rU8HJ8ih163Dh9upPwqpmdEqDAgMBAAGjEjAQMA4GA1UdDwEB/wQEAwIGQDANBgkqhkiG9w0BAQ0FAAOCAQEAdgVRzoNWG7shsBV+r9I4dB/ghfnxZAcgag9qevG4YrzLEDHupGB7a0Rx4dKp7gxzSV+E82oFOTZMhQdcVinRrqZT1U8DeT1tgvRH6V24g8HCplDp3AuRWKlPFAWIpsyZ6n6oMIrS9uVCaTF4A8uFZ7GxgcByMP+9BwCNQAigFGJOZzwln60idlR8YmtVCn4oVfBVrH+JRNSfgosVqqZe3q/XHNJP4iVqPt7taYzwwdz2XW02p8lgYZ1MwhMbcZ7xqNjYA0U9yQbUc6/oZ54R5FIgNldINCAJaNRRjXVS+1nt6bRM9GtZoeC4vhFqxIpduQRYpMD2MaJqbwDgal2pmA== + + + + pki1 + + + MIIDjTCCAnWgAwIBAgIJAKL3zm5uAgNAMA0GCSqGSIb3DQEBBQUAMF0xCzAJBgNV + BAYTAkVFMRQwEgYDVQQKEwtDeWJlcm5ldGljYTEMMAoGA1UECxMDSVRPMQ4wDAYD + VQQDEwVDeWJlcjEaMBgGCSqGSIb3DQEJARYLYWFhQGJiYi5jY2MwHhcNMTQwOTI5 + MDk0MTM3WhcNMjQwOTI2MDk0MTM3WjBdMQswCQYDVQQGEwJFRTEUMBIGA1UEChML + Q3liZXJuZXRpY2ExDDAKBgNVBAsTA0lUTzEOMAwGA1UEAxMFQ3liZXIxGjAYBgkq + hkiG9w0BCQEWC2FhYUBiYmIuY2NjMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB + CgKCAQEA0ntJBTdBj7KT+j37yQ3r9pzO/VgVRQptQO6pDGSYonBRDbziYyBAuo8O + wta2GshTqiqbD9OMqi8EK2fxrnCfo5HhG4BwY4DPGCozwI/9ETCNp/ElxrICbb68 + zCQy6ecOrPbirG3baKUKPxBwnN/S1w57rR66Eb02hlA0/AAqN7GJnNqonpeDnIQ5 + vq4bdrrjGEwke44hfR+wI81fVP2oc28AWk3p1TVA0TPLjKfQOlXMfVYIA+Pf+9N4 + uiOXAcv4ZfUAJbiZQujBdHR7wF4SiV0u3Xfwfk6uj1Ddpv5ehh8HKhiNoDySCXgR + I8I5X1gbQ3MIFR7CSwcZuZkolsQnHQIDAQABo1AwTjAMBgNVHRMEBTADAQH/MB0G + A1UdDgQWBBR+egbuTBG1XAUq40xvTvPKht3y3jAfBgNVHSMEGDAWgBR+egbuTBG1 + XAUq40xvTvPKht3y3jANBgkqhkiG9w0BAQUFAAOCAQEAu6QBabq8zQXnxGRCeKpB + vp4iMY4VOWm2QYiwDljaQpMvQWjoBhMEZsaaux/ouSiQvAzbO/NdHHJsXAfwxM2E + o8kFtZNIlTvBs3Os7CvLle1z7pwU/m9LOeakys9xDQRzlPqQwN0Q2oELu0tOHtkd + 2RBLXjy5ZXHHw+KnDwfQlLUzvNRLLmZIfZxMf57z53eP59T0UYBj2bHYV2hxfzYH + mJG6nz8FW/mImr53meFTrM6muw6fKbeKTNvr4n+7AK6Hn6Whie730DB4A9xyWvjd + QWYo7FtYJ/WvbC45E8ppGZH0OWBI028yDvfVgeB8eIpzeMyI1fSHGb66hKc3ruWd + SA== + + http://127.0.0.1:8082/ocsp + + MIIDejCCAmKgAwIBAgIBBDANBgkqhkiG9w0BAQUFADBdMQswCQYDVQQGEwJFRTEU + MBIGA1UEChMLQ3liZXJuZXRpY2ExDDAKBgNVBAsTA0lUTzEOMAwGA1UEAxMFQ3li + ZXIxGjAYBgkqhkiG9w0BCQEWC2FhYUBiYmIuY2NjMB4XDTE0MDkyOTA5NTYxMloX + DTI0MDkyNjA5NTYxMlowYDELMAkGA1UEBhMCRUUxFDASBgNVBAoTC0N5YmVybmV0 + aWNhMQwwCgYDVQQLEwNJVE8xETAPBgNVBAMTCGNvbnN1bWVyMRowGAYJKoZIhvcN + AQkBFgthYWFAYmJiLmNjYzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB + AM0nxh0cNjmjmqYIyBpOCnQb4/eIgPcJF7gTMmhlg5HAkczGraGyrywUumZTUU0j + 3CzsXpXjsCWKtgkwzfmDQggfA95x50fu8HxIlHyd75FnA0EnXS9c9aw5v8SOEKYB + 5UADIhqoGUkqZd21O3o8RJyO8pI4hfe0EiVbQumH3VtNwkgoiK0XlZVRvJeYBYe8 + OODIU+xj8db+BV7QHcRVHBzuynJoy15kByNMzx+kjAPZH+AbB7r6c11i/qd0weno + 55QMlilG/Ez/TZiW7oDBgj7lH8c7AQy8bwhEJSLXAD0H3uytOVaWB9O5PkDDdUD+ + O0yRvSf+hCtaQ828sfQxYz8CAwEAAaNCMEAwHQYDVR0OBBYEFGe3oWflVEr3ammj + rELcGPOdqmwSMB8GA1UdIwQYMBaAFH56Bu5MEbVcBSrjTG9O88qG3fLeMA0GCSqG + SIb3DQEBBQUAA4IBAQC968pzwVBu+nJgpLnQDF4oEyoJHg+fteCBo/IU0DHvWgYv + vliTOelxwIOhjerGBFGxWQVYJiB1VRBTa/e8q4NTFjeN0LGkyO8KdYIA4yhZTwIe + 0ctA62R46II4S7cvoCl993b9wxujMjz9v4Zz7oOx+sFOV8fOI828YQjQCRSOCbcJ + okpGIjJQrdDq3nBVf5f7bCUH6SRWnng3y9ntzgjx8SiQgX+CYTcdWew/9c0Ko6je + neKQsBCiYuP03CJX5gg5yC37MxlcC2NpwdM60Q+7sp+Riz+eGw4tpVnAEmD8ZwHl + vuN63j9maswGt/KrgylIF99T/5WpbFVRWQHibbEH + + + + http://www.example.net/ocsp + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + ee.ria.xroad.common.certificateprofile.impl.TestCertificateProfileInfoProvider + + http://ca:8887/acme/directory + 5 + 6 + + + + pki2 + true + + + MIIDiDCCAnCgAwIBAgIIEVk07cr7+SMwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIxMTE5MDkxODU2WhcNMTQxMTE5MDkxODU2WjATMREwDwYDVQQDDAhjb25z + dW1lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM64hfHPpteJYaUm + DJaEVQ+3yst6hNocO1Ax8Bu1Zk1MKkyOiayfwsnCDN5XpDSlFRx/+aP6x8PFte2D + YFPq+3aP1ymN/iBCJlp2vDukkD8TAMaewKJpdWZD8WFAUnncRPy1q8BcLehexieE + rTGlPLrgbW115FXur7YN8CHZPb0TyfELsXPPWK3i/YREhl4Xk7keI7z3qQnUQbJL + wIrkSLq07pt2ciVmmZxFJq3TpB9grw/mnCURLJ1yY14FWLZ+hPrYGnzlkTcfKB6c + JfBKWUxkB5+JRL3yFo4dySfdiZ8wsJh0cbqEHDW2UghQQ/hkbJnn4UmZrrHn95we + t5pZQAcCAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGGPGh0 + dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dlYi9z + dGF0dXMvb2NzcDAdBgNVHQ4EFgQUfbgfWLDuAcEKrjXT3/CdH4D/CEEwDAYDVR0T + AQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNVHQ8B + Af8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBADe8dzcmKMa6RHzrgRTmApBMBlHR + Vg2kRRJF4NdSUbxUotLxBCA5ZlXdqm5cb3m9XtcU45+mC9S1eLPO69ZuVe6K3zY8 + MSoKSfKzVkWEEtqEn/wHiqkb90qtAITjt4FkWo3mSufMzSpBkUrxasaqIYBloLKm + tYmuCfu1gS2euG0KDPfH+i0IBgCZLBeZzdU+H2qTXH734Y3CF3eYGJ3XP6RQzZaZ + vE8J5km9BgGS1wqIsuBwdy3Zt8yuq1kR02CQ/0BnfnUsqVIvZR61Nl0j6VK8RtUS + yoYV9OkEmN6OTK4J8F47fh8AZUeagLJ29t0KdlS9VR849VWHQqAzakOU1uk= + + + http://127.0.0.1:8082/ocsp + + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + http://www.example.net/ocsp + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + ee.ria.xroad.common.certificateprofile.impl.TestCertificateProfileInfoProvider + + + pki3 + false + + + MIIDiDCCAnCgAwIBAgIIVYNTWA8JcLwwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIxMTE5MDkxNDIzWhcNMTQxMTE5MDkxNDIzWjATMREwDwYDVQQDDAhwcm9k + dWNlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALKNC381RiACCftv + ApBzk5HD5YHw0u9SOkwcIkn4cZ4eQWrlROnqHTpS9IVSBoOz6pjCx/FwxZTdpw0j + X+bRYpxnj11I2XKzHfhfa6BvL5VkaDtjGpOdSGMJUtrI6m9jFiYryEmYHWxPlL9V + pDK0KknevYm2BR23/xDHweBSZ7tkMENU1kXFWLunoBys+W0waR+Z8HH5WNuBLz8X + z2iz/6KQ5BoWSPJc9P5TXNOBB+5XyjBR2ogoAOtX53OJzu0wMgLpjuJGdfcpy1S9 + ukU27B21i2MfZ6Tjhu9oKrAIgcMWJaHJ/gRX6iX1vXlfhUTkE1ACSfvhZdntKLzN + TZGEcxsCAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGGPGh0 + dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dlYi9z + dGF0dXMvb2NzcDAdBgNVHQ4EFgQUUHtGmEl0Cuh/x/wj+UU5S7Wui48wDAYDVR0T + AQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNVHQ8B + Af8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACJqqey5Ywoegq+Rjo4v89AN78Ou + tKtRzQZtuCZP9+ZhY6ivCPK4F8Ne6qpWZb63OLORyQosDAvj6m0iCFMsUZS3nC0U + DR0VyP2WrOihBOFC4CA7H2X4l7pkSyMN73ZC6icXkbj9H0ix5/Bv3Ug64DK9SixG + RxMwLxouIzk7WvePQ6ywlhGvZRTXxhr0DwvfZnPXxHDPB2q+9pKzC9h2txG1tyD9 + ffohEC/LKdGrHSe6hnTRedQUN3hcMQqCTc5cHsaB8bh5EaHrib3RR0YsOhjAd6IC + ms33BZnfNWQuGVTXw74Eu/P1JkwR0ReO+XuxxMp3DW2epMfL44OHWTb6JGY= + + + http://127.0.0.1:8082/ocsp + + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + http://www.example.net/ocsp + MIIDizCCAnOgAwIBAgIIOmOWEyqjUj0wDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIwOTA2MTEzODMwWhcNMTQwOTA2MTEzODMwWjAWMRQwEgYDVQQDDAtPY3Nw + IFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANZTdnxNq1QM + ncmiInNUSpm02V72GNrMrvq2Q4Zz3Zr8zDKMdAiwdrjx9X+Zi5oTjiSUXRuHY5ZN + 9oeLO1cv9NV6OGk3MlrAzxquBfQUgnZMNLkPZW5SuLqlZpWf0vF7EvAVX20hxgMq + 7M26Fxt/B9W81/G/REnuHKJ+nxCAZi5Kd1hdGVTEIwkicqROiEfQUcycs0T5aZI7 + F5qFiZyo3AeRbWYyhEfe326cPaRaswo2WwcBjFYWibTCnNQuLgDL6qroL1T8soI6 + LzBaNao6Lm4YY1OwTPz/UEiJ3KIXoAjfxMlOUnznmeWYNPcJb5Z8fdtWpaZqjV3W + IMAZocNThb8CAwEAAaOBuzCBuDBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAGG + PGh0dHA6Ly9pa3MyLXVidW50dS5jeWJlci5lZTo4MDgwL2VqYmNhL3B1YmxpY3dl + Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUI1mSgzcFjcBFmmjYwlc9Qm7yF/kwDAYD + VR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJlOTE1ItBGGujSCTAOBgNV + HQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQEFBQADggEBACRO2KTCVKQxYMlsMDkjT5Qj + zqW0wHNCsxieYv0qfDM1Z5ceW0c0KjJcKXESj7GXT7oNejwI4gZNgxIzemJ3xABH + dftk2WxLQBYJMKQ30EuisFKueqpxaLVkPAbt+XLxSrxaYePB9LTJ+rw3FtbiIbag + 3AH22TFUUUnaTGVF+OiHtthE1u7bnwsTqWXX4PI9I3KnSaIEE55mveNq2jHVWu4r + Myy2flOZMonYh3dw1gmSp2yWo1YDpN3olM0Li6Lnfvg1TZd71xZ6ZkKf+MoAs+pW + 2HaLh8hiYRXpgw3WVSBg6CPTLoU5xFb57BNL3qccVetmbpZgznHMYEBN4b4pyHk= + + + ee.ria.xroad.common.certificateprofile.impl.TestCertificateProfileInfoProvider + + + pki4 + true + + + MIIDZzCCAk+gAwIBAgIBAzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJFRTEU + MBIGA1UEChMLQ3liZXJuZXRpY2ExDTALBgNVBAsTBENBIDExGjAYBgkqhkiG9w0B + CQEWC2FhYUBiYmIuY2NjMB4XDTEyMDkxNDExNTk0MFoXDTIyMDkxMjExNTk0MFow + TjELMAkGA1UEBhMCRUUxFDASBgNVBAoTC0N5YmVybmV0aWNhMQ0wCwYDVQQLEwRD + QSAyMRowGAYJKoZIhvcNAQkBFgthYWFAYmJiLmNjYzCCASIwDQYJKoZIhvcNAQEB + BQADggEPADCCAQoCggEBAM1Ex4Bh8zHU+wWyp2fm7U2dAqooUamE4hyLVrmNifvB + AjKT7gSMeTB2bxCE38BYfzvnbQCs82piQRC6iCgHE/Ywr1zz86Pa/OI36tBmCCjW + NDm/U6MAlwT7s+GL3bpty4aY4pLilQZbmyDsE2hsJ+R82GMBttRku3LMKKE/jyQI + 26gK9xhYPPF85cfv7hylekcr8fUeGFmxEULLWyFFwhR9pr7HPcKhJR/h4rhJ3e0d + EDfROPtVfBSViS5UCh7UNut8Q3kbwwZBIa1NEN9vPUIBhH/ZvKr3a7188y3n1GY8 + paSVdYmGZYDSyK7ugztEOFWqekiA7gfLdyeCto12K10CAwEAAaNQME4wDAYDVR0T + BAUwAwEB/zAdBgNVHQ4EFgQUJDYGHNJmNdoV9S/T4ZLv/ze+JYIwHwYDVR0jBBgw + FoAUqV/rN9mEwnTBN+y4Di3aLz4BKj8wDQYJKoZIhvcNAQEFBQADggEBAC63dW7v + 5J1Yf7ue2ybTfIYVFAN1LOY4Ge+zLai2wkhRjaOqzV67HB/e1zItBbq0M1NkA4DQ + DM/aEoave5aMoZtR77JUrFG2KLnTqJZb3AZDWi3qsdYNo1yW0YMgGBVq8pThJ4NH + +QV5MdgkMZjDUJArtU0Z6eD7br0BiA4uEx4irr0j8e5oInBbMPb4Orv05yuaXc9n + utPIm7iudKcNsHs+16ACAo0KdU38GnwgGW83B0LB0sCVwFMH1OpC435dXLDycvg+ + Pe5VvXxCL6guFtZtBbnAAtRreTC3bhS+bnxLyj+Hk7oAYyaW441BnzPcVWYeAf56 + 89A9e6HCmXEY1bo= + + ee.ria.xroad.common.certificateprofile.impl.TestCertificateProfileInfoProvider + + + + pki5 with intermediate certs + true + + + MIIDdTCCAl2gAwIBAgIJAOuBNCIUm0gwMA0GCSqGSIb3DQEBBQUAMFExCzAJBgNV + BAYTAkVFMRQwEgYDVQQKEwtDeWJlcm5ldGljYTEQMA4GA1UECxMHUm9vdCBDQTEa + MBgGCSqGSIb3DQEJARYLYWFhQGJiYi5jY2MwHhcNMTIwOTE0MTE1NjM3WhcNMjIw + OTEyMTE1NjM3WjBRMQswCQYDVQQGEwJFRTEUMBIGA1UEChMLQ3liZXJuZXRpY2Ex + EDAOBgNVBAsTB1Jvb3QgQ0ExGjAYBgkqhkiG9w0BCQEWC2FhYUBiYmIuY2NjMIIB + IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArnYuIDCNNqIZ/GH0THglNHoU + T8PCfH5HGeVadaQu5xJFg2hLfbCvJNDGDgOcGXlss8tZ51y80EGwJFAU1IajhELF + yRDhEUsBd7FzulMxMwMFwluoPB1u0XUsNmYunmdlBc6BERkrTQi8oRXO7psslbiU + 4LDqeIdP04RhySNnVRwfb3eBfGR7Gh/EbdFeB814gCpoM6nmK1XR2f3JdCTJxPyE + 7EppIDPBBmgpzq2TzHF3qzd1Qv5Xe0XSC6DnkTbzpxrCvalGqGrIYOsV5vtOFt+2 + Tlx+QHIWhvZ9bDdEGY58O0jWj3lO5VkFYsloauYa8trCm7w20J6QqwtCIskMvwID + AQABo1AwTjAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBRSFYADqiIAKTGIT44uTLwS + hz1YZzAfBgNVHSMEGDAWgBRSFYADqiIAKTGIT44uTLwShz1YZzANBgkqhkiG9w0B + AQUFAAOCAQEAMn7YD7C3cjkQL0wm1v47KYda/Y05jR5zMwV648VHgPeNLRyZYWJr + pHdUQiAqKL3zhF8neOQO100fwUxSxLsuPNqkce02DwjMSMWi3bF9xX7MlrQnAb6a + SJ47YaPyZSvXlkzRC3dcDjcBIRSGNxsftISSEJJeqGWQz6b9LkIfxTjtcHbTnm/y + GPWpmr2blkm7qRKK4eFwvooJ6KqBmm8/J086VpDOc9qRy/ar3za6UdFEBDX2aHQD + 4OLgBvj0dLYCu3w32ltmVOgBoewIq5M1wBGp8dIs5Jrr4P9xYprRY1une3IWvviJ + NXoWm1enl1+N31r32YIc4vXZiA2L+cjlvQ== + + + + MIIDajCCAlKgAwIBAgIBAzANBgkqhkiG9w0BAQUFADBRMQswCQYDVQQGEwJFRTEU + MBIGA1UEChMLQ3liZXJuZXRpY2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGjAYBgkqhkiG + 9w0BCQEWC2FhYUBiYmIuY2NjMB4XDTEyMDkxNDExNTY1OFoXDTIyMDkxMjExNTY1 + OFowTjELMAkGA1UEBhMCRUUxFDASBgNVBAoTC0N5YmVybmV0aWNhMQ0wCwYDVQQL + EwRDQSAxMRowGAYJKoZIhvcNAQkBFgthYWFAYmJiLmNjYzCCASIwDQYJKoZIhvcN + AQEBBQADggEPADCCAQoCggEBAOnguIBD8dfb4vM73WKR+T2zWKAbFeUu7Wcpio/2 + CDLJZ3mF2Zo+JWOk8nYSUrZkFpCvH+S5Mhj0Eo4LcCk2PTiRP2fPPABIQmEXgLKU + gcqH132fVCyPRKdL+hG+CA7yzDOIO0h8ME/nQBuEJHc+ayGSyKG5/PfsETfseD0f + 9QoaAXsrztkhH+yNX+JgaPAyxQqFB8p8PLX3DrkD1JtslSjMJTuitVsf4JKb9zmI + /lGaMGqkq5ss3c1weF8s38+Zt8rU4FHS+DvFTVJVMHjnTu/emgiRiLJWXioKmijy + glMoZvpahgtOieS50Vgn8V+ttL4kLYSBFlAVkNOa0Fbz8eMCAwEAAaNQME4wDAYD + VR0TBAUwAwEB/zAdBgNVHQ4EFgQUqV/rN9mEwnTBN+y4Di3aLz4BKj8wHwYDVR0j + BBgwFoAUUhWAA6oiACkxiE+OLky8Eoc9WGcwDQYJKoZIhvcNAQEFBQADggEBAKBk + ++HBiGxSqDQUVWRjrD/5uBk/RH9oH2C/ZXYUyFCjAvmUWa+dWFyJScyVcZpchnbO + SUPKtFR78N3nJp01mbWyvzws4C+DbwPOdwPJHNKqwybn4uz1oWDoNioi1ITkjlYo + haDs9uVI9sLrApqQnSgL7Oc4yG2TSoa0YkLmdICHxH9TCK0NEUxW6Sa4aehftLD/ + 7gNORIe8YT9MqPGWDW6Za9f74Vx+H5/ejRkTKUA6jHTLmZCly4L2f+tpDIs22omd + 0X3Ct9os/XA7ZbbwiMuqAiiXKVGerTmeCrkWcixDkN9ATCI0ur5NZniSVnXGjV6m + u3cl4oYr+u2NJVPDgKI= + + + + + MIIDZzCCAk+gAwIBAgIBAzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJFRTEU + MBIGA1UEChMLQ3liZXJuZXRpY2ExDTALBgNVBAsTBENBIDExGjAYBgkqhkiG9w0B + CQEWC2FhYUBiYmIuY2NjMB4XDTEyMDkxNDExNTk0MFoXDTIyMDkxMjExNTk0MFow + TjELMAkGA1UEBhMCRUUxFDASBgNVBAoTC0N5YmVybmV0aWNhMQ0wCwYDVQQLEwRD + QSAyMRowGAYJKoZIhvcNAQkBFgthYWFAYmJiLmNjYzCCASIwDQYJKoZIhvcNAQEB + BQADggEPADCCAQoCggEBAM1Ex4Bh8zHU+wWyp2fm7U2dAqooUamE4hyLVrmNifvB + AjKT7gSMeTB2bxCE38BYfzvnbQCs82piQRC6iCgHE/Ywr1zz86Pa/OI36tBmCCjW + NDm/U6MAlwT7s+GL3bpty4aY4pLilQZbmyDsE2hsJ+R82GMBttRku3LMKKE/jyQI + 26gK9xhYPPF85cfv7hylekcr8fUeGFmxEULLWyFFwhR9pr7HPcKhJR/h4rhJ3e0d + EDfROPtVfBSViS5UCh7UNut8Q3kbwwZBIa1NEN9vPUIBhH/ZvKr3a7188y3n1GY8 + paSVdYmGZYDSyK7ugztEOFWqekiA7gfLdyeCto12K10CAwEAAaNQME4wDAYDVR0T + BAUwAwEB/zAdBgNVHQ4EFgQUJDYGHNJmNdoV9S/T4ZLv/ze+JYIwHwYDVR0jBBgw + FoAUqV/rN9mEwnTBN+y4Di3aLz4BKj8wDQYJKoZIhvcNAQEFBQADggEBAC63dW7v + 5J1Yf7ue2ybTfIYVFAN1LOY4Ge+zLai2wkhRjaOqzV67HB/e1zItBbq0M1NkA4DQ + DM/aEoave5aMoZtR77JUrFG2KLnTqJZb3AZDWi3qsdYNo1yW0YMgGBVq8pThJ4NH + +QV5MdgkMZjDUJArtU0Z6eD7br0BiA4uEx4irr0j8e5oInBbMPb4Orv05yuaXc9n + utPIm7iudKcNsHs+16ACAo0KdU38GnwgGW83B0LB0sCVwFMH1OpC435dXLDycvg+ + Pe5VvXxCL6guFtZtBbnAAtRreTC3bhS+bnxLyj+Hk7oAYyaW441BnzPcVWYeAf56 + 89A9e6HCmXEY1bo= + + + + + MIIDZzCCAk+gAwIBAgIBAzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJFRTEU + MBIGA1UEChMLQ3liZXJuZXRpY2ExDTALBgNVBAsTBENBIDIxGjAYBgkqhkiG9w0B + CQEWC2FhYUBiYmIuY2NjMB4XDTEyMDkxNDEyMDEyNVoXDTIyMDkxMjEyMDEyNVow + TjELMAkGA1UEBhMCRUUxFDASBgNVBAoTC0N5YmVybmV0aWNhMQ0wCwYDVQQLEwRD + QSAzMRowGAYJKoZIhvcNAQkBFgthYWFAYmJiLmNjYzCCASIwDQYJKoZIhvcNAQEB + BQADggEPADCCAQoCggEBALxWxIfonRRiiS+mylDJdep1uyNqeq6LkfLZjJHdrgBB + oBi9TB2l4BSHND5jxvyFKpvCDEebx4ye+eWTNdzL+JRP/fstNhM4hb6Ikxjko4nK + DsJHkzKH7pV0B6BfTeWTWyO2Lu2hmfkYHYRzXTH0dxTBe9PibHLNoZYTk6aA3rH/ + q+Wqs+G1adKg9JJ98iCqzcP4dw/6C+EFI1irADu3UB02WXn5LW3r4j3s683EHbg1 + LVEpYtN/12lMXzPN26D9+AfoW1pCma88K0W4tYMERxTU+TJgZP4QnTO8obANlJKJ + NT3NCoFfc5A93hdcz5LZI0toqhf4NVRCYFo8PSwcTyUCAwEAAaNQME4wDAYDVR0T + BAUwAwEB/zAdBgNVHQ4EFgQUuAqclcUU2JuYKrI5EBrP7vlheJswHwYDVR0jBBgw + FoAUJDYGHNJmNdoV9S/T4ZLv/ze+JYIwDQYJKoZIhvcNAQEFBQADggEBAHmyfjiQ + mkjnXxC/Z350Re99WUHqmaSdWoK96yCkeAJrTAe57KV99/ekTGCAeXkicFUothgp + eEZ/TGEdtrcl/dKma7XKYc7OcUzxWlA4YM6XkS8ewYue9+Ve+ia1tLEQua62Z/zk + GUf+jnHFaVK34jNUdN1FpCJjj3CdLJ3TIkWvQ55pAkc6yXUp3rR0zRjpX/Mcz+Ca + 8+pBGcKD9DWQQTI7ZMEqOvClDGEFF2TM6Ye0vN4uM/Ye7xyogFGFt9XCBKUi2XPM + uk/rtVp9PsdYPCM92EN77lA0iMR5+qvVp1Q17OuF+tEHHI3jaGzchYkkMhmBtVpb + 1Z2YSB+hTVhscCU= + + + ee.ria.xroad.common.certificateprofile.impl.TestCertificateProfileInfoProvider + + + + Test TSP + http://www.foo.bar + MIICwjCCAaqgAwIBAgIIb+RPNmkfCdYwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE + AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw + HhcNMTIxMTI5MTE1MzA2WhcNMTQxMTI5MTE1MzA2WjAVMRMwEQYDVQQDDAp0aW1l + c3RhbXAxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCb55NVDtHzs91sflX3 + fatZWUS69rxkxDMpcGo6doJ7YaKrCMr3BZ3ZlDTfCdEosWocTcYXdm3CO8BXlZvh + kvKyHN/hr0UzD0T8j8mBYoq3fGjTVTJOIG2yTsyT/3z3dpcMyGMWwsiqOd9TTtI8 + DcR2cOvQzlLiV9hz/kB9iLJeSQIDAQABo3gwdjAdBgNVHQ4EFgQUbdmtvKHCe0+v + hKP+ZcVUjmf5w/AwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBR3LYkuA7b9+NJl + OTE1ItBGGujSCTAOBgNVHQ8BAf8EBAMCBkAwFgYDVR0lAQH/BAwwCgYIKwYBBQUH + AwgwDQYJKoZIhvcNAQEFBQADggEBAFJ3AJ4I4RTeMBWhN8RLPQdJzcd0VRp9FUyY + hnIkR679nXU+ZbIyaQNx3+hPIbhcOMKxlKGm0LcDnjHL4EuJ6Gb027vF7mSwFbcK + PM+L23x2QLvuVcUEjcbP3Kcm93XCSu3RI71JINM+WinjXke/COuFzhMWJcLYj7S5 + dGR53ya0NnSf7dlua5FLBRiOFA5kRWTft6RcEW0jGZzscL6wZn+hH99IihjqgdxV + 1GydL+BgDMfryZzhl+h1WtTwv0Bi5Gs81v8UlNUTnCCfLu9fatHx85/ttFcXEyt9 + SQze3NGcaR1i3kyZvNijzG3C+jrUnJ/lFs5AcIiPG0Emz6oZEYs= + + + + + BUSINESS + 1 + + producer + Experimental producer + + + + + BUSINESS + 1 + + consumer + Experimental consumer + + + + + BUSINESS + 1 + + foo + Org with no address + + foosubsystem + + + + + producerId + producerServerCode +
127.0.0.1
+ + xcuWTrx4uFeP5mNBXIhYITy+gUM72CJfL63MsWXffXM= + consumerId + fooId + foosubsystemId +
+ + + consumerId + consumerServerCode +
https://www.foo.com/bar
+ + XhdxNaWNz7XBuakTRDyz+5Ald53DCy3DwxUacFe/VX8= +
+ + + fooId + fooServerCode + enRxKzBGb0q7sUJa8Hx0A5aHmQwCa1HzWNFrN3ZDDJw= + producerId + + + + fooId + FooBarServerCode +
https://foo.bar.baz
+ Q/wASEqban646kxZ0/uveKBv4h7U3FWnlKzsSJZU1f8= + fooId +
+ + + Test group + Description + + EE + BUSINESS + member1 + subsys + + + EE + BUSINESS + member2 + + + EE + BUSINESS + member3 + + + EE + BUSINESS + member4 + + + + + central1 + + EE + BUSINESS + foobar + bazservice + + + + + + BUSINESS + Business clients + + 42 + + +
diff --git a/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/qux_v4/shared-params.xml.metadata b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/qux_v4/shared-params.xml.metadata new file mode 100644 index 0000000000..6c9c4f091b --- /dev/null +++ b/src/lib/globalconf-core/src/test/resources/globalconf_good_v5/qux_v4/shared-params.xml.metadata @@ -0,0 +1 @@ +{"contentIdentifier":"SHARED-PARAMETERS","instanceIdentifier":"qux_v4","expirationDate":"2124-05-20T17:42:55Z", "configurationVersion": "4"}