diff --git a/.github/workflows/push_trigger.yml b/.github/workflows/push_trigger.yml index 428569faed..9942d062bf 100644 --- a/.github/workflows/push_trigger.yml +++ b/.github/workflows/push_trigger.yml @@ -6,6 +6,8 @@ on: - master - 1.* - develop + - '!release-branch' + - release-1* jobs: build: @@ -75,6 +77,7 @@ jobs: if: failure() # Pick up events even if the job fails or is canceled. publish_to_nexus: + if: "!contains(github.ref, 'master')" runs-on: ubuntu-latest steps: @@ -185,7 +188,11 @@ jobs: # Change all uppercase to lowercase IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') echo "push version ${{steps.getPomVersion.outputs.info}}" - VERSION=$BRANCH_NAME + if [[ $BRANCH_NAME == master ]]; then + VERSION=latest + else + VERSION=$BRANCH_NAME + fi echo IMAGE_ID=$IMAGE_ID echo VERSION=$VERSION docker tag $SERVICE_NAME $IMAGE_ID:$VERSION diff --git a/.github/workflows/release_changes.yml b/.github/workflows/release_changes.yml new file mode 100644 index 0000000000..cc9c2956d9 --- /dev/null +++ b/.github/workflows/release_changes.yml @@ -0,0 +1,56 @@ +name: Release/pre-release Preparation. + +on: + workflow_dispatch: + inputs: + message: + description: 'Triggered for release or pe-release' + required: false + default: 'Release Preparation' + releaseTags: + description: 'tag to update' + required: true + snapshotTags: + description: 'tag to be replaced' + required: true + base: + description: 'base branch for PR' + required: true +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Setup branch and env + run: | + # Strip git ref prefix from version + echo "BRANCH_NAME=$(echo ${{ github.ref }} | sed -e 's,.*/\(.*\),\1,')" >> $GITHUB_ENV + echo "GPG_TTY=$(tty)" >> $GITHUB_ENV + + - name: Mannualy changing the pom versions + run: find . -type f -name "*pom.xml" -print0 | xargs -0 sed -i "s/${{ github.event.inputs.snapshotTags }}/${{ github.event.inputs.releaseTags }}/g" + + - name: Updating the Release URL in POM + run: | + cd .github/workflows + sed -i 's/OSSRH_SNAPSHOT_URL/RELEASE_URL/g' push_trigger.yml + + - name: Updating libs-snapshot-local to libs-release local for artifactory URL's. + run: find . -type f -name "*Dockerfile" -print0 | xargs -0 sed -i "s/libs-snapshot-local/libs-release-local/g" + + - name: removing -DskipTests + run: find . -type f -name "*push_trigger.yml" -print0 | xargs -0 sed -i "s/"-DskipTests"//g" + +# - name: removing --Dgpg.skip +# run: find . -type f -name "*push_trigger.yml" -print0 | xargs -0 sed -i "s/"-Dgpg.skip"//g" + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v3 + with: + token: ${{ secrets.ACTION_PAT }} + commit-message: Updated Pom versions for release changes + title: Release changes + body: Automated PR for ${{ github.event.inputs.releaseTags }} release. + branch: release-branch + delete-branch: true + base: ${{ github.event.inputs.base }} diff --git a/README.md b/README.md index 5250cf5adc..d61cfd2a90 100644 --- a/README.md +++ b/README.md @@ -1,64 +1,8 @@ -[![Build Status](https://travis-ci.com/mosip/commons.svg?branch=master)](https://travis-ci.com/mosip/commons) +[![Maven Package upon a push](https://github.com/mosip/packet-manager/actions/workflows/push_trigger.yml/badge.svg?branch=release-1.2.0)](https://github.com/mosip/packet-manager/actions/workflows/push_trigger.yml) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?branch=release-1.2.0&project=mosip_packet-manager&id=mosip_packet-manager2&metric=alert_status)](https://sonarcloud.io/dashboard?branch=master&id=mosip_packet-manager) -[![Join the chat at https://gitter.im/mosip-community/Commons-Kernel](https://badges.gitter.im/mosip-community/Commons-Kernel.svg)](https://gitter.im/mosip-community/Commons-Kernel?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -# mosip-platform -This repository contains the source code of the Modular Open Source Identity Platform. To know more about MOSIP, its architecture, external integrations, releases, etc., please check the [Platform Documentation](https://github.com/mosip/mosip-docs/wiki) - -### Introduction -MOSIP consists of the following modules - -1. `Kernel` - The Kernel module provides a bedrock to build and run services by providing several significant necessary technical functions. It contains common functionalities which are used by more than one module. -2. `Pre-Registration` - Pre-Registration module enables individuals to book appointments in a registration centre, by providing basic demographic details. -3. `Registration` - Registration module provides a desktop application for Registration Officers/Supervisors to register an individual in MOSIP, by capturing their demographic and biometric details. -4. `Registration Processor` - Registration Processor validates and processes an individual's data received from the registration module, and eventually generates a UIN (Unique Identification Number) for the individual. -5. `ID Repository` - The ID Repository module acts as a repository of individual's data along with UIN mapped. -6. `ID Authentication` - ID Authentication module enables a Partner to authenticate an individual. - -### Build -The following commands should be run in the parent project to build all the modules - -`mvn clean install` -The above command can be used to build individual modules when run in their respective folders - -### Deploy -The following command should be executed to run any service locally in specific profile and local configurations - -`java -Dspring.profiles.active= -jar .jar` - -The following command should be executed to run any service locally in specific profile and `remote` configurations - -`java -Dspring.profiles.active= -Dspring.cloud.config.uri= -Dspring.cloud.config.label= -jar .jar` - -The following command should be executed to run a docker image - -`docker run -it -p : -e active_profile_env={profile} -e spring_config_label_env= {branch} -e spring_config_url_env={config_server_url} ` - -#### Run as Developer -For running services in a native environment developer has to run some core components -[Instruction to follow for running core components](./StartKernelCoreComponents_instructions.md) -### Configurations -All the configurations used by the codebase in `mosip-platform` is present in [mosip-config](https://github.com/mosip/mosip-config) repository. - -### Functional Test-cases -Functional tests run against the codebase in `mosip-platform` is present in [mosip-functional-tests](https://github.com/mosip/mosip-functional-tests) repository. - -### Documentation -Relevant documents to get started with MOSIP can be found in [mosip-docs](https://github.com/mosip/mosip-docs) repository. -In order to get started, please refer to the [Getting-Started](https://github.com/mosip/mosip-docs/wiki/Getting-Started) guide. - -### Infra -Automated scripts to build and deploy MOSIP modules are present in [mosip-infra](https://github.com/mosip/mosip-infra) repository. - - ---- - -### Contribute -You can contribute to MOSIP! - -We want to engage constructively with the community. If you find a **vulnerability** or issue, please file a bug with the respective repository. We welcome pull requests with fixes too. Please see the [Contributor Guide](https://github.com/mosip/mosip-docs/wiki/Contributor-Guide) on how to file bugs, contribute code, and more. - -### License -This project is licensed under the terms of [Mozilla Public License 2.0](https://github.com/mosip/mosip-platform/blob/master/LICENSE) - -### Communication -Join the [developer mailing list](https://groups.io/g/mosip-dev) - -## Comprehensive review -During comprehensive review, inline documentation of kernel will be changed. Look for Jira issue MOS-31009 +# Packet Manager +## About +* Its used by "Registration Client" and "Resident Service" to create packets. +* Its used by "Registration Processor" to read packet. diff --git a/commons-packet/commons-packet-manager/README.md b/commons-packet/commons-packet-manager/README.md new file mode 100644 index 0000000000..c7e7e00759 --- /dev/null +++ b/commons-packet/commons-packet-manager/README.md @@ -0,0 +1,5 @@ +# Commons Packet Manager + +# About +* This is used as a jar dependency by regclient and resident service to create packet. +* This is also used by [commons-packet-service](../commons-packet-service) to read and write packet into object store. diff --git a/commons-packet/commons-packet-manager/pom.xml b/commons-packet/commons-packet-manager/pom.xml index 1234072f71..8a91cc27e2 100644 --- a/commons-packet/commons-packet-manager/pom.xml +++ b/commons-packet/commons-packet-manager/pom.xml @@ -9,7 +9,7 @@ commons-packet-manager Mosip commons project https://github.com/mosip/commons - 1.2.0-SNAPSHOT + 1.2.0.1-SNAPSHOT UTF-8 @@ -30,23 +30,23 @@ 2.0.0.RELEASE 1.4.197 2.9.8 - 1.2.0-SNAPSHOT + 1.2.0.1-SNAPSHOT 2.9.2 2.0.7 4.13.1 1.3.1 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT + 1.2.0.1-SNAPSHOT + 1.2.0.1-SNAPSHOT + 1.2.0.1-SNAPSHOT + 1.2.0.1-SNAPSHOT + 1.2.0.1-SNAPSHOT + 1.2.0.1-SNAPSHOT + 1.2.0.1-SNAPSHOT + 1.2.0.1-SNAPSHOT 2.0.2.RELEASE - 1.2.0-SNAPSHOT + 1.2.0.1-SNAPSHOT **/constants/**,**/config/**,**/audit/**,**/util/**,**/dto/**,**/entity/**,**/model/**,**/exception/**,**/repository/**,**/security/**,**/*Config.java,**/*BootApplication.java,**/*VertxApplication.java,**/cbeffutil/**,**/*Utils.java,**/*Validator.java,**/*Helper.java,**/verticle/**,**/VidWriter.java/**,**/masterdata/utils/**,**/spi/**,**/core/http/**,"**/LocationServiceImpl.java","**/RegistrationCenterMachineServiceImpl.java","**/RegistrationCenterServiceImpl.java","**/pridgenerator/**","**/idgenerator/prid","**/proxy/**","**/cryptosignature/**" **/dto/**,**/entity/**,**/config/** diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/audit/AuditLogEntry.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/audit/AuditLogEntry.java index 68973740e4..7b60887685 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/audit/AuditLogEntry.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/audit/AuditLogEntry.java @@ -92,7 +92,7 @@ public String addAudit(String description, String eventId, id, "AuditLogRequestBuilder:: AuditLogEntry::exit"); - return responseWrapper.getBody(); + return responseWrapper != null ? responseWrapper.getBody() : null; } } diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/dto/packet/RegistrationPacket.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/dto/packet/RegistrationPacket.java index 914ddd32d2..38cbabbcaa 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/dto/packet/RegistrationPacket.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/dto/packet/RegistrationPacket.java @@ -2,7 +2,10 @@ import com.fasterxml.jackson.databind.ObjectMapper; import io.mosip.commons.packet.dto.Document; +import io.mosip.commons.packet.util.PacketManagerLogger; import io.mosip.kernel.biometrics.entities.BiometricRecord; +import io.mosip.kernel.core.exception.ExceptionUtils; +import io.mosip.kernel.core.logger.spi.Logger; import io.mosip.kernel.core.util.DateUtils; import lombok.Data; import org.json.JSONArray; @@ -18,6 +21,8 @@ @Data public class RegistrationPacket { + + private static final Logger LOGGER = PacketManagerLogger.getLogger(RegistrationPacket.class); private String registrationId; private double idSchemaVersion; @@ -97,7 +102,7 @@ else if (json instanceof JSONArray) { } else finalMap.putIfAbsent(fieldName, value); } catch (Exception e) { - e.printStackTrace(); + LOGGER.error("Exception while setting field " + ExceptionUtils.getStackTrace(e)); } } } diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OnlinePacketCryptoServiceImpl.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OnlinePacketCryptoServiceImpl.java index 046d81cba2..71430b2048 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OnlinePacketCryptoServiceImpl.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/impl/OnlinePacketCryptoServiceImpl.java @@ -21,7 +21,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.ApplicationContext; import org.springframework.http.HttpEntity; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; @@ -66,8 +65,8 @@ public class OnlinePacketCryptoServiceImpl implements IPacketCryptoService { private boolean isPrependThumbprintEnabled; @Autowired - private ApplicationContext applicationContext; - private RestTemplate restTemplate = null; + @Qualifier("selfTokenRestTemplate") + private RestTemplate restTemplate; @Autowired private ObjectMapper mapper; @@ -98,7 +97,7 @@ public byte[] sign(byte[] packet) { .parse(DateUtils.getUTCCurrentDateTimeString(DATETIME_PATTERN), format); request.setRequesttime(localdatetime); HttpEntity> httpEntity = new HttpEntity<>(request); - ResponseEntity response = getRestTemplate().exchange(keymanagerCsSignUrl, HttpMethod.POST, httpEntity, + ResponseEntity response = restTemplate.exchange(keymanagerCsSignUrl, HttpMethod.POST, httpEntity, String.class); LinkedHashMap responseMap = (LinkedHashMap) mapper.readValue(response.getBody(), LinkedHashMap.class).get("response"); if (responseMap != null && responseMap.size() > 0) @@ -144,7 +143,7 @@ public byte[] encrypt(String refId, byte[] packet) { request.setVersion(APPLICATION_VERSION); HttpEntity> httpEntity = new HttpEntity<>(request); - ResponseEntity response = getRestTemplate().exchange(cryptomanagerEncryptUrl, HttpMethod.POST, httpEntity, String.class); + ResponseEntity response = restTemplate.exchange(cryptomanagerEncryptUrl, HttpMethod.POST, httpEntity, String.class); CryptomanagerResponseDto responseObject = mapper.readValue(response.getBody(), CryptomanagerResponseDto.class); if (responseObject != null && responseObject.getErrors() != null && !responseObject.getErrors().isEmpty()) { @@ -214,7 +213,7 @@ public byte[] decrypt(String refId, byte[] packet) { request.setVersion(APPLICATION_VERSION); HttpEntity> httpEntity = new HttpEntity<>(request); - ResponseEntity response = getRestTemplate().exchange(cryptomanagerDecryptUrl, HttpMethod.POST, httpEntity, String.class); + ResponseEntity response = restTemplate.exchange(cryptomanagerDecryptUrl, HttpMethod.POST, httpEntity, String.class); CryptomanagerResponseDto responseObject = mapper.readValue(response.getBody(), CryptomanagerResponseDto.class); @@ -271,7 +270,7 @@ public boolean verify(String refId, byte[] packet, byte[] signature) { .parse(DateUtils.getUTCCurrentDateTimeString(DATETIME_PATTERN), format); request.setRequesttime(localdatetime); HttpEntity> httpEntity = new HttpEntity<>(request); - ResponseEntity response = getRestTemplate().exchange(keymanagerCsverifysignUrl, HttpMethod.POST, httpEntity, + ResponseEntity response = restTemplate.exchange(keymanagerCsverifysignUrl, HttpMethod.POST, httpEntity, String.class); LinkedHashMap responseMap = (LinkedHashMap) mapper.readValue(response.getBody(), LinkedHashMap.class).get("response");//.get("signature"); if (responseMap != null && responseMap.size() > 0) { @@ -298,7 +297,7 @@ public boolean verify(String refId, byte[] packet, byte[] signature) { private String getPublicKey(String refId) throws IOException { String machineId = refId.split("_")[1]; - ResponseEntity response = getRestTemplate().exchange(syncdataGetTpmKeyUrl+machineId, HttpMethod.GET, null, + ResponseEntity response = restTemplate.exchange(syncdataGetTpmKeyUrl+machineId, HttpMethod.GET, null, String.class); LinkedHashMap responseMap = (LinkedHashMap) mapper.readValue(response.getBody(), LinkedHashMap.class).get("response");//.get("signature"); if (responseMap != null && responseMap.size() > 0) @@ -309,12 +308,4 @@ private String getPublicKey(String refId) throws IOException { throw new SignatureException(); } } - - private RestTemplate getRestTemplate() { - if (this.restTemplate == null) { - this.restTemplate = (RestTemplate)this.applicationContext.getBean("selfTokenRestTemplate"); - } - - return this.restTemplate; - } } diff --git a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/PacketValidator.java b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/PacketValidator.java index 4f6ab27351..f94f6f05f6 100644 --- a/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/PacketValidator.java +++ b/commons-packet/commons-packet-manager/src/main/java/io/mosip/commons/packet/util/PacketValidator.java @@ -16,6 +16,7 @@ import java.util.Map; import io.mosip.commons.packet.facade.PacketReader; +import io.mosip.kernel.core.exception.ExceptionUtils; import io.mosip.kernel.core.util.HMACUtils2; import org.apache.commons.io.IOUtils; import org.json.JSONArray; @@ -193,7 +194,7 @@ private byte[] generateHash(List hashSequence, Map/commons-packet-service/g' glowroot/glowroot.properties ; \ java -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=1 -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -XX:+UseStringDeduplication -Dloader.path="${loader_path_env}" -jar -javaagent:glowroot/glowroot.jar -Dspring.cloud.config.label="${spring_config_label_env}" -Dspring.profiles.active="${active_profile_env}" -Dspring.cloud.config.uri="${spring_config_url_env}" commons-packet-service.jar ; \ else \ - wget -q --show-progress "${artifactory_url_env}"/artifactory/libs-snapshot-local/io/mosip/kernel/kernel-ref-idobjectvalidator/kernel-ref-idobjectvalidator.jar -O "${loader_path_env}"/kernel-ref-idobjectvalidator.jar ; \ + wget -q --show-progress "${artifactory_url_env}"/artifactory/libs-release-local/io/mosip/kernel/kernel-ref-idobjectvalidator/kernel-ref-idobjectvalidator.jar -O "${loader_path_env}"/kernel-ref-idobjectvalidator.jar ; \ wget -q --show-progress "${iam_adapter_url_env}" -O "${loader_path_env}"/kernel-auth-adapter.jar; \ wget -q --show-progress "${cache_provider_url_env}" -O "${loader_path_env}"/cache-provider.jar; \ wget -q --show-progress "${cache_config_url_env}" -O "${loader_path_env}"/hazelcast.xml; \ diff --git a/commons-packet/commons-packet-service/README.md b/commons-packet/commons-packet-service/README.md new file mode 100644 index 0000000000..4c99d96689 --- /dev/null +++ b/commons-packet/commons-packet-service/README.md @@ -0,0 +1,13 @@ +# Commons Packet Service + +## About +* This service provides to read and write packets in object store. +* The service provides /validate API which is used by regproc. +* It provides API to add/update/delete tags associated with packet. + +## Default context-path and port +Refer [`bootstrap.properties`](src/main/resources/bootstrap.properties) + +## External dependency +* This service caches packet information to respond faster. Hence cache-provider jar to be passed during runtime. The default implementation uses Hazelcast cache. +* The idobject refence validatior to be passed during runtime. diff --git a/commons-packet/commons-packet-service/pom.xml b/commons-packet/commons-packet-service/pom.xml index f261d8741d..5f65e6b48a 100644 --- a/commons-packet/commons-packet-service/pom.xml +++ b/commons-packet/commons-packet-service/pom.xml @@ -6,7 +6,7 @@ 4.0.0 io.mosip.commons commons-packet-service - 1.2.0-SNAPSHOT + 1.2.0.1-SNAPSHOT commons-packet-service Mosip commons project https://github.com/mosip/commons @@ -30,21 +30,21 @@ 2.0.0.RELEASE 1.4.197 2.9.8 - 1.2.0-SNAPSHOT + 1.2.0.1-SNAPSHOT 2.9.2 2.0.7 - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT + 1.2.0.1-SNAPSHOT + 1.2.0.1-SNAPSHOT + 1.2.0.1-SNAPSHOT + 1.2.0.1-SNAPSHOT + 1.2.0.1-SNAPSHOT + 1.2.0.1-SNAPSHOT 2.0.2.RELEASE - 1.2.0-SNAPSHOT + 1.2.0.1-SNAPSHOT **/constant/**,**/config/**,**/httpfilter/**,**/cache/**,**/dto/**,**/entity/**,**/model/**,**/exception/**,**/repository/**,**/security/**,**/*Config.java,**/*BootApplication.java,**/*VertxApplication.java,**/cbeffutil/**,**/*Utils.java,**/*Validator.java,**/*Helper.java,**/verticle/**,**/VidWriter.java/**,**/masterdata/utils/**,**/spi/**,**/core/http/**,"**/LocationServiceImpl.java","**/RegistrationCenterMachineServiceImpl.java","**/RegistrationCenterServiceImpl.java","**/pridgenerator/**","**/idgenerator/prid","**/proxy/**","**/cryptosignature/**" **/dto/**,**/entity/**,**/config/** - 1.2.0-SNAPSHOT + 1.2.0.1-SNAPSHOT 1.5.10 diff --git a/commons-packet/pom.xml b/commons-packet/pom.xml index 38d3d719a9..53a94a2448 100644 --- a/commons-packet/pom.xml +++ b/commons-packet/pom.xml @@ -7,7 +7,7 @@ io.mosip.commons commons-packet - 1.2.0-SNAPSHOT + 1.2.0.1-SNAPSHOT common-packet Common packet manager for MOSIP https://github.com/mosip/packet-manager @@ -34,18 +34,18 @@ 2.0.0.RELEASE 1.4.197 2.9.8 - 1.2.0-SNAPSHOT + 1.2.0.1-SNAPSHOT 2.9.2 2.0.7 - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT - 1.2.0-SNAPSHOT + 1.2.0.1-SNAPSHOT + 1.2.0.1-SNAPSHOT + 1.2.0.1-SNAPSHOT + 1.2.0.1-SNAPSHOT + 1.2.0.1-SNAPSHOT + 1.2.0.1-SNAPSHOT 2.0.2.RELEASE - 1.2.0-SNAPSHOT + 1.2.0.1-SNAPSHOT **/constant/**,**/config/**,**/httpfilter/**,**/cache/**,**/dto/**,**/entity/**,**/model/**,**/exception/**,**/repository/**,**/security/**,**/*Config.java,**/*BootApplication.java,**/*VertxApplication.java,**/cbeffutil/**,**/*Utils.java,**/*Validator.java,**/*Helper.java,**/verticle/**,**/VidWriter.java/**,**/masterdata/utils/**,**/spi/**,**/core/http/**,"**/LocationServiceImpl.java","**/RegistrationCenterMachineServiceImpl.java","**/RegistrationCenterServiceImpl.java","**/pridgenerator/**","**/idgenerator/prid","**/proxy/**","**/cryptosignature/**" **/dto/**,**/entity/**,**/config/** @@ -55,27 +55,6 @@ commons-packet-service - - - ossrh - CentralRepository - https://oss.sonatype.org/content/repositories/snapshots - default - - true - - - - central - MavenCentral - default - https://repo1.maven.org/maven2 - - false - - - - ossrh diff --git a/design/README.md b/design/README.md deleted file mode 100644 index 743523de60..0000000000 --- a/design/README.md +++ /dev/null @@ -1 +0,0 @@ -This section has detailed design of all MOSIP modules diff --git a/design/data_model/_images/mosip_audit.png b/design/data_model/_images/mosip_audit.png deleted file mode 100644 index d9fdd4e407..0000000000 Binary files a/design/data_model/_images/mosip_audit.png and /dev/null differ diff --git a/design/data_model/_images/mosip_authdevice.png b/design/data_model/_images/mosip_authdevice.png deleted file mode 100644 index fd0c22d369..0000000000 Binary files a/design/data_model/_images/mosip_authdevice.png and /dev/null differ diff --git a/design/data_model/_images/mosip_iam.png b/design/data_model/_images/mosip_iam.png deleted file mode 100644 index 76e384c736..0000000000 Binary files a/design/data_model/_images/mosip_iam.png and /dev/null differ diff --git a/design/data_model/_images/mosip_kernel.png b/design/data_model/_images/mosip_kernel.png deleted file mode 100644 index e214599777..0000000000 Binary files a/design/data_model/_images/mosip_kernel.png and /dev/null differ diff --git a/design/data_model/_images/mosip_keymgr.png b/design/data_model/_images/mosip_keymgr.png deleted file mode 100644 index 509fe036e9..0000000000 Binary files a/design/data_model/_images/mosip_keymgr.png and /dev/null differ diff --git a/design/data_model/_images/mosip_master.png b/design/data_model/_images/mosip_master.png deleted file mode 100644 index bfef2414b2..0000000000 Binary files a/design/data_model/_images/mosip_master.png and /dev/null differ diff --git a/design/data_model/_images/mosip_regdevice.png b/design/data_model/_images/mosip_regdevice.png deleted file mode 100644 index 61a7fbcb25..0000000000 Binary files a/design/data_model/_images/mosip_regdevice.png and /dev/null differ diff --git a/design/data_model/_sources/mosip_audit.dbm b/design/data_model/_sources/mosip_audit.dbm deleted file mode 100644 index 70dde234ab..0000000000 --- a/design/data_model/_sources/mosip_audit.dbm +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/design/data_model/_sources/mosip_authdevice.dbm b/design/data_model/_sources/mosip_authdevice.dbm deleted file mode 100644 index 10e587898f..0000000000 --- a/design/data_model/_sources/mosip_authdevice.dbm +++ /dev/null @@ -1,757 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/design/data_model/_sources/mosip_iam.dbm b/design/data_model/_sources/mosip_iam.dbm deleted file mode 100644 index 6806027bf2..0000000000 --- a/design/data_model/_sources/mosip_iam.dbm +++ /dev/null @@ -1,583 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/design/data_model/_sources/mosip_kernel.dbm b/design/data_model/_sources/mosip_kernel.dbm deleted file mode 100644 index b535cda1f3..0000000000 --- a/design/data_model/_sources/mosip_kernel.dbm +++ /dev/null @@ -1,393 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/design/data_model/_sources/mosip_keymgr.dbm b/design/data_model/_sources/mosip_keymgr.dbm deleted file mode 100644 index 9d08541f38..0000000000 --- a/design/data_model/_sources/mosip_keymgr.dbm +++ /dev/null @@ -1,673 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/design/data_model/_sources/mosip_master.dbm b/design/data_model/_sources/mosip_master.dbm deleted file mode 100644 index c397733eea..0000000000 --- a/design/data_model/_sources/mosip_master.dbm +++ /dev/null @@ -1,5341 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - STATE->CITY->PINCODE.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - ZONELEVEL1->ZONELEVEL2-LEAFZONE.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - STATE->CITY->PINCODE. This hierarchy level name is referenced in location table]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/design/data_model/_sources/mosip_regdevice.dbm b/design/data_model/_sources/mosip_regdevice.dbm deleted file mode 100644 index 25b4c83a3f..0000000000 --- a/design/data_model/_sources/mosip_regdevice.dbm +++ /dev/null @@ -1,757 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/design/data_model/mosip_audit_dd.xlsx b/design/data_model/mosip_audit_dd.xlsx deleted file mode 100644 index 3bc7ff46be..0000000000 Binary files a/design/data_model/mosip_audit_dd.xlsx and /dev/null differ diff --git a/design/data_model/mosip_iam_dd.xlsx b/design/data_model/mosip_iam_dd.xlsx deleted file mode 100644 index 6fdd1f3ae8..0000000000 Binary files a/design/data_model/mosip_iam_dd.xlsx and /dev/null differ diff --git a/design/data_model/mosip_kernel_dd.xlsx b/design/data_model/mosip_kernel_dd.xlsx deleted file mode 100644 index 9b9968b00c..0000000000 Binary files a/design/data_model/mosip_kernel_dd.xlsx and /dev/null differ diff --git a/design/data_model/mosip_master_dd.xlsx b/design/data_model/mosip_master_dd.xlsx deleted file mode 100644 index 805d57bcb5..0000000000 Binary files a/design/data_model/mosip_master_dd.xlsx and /dev/null differ diff --git a/design/idrepository/_images/idrepo-identity-cd.PNG b/design/idrepository/_images/idrepo-identity-cd.PNG deleted file mode 100644 index b5b1380aa1..0000000000 Binary files a/design/idrepository/_images/idrepo-identity-cd.PNG and /dev/null differ diff --git a/design/idrepository/_images/idrepo-identity-createid-fd.PNG b/design/idrepository/_images/idrepo-identity-createid-fd.PNG deleted file mode 100644 index 705fe2c546..0000000000 Binary files a/design/idrepository/_images/idrepo-identity-createid-fd.PNG and /dev/null differ diff --git a/design/idrepository/_images/idrepo-identity-createid-sd.PNG b/design/idrepository/_images/idrepo-identity-createid-sd.PNG deleted file mode 100644 index 774efa63c3..0000000000 Binary files a/design/idrepository/_images/idrepo-identity-createid-sd.PNG and /dev/null differ diff --git a/design/idrepository/_images/idrepo-identity-databasesharding.png b/design/idrepository/_images/idrepo-identity-databasesharding.png deleted file mode 100644 index 4c79e54414..0000000000 Binary files a/design/idrepository/_images/idrepo-identity-databasesharding.png and /dev/null differ diff --git a/design/idrepository/_images/idrepo-identity-datamodel.png b/design/idrepository/_images/idrepo-identity-datamodel.png deleted file mode 100644 index fad04c5f63..0000000000 Binary files a/design/idrepository/_images/idrepo-identity-datamodel.png and /dev/null differ diff --git a/design/idrepository/_images/idrepo-identity-getidbyrid-fd.PNG b/design/idrepository/_images/idrepo-identity-getidbyrid-fd.PNG deleted file mode 100644 index 219d39b610..0000000000 Binary files a/design/idrepository/_images/idrepo-identity-getidbyrid-fd.PNG and /dev/null differ diff --git a/design/idrepository/_images/idrepo-identity-getidbyrid-sd.PNG b/design/idrepository/_images/idrepo-identity-getidbyrid-sd.PNG deleted file mode 100644 index 6429f7ff90..0000000000 Binary files a/design/idrepository/_images/idrepo-identity-getidbyrid-sd.PNG and /dev/null differ diff --git a/design/idrepository/_images/idrepo-identity-getidbyuin-fd.PNG b/design/idrepository/_images/idrepo-identity-getidbyuin-fd.PNG deleted file mode 100644 index 24780b8e43..0000000000 Binary files a/design/idrepository/_images/idrepo-identity-getidbyuin-fd.PNG and /dev/null differ diff --git a/design/idrepository/_images/idrepo-identity-getidbyuin-sd.PNG b/design/idrepository/_images/idrepo-identity-getidbyuin-sd.PNG deleted file mode 100644 index 0d1f8c8052..0000000000 Binary files a/design/idrepository/_images/idrepo-identity-getidbyuin-sd.PNG and /dev/null differ diff --git a/design/idrepository/_images/idrepo-identity-updateid-fd.PNG b/design/idrepository/_images/idrepo-identity-updateid-fd.PNG deleted file mode 100644 index 1e28c58798..0000000000 Binary files a/design/idrepository/_images/idrepo-identity-updateid-fd.PNG and /dev/null differ diff --git a/design/idrepository/_images/idrepo-identity-updateid-sd.PNG b/design/idrepository/_images/idrepo-identity-updateid-sd.PNG deleted file mode 100644 index b2308da7c4..0000000000 Binary files a/design/idrepository/_images/idrepo-identity-updateid-sd.PNG and /dev/null differ diff --git a/design/idrepository/_images/idrepo-saltgenerator-cd.PNG b/design/idrepository/_images/idrepo-saltgenerator-cd.PNG deleted file mode 100644 index cce45992ac..0000000000 Binary files a/design/idrepository/_images/idrepo-saltgenerator-cd.PNG and /dev/null differ diff --git a/design/idrepository/_images/idrepo-saltgenerator-sd.PNG b/design/idrepository/_images/idrepo-saltgenerator-sd.PNG deleted file mode 100644 index 21611eccbb..0000000000 Binary files a/design/idrepository/_images/idrepo-saltgenerator-sd.PNG and /dev/null differ diff --git a/design/idrepository/_images/idrepo-vid-cd.PNG b/design/idrepository/_images/idrepo-vid-cd.PNG deleted file mode 100644 index 28272053f4..0000000000 Binary files a/design/idrepository/_images/idrepo-vid-cd.PNG and /dev/null differ diff --git a/design/idrepository/_images/idrepo-vid-createvid-fd.PNG b/design/idrepository/_images/idrepo-vid-createvid-fd.PNG deleted file mode 100644 index 2544d849af..0000000000 Binary files a/design/idrepository/_images/idrepo-vid-createvid-fd.PNG and /dev/null differ diff --git a/design/idrepository/_images/idrepo-vid-createvid-sd.PNG b/design/idrepository/_images/idrepo-vid-createvid-sd.PNG deleted file mode 100644 index 5c22a3404c..0000000000 Binary files a/design/idrepository/_images/idrepo-vid-createvid-sd.PNG and /dev/null differ diff --git a/design/idrepository/_images/idrepo-vid-regeneratevid-fd.PNG b/design/idrepository/_images/idrepo-vid-regeneratevid-fd.PNG deleted file mode 100644 index a133bb2186..0000000000 Binary files a/design/idrepository/_images/idrepo-vid-regeneratevid-fd.PNG and /dev/null differ diff --git a/design/idrepository/_images/idrepo-vid-regeneratevid-sd.PNG b/design/idrepository/_images/idrepo-vid-regeneratevid-sd.PNG deleted file mode 100644 index 3449ba99d9..0000000000 Binary files a/design/idrepository/_images/idrepo-vid-regeneratevid-sd.PNG and /dev/null differ diff --git a/design/idrepository/_images/idrepo-vid-retrieveuinbyvid-fd.PNG b/design/idrepository/_images/idrepo-vid-retrieveuinbyvid-fd.PNG deleted file mode 100644 index 6b18458d21..0000000000 Binary files a/design/idrepository/_images/idrepo-vid-retrieveuinbyvid-fd.PNG and /dev/null differ diff --git a/design/idrepository/_images/idrepo-vid-retrieveuinbyvid-sd.PNG b/design/idrepository/_images/idrepo-vid-retrieveuinbyvid-sd.PNG deleted file mode 100644 index aa127b9d31..0000000000 Binary files a/design/idrepository/_images/idrepo-vid-retrieveuinbyvid-sd.PNG and /dev/null differ diff --git a/design/idrepository/_images/idrepo-vid-updatevid-fd.PNG b/design/idrepository/_images/idrepo-vid-updatevid-fd.PNG deleted file mode 100644 index 3ccf00076a..0000000000 Binary files a/design/idrepository/_images/idrepo-vid-updatevid-fd.PNG and /dev/null differ diff --git a/design/idrepository/_images/idrepo-vid-updatevid-sd.PNG b/design/idrepository/_images/idrepo-vid-updatevid-sd.PNG deleted file mode 100644 index dc7c84c995..0000000000 Binary files a/design/idrepository/_images/idrepo-vid-updatevid-sd.PNG and /dev/null differ diff --git a/design/idrepository/_sources/idrepo-service.xml b/design/idrepository/_sources/idrepo-service.xml deleted file mode 100644 index 779dc6a59c..0000000000 --- a/design/idrepository/_sources/idrepo-service.xml +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/design/idrepository/_sources/salt-generator.xml b/design/idrepository/_sources/salt-generator.xml deleted file mode 100644 index ff01df6c98..0000000000 --- a/design/idrepository/_sources/salt-generator.xml +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/design/idrepository/_sources/sample_vid_policies.json b/design/idrepository/_sources/sample_vid_policies.json deleted file mode 100644 index d257308a5c..0000000000 --- a/design/idrepository/_sources/sample_vid_policies.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "vidPolicies": [ - { - "vidType": "Perpetual", - "vidPolicy": { - "validForInMinutes": null, - "transactionsAllowed": null, - "instancesAllowed": 1, - "autoRestoreAllowed": true, - "restoreOnAction": "REVOKE" - } - }, - { - "vidType": "Temporary", - "vidPolicy": { - "validForInMinutes": 30, - "transactionsAllowed": 1, - "instancesAllowed": 5, - "autoRestoreAllowed": false, - "restoreOnAction": "REGENERATE" - } - } - ] -} \ No newline at end of file diff --git a/design/idrepository/_sources/vid-service.xml b/design/idrepository/_sources/vid-service.xml deleted file mode 100644 index fae7061d1b..0000000000 --- a/design/idrepository/_sources/vid-service.xml +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/design/idrepository/identity-service.md b/design/idrepository/identity-service.md deleted file mode 100644 index 4f10b06b22..0000000000 --- a/design/idrepository/identity-service.md +++ /dev/null @@ -1,131 +0,0 @@ -# Identity Repository Service - -## 1. Background - - -Identity Repository service can be used internally by modules to create, read and update Identity information and to validate an input UIN. - - - -***1.1.Target Users -*** -- Registration Processor can use Identity Repo services to create and update Identity information associated with a UIN -- ID Authentication can use Identity Repo services to validate an input UIN and read identity details associated with a UIN -- Resident Services can use Update ID API when an Individual requests for updating ID details like address - -***1.2. Key Functional Requirements -*** -- Store identity information for a given UIN -- Update Identity information partially or status of UIN -- Read Identity Information associated with a valid UIN -- Read Identity Information for a given RID -- Check status of UIN for validating a UIN - -#### 1.2.1. Functional Flow Diagram - Create ID - -![Functional Flow Diagram - Create ID](_images/idrepo-identity-createid-fd.PNG) - -#### 1.2.2. Functional Flow Diagram - Retrieve ID By UIN - -![Functional Flow Diagram - Retrieve ID](_images/idrepo-identity-getidbyuin-fd.PNG) - -#### 1.2.3. Functional Flow Diagram - Retrieve ID By RID - -![Functional Flow Diagram - Retrieve ID](_images/idrepo-identity-getidbyrid-fd.PNG) - -#### 1.2.4. Functional Flow Diagram - Update ID - -![Functional Flow Diagram - Update ID](_images/idrepo-identity-updateid-fd.PNG) - - -***1.3. Key Non-Functional Requirements -*** - -- Logging : - - Log all the exceptions along with error code and short error message - - As a security measure, Individual's UIN should not be logged -- Audit : - - Audit all transaction details in database - - Individual's UIN should not be audited -- Exception : - - Any error in storing or retrieval of Identity details should be handled with appropriate error code and message in the response -- Security : - - Individual's UIN should not be visible, and should be encrypted - -### 2. Solution - - -The key solution considerations are -- Create a project which provides REST service to create, update and get Identity of Individual -- REST service can be used by any MOSIP module to access these services through HTTP client - - -**2.1. Class Diagram** -![Class Diagram](_images/idrepo-identity-cd.PNG) - - -**2.2. REST Services** - - -***2.2.1. Create Identity*** - -MOSIP Modules can use ID Repo API spec available here - [Create ID API Spec](https://github.com/mosip/mosip-docs/wiki/ID-Repository-API#post-idrepositoryv1identity) - to create Identity of an Individual - -1. Receive RID, ID JSON, CBEFFs and associated documents of proofs -2. Integrate with kernel-idvalidator-uin, kernel-idvalidator-rid to validate incoming UIN and RID -3. Store RID, ID JSON in database, CBEFF and documents of proofs in DFS -4. Below are the various UIN status, which are configurable and can be modified by the country as needed - -a. _ACTIVATED_ -b. _BLOCKED_ -c. _DEACTIVATED_ -5. Once UIN details are stored in UIN and UIN_detail table, assign _ACTIVATED_ as UIN status - -Below sequence diagram for create Identity service shows sequence of operations to create UIN and store corresponding Identity details. -![Create Identity Sequence Diagram](_images/idrepo-identity-createid-sd.PNG) - - - -***2.2.2. Update Identity*** - -MOSIP Products can use ID Repo API spec available here - [Update ID API Spec](https://github.com/mosip/mosip-docs/wiki/ID-Repository-API#patch-idrepositoryv1identity) - to update Identity of an Individual -1. Receive RID and ID JSON or CBEFF or associated documents of proofs -2. Integrate with Kernel UIN validator to validate UIN -3. Once the request is successfully validated, update Identity details in UIN and UIN_detail tables, CBEFF and documents of proof in DFS, and biometric and document references in uin_biometric and uin_document tables respectively. - -Below sequence diagram for Update Identity service shows sequence of operations to update Identity details associated with a UIN. -![Update Identity Sequence Diagram](_images/idrepo-identity-updateid-sd.PNG) - -When UIN status is updated using Update ID API, the status is first validated against the configured status for the country. Once input UIN status matches the one among all the configured UIN status, it is updated in the database. -Default configuration of UIN status has ACTIVATED, BLOCKED and DEACTIVATED. This can be changed based on country's requirements. - - -***2.2.3. Get Identity By UIN*** - -MOSIP Products can use ID Repo API spec available here - [Retrieve ID By UIN API Spec](https://github.com/mosip/mosip-docs/wiki/ID-Repository-API#get-idrepositoryv1identityuinuintypebio) - to retrieve Identity of an Individual by providing a UIN. -1. Integrate with Kernel UIN validator to validate UIN -2. Once the request is successfully validated, retrieve Identity details in UIN and UIN_detail tables - - -Below sequence diagram for create Identity service shows sequence of operations to retrieve Identity details associated with a UIN. -![Get Identity Sequence Diagram](_images/idrepo-identity-getidbyuin-sd.PNG) - -***2.2.4. Get Identity By RID*** - -MOSIP Products can use ID Repo API spec available here - [Retrieve ID By RID API Spec](https://github.com/mosip/mosip-docs/wiki/ID-Repository-API#get-idrepositoryv1identityridridtypebio) - to retrieve Identity of an Individual by providing a RID. -1. Integrate with Kernel RID validator to validate RID -2. Once the request is successfully validated, retrieve latest Identity details to the mapped UIN from UIN and UIN_detail tables - - -Below sequence diagram for create Identity service shows sequence of operations to retrieve Identity details associated with a UIN. -![Get Identity Sequence Diagram](_images/idrepo-identity-getidbyrid-sd.PNG) - - -**2.3. Database Sharding** - -UIN DB stores UIN and the corresponding identity details. In order to decrease load and increase search performance, UIN DB is horizontally partitioned into shards. Each shard is a separate database instance with same tables and rows in tables are distributed across shards. -ID Repo provides default shard implementation where shards are decided based on starting character of UIN. Below diagram shows the approach for sharding UIN DB. - -![UIN Database Sharding](_images/idrepo-identity-databasesharding.png) - - -**2.4. Encrypting/Decrypting Identity** - -Identity stored in UIN DB is encrypted/decrypted outside the DB. Details on the approach of encryption/decryption is available here - [Identity Encryption/Decryption](https://github.com/mosip/mosip/wiki/Security#database-encryption) - -**2.5. Database Model** - -ID Repo DB contains tables to store ID JSON, references to CBEFF and proof documents in DFS and salts to be used for hashing and encrypting UIN. Details DB model is as below. -![ID Repo DB Model](_images/idrepo-identity-datamodel.PNG) \ No newline at end of file diff --git a/design/idrepository/salt-generator.md b/design/idrepository/salt-generator.md deleted file mode 100644 index d20c34dbab..0000000000 --- a/design/idrepository/salt-generator.md +++ /dev/null @@ -1,48 +0,0 @@ -# Salt Generator Job - -## 1. Background - - -Salt Generator Job is a one-time job which is run to populate salts to be used to hash and encrypt UIN in ID Repo and ID Map DB. This generic job takes schema and table name as input, and generates and populates salts in the given schema and table. - - -***1.1.Target Users -*** -- ID Repository module uses this job to populate salts used to hash and/or encrypt UIN in ID Repo and ID Map DBs. - - -***1.2. Key Functional Requirements -*** -- Create and save salts against key indexes from 0-999 (confugurable range) - - -***1.3. Key Non-Functional Requirements -*** - -- Logging : - - Log all the exceptions along with error code and short error message -- Exception : - - Any error in storing or retrieval or update of VID details should be handled with appropriate error code and message in the response - - -### 2. Solution - - -The key solution considerations are -- Create a project which provides a Batch Job to generate and store salts to be used while hashing and encrypting UIN - - -**2.1. Class Diagram** -![Class Diagram](_images/idrepo-saltgenerator-cd.PNG) - - -**2.2. Sequence Diagram** - -ID Repository can use salt-generator job to create and store random salt against keyIndex in ID Repo and ID Map DBs. - -1. Receive Schema name and Table Name as an input to run the job -2. Dynamically load Schema and TableName based on given input -3. Load Spring Batch related configurations like JobListener, JobBuilder, StepBuilder, etc. -4. Integrate with kernel-core HMACUtil to generate salt -5. Execute Job which creates salts in chunks (batch) and stores in the tables -6. If data was already present in the table, Job throws an exception and exits - -Below sequence diagram shows the above sequence of operations in order to create and store salts in the database. -![Create VID Sequence Diagram](_images/idrepo-saltgenerator-sd.PNG) diff --git a/design/idrepository/vid-service.md b/design/idrepository/vid-service.md deleted file mode 100644 index 4508bbab75..0000000000 --- a/design/idrepository/vid-service.md +++ /dev/null @@ -1,118 +0,0 @@ -# Virtual Identity Service - -## 1. Background - - -Virtual Identity (VID) services can be used internally by modules to create VID based on VID Policy, retrieve UIN mapped to a VID and update VID attributes like VID status. - - - -***1.1.Target Users -*** -- Registration Processor can use VID services to create Perpetual VID associated with a UIN -- Resident Services can use VID services to create Temporary VID, revoke or re-generate a VID -- ID Authentication can use VID services to retrieve UIN associated with a VID - -***1.2. Key Functional Requirements -*** -- Create and store VID mapped to an active UIN -- Retrieve UIN for an active VID -- Update VID status for an active VID - -#### 1.2.1. Functional Flow Diagram - Create VID - -![Functional Flow Diagram - Create VID](_images/idrepo-createvid-fd.PNG) - -#### 1.2.2. Functional Flow Diagram - Retrieve UIN By VID - -![Functional Flow Diagram - Retrieve UIN By VID](_images/idrepo-vid-retrieveuinbyvid-fd.PNG) - -#### 1.2.3. Functional Flow Diagram - Update VID Status - -![Functional Flow Diagram - Update VID Status](_images/idrepo-updatevidstatus-fd.PNG) - -#### 1.2.4. Functional Flow Diagram - Re-generate VID - -![Functional Flow Diagram - Re-generate VID](_images/idrepo-regeneratevid-fd.PNG) - - -***1.3. Key Non-Functional Requirements -*** - -- Logging : - - Log all the exceptions along with error code and short error message - - As a security measure, Individual's UIN should not be logged -- Audit : - - Audit all transaction details in database - - Individual's UIN should not be audited -- Exception : - - Any error in storing or retrieval or update of VID details should be handled with appropriate error code and message in the response -- Security : - - Individual's UIN should not be visible, and should be encrypted in the database - -### 2. Solution - - -The key solution considerations are -- Create a project which provides REST service to create VID, update VID status and get UIN mapped to VID -- REST service can be used by any MOSIP module to access these services through HTTP client - - -**2.1. Class Diagram** -![Class Diagram](_images/idrepo-vid-cd.PNG) - - -**2.2. REST Services** - -***2.2.1. Create VID*** - -MOSIP Modules can use VID API spec available here - [Create VID API Spec](https://github.com/mosip/mosip-docs/wiki/ID-Repository-API#post-idrepositoryv1vid) - to create Virtual Identity of an Individual, based on a given VID Policy. - -1. Receive UIN and VID Type as an input to generate a VID -2. Integrate with kernel-idvalidator-uin to validate incoming UIN -3. Integrate with ID Repository Identity service to validate if input UIN is ACTIVE -4. Retrieve hash_salt and encrypt_salt from ID Map DB for UIN ending with UIN modulo _UIN_divisor_ (configurable) -5. Integrate with kernel-idgenerator-vid to generate VID string -6. Encrypt and Hash UIN with the salts obtained in step4 in EntityInterceptor -7. Create VID based in VID policy associated with input VID Type -8. Save VID with input VID Type and status _ACTIVE_, mapped to input UIN - -Below sequence diagram for create VID service shows the above sequence of operations in order to create VID and store in the database. -![Create VID Sequence Diagram](_images/idrepo-vid-createvid-sd.PNG) - - -***2.2.2. Retrieve UIN for a given VID*** - -MOSIP Modules can use VID API spec available here - [Update ID API Spec](https://github.com/mosip/mosip-docs/wiki/ID-Repository-API#get-idrepositoryv1vidvid) - to retrieve Virtual Identity of a given UIN. - -1. Receive VID as input -2. Check if VID status is _ACTIVE_ -3. Retrieve decrypted UIN from database in the EntityInterceptor -4. Integrate with ID Repository Identity service to validate if input UIN is _ACTIVE_ -5. Return UIN in the response - -Below sequence diagram for retrieve UIN by VID service shows the above sequence of operations in order to retrieve UIN for VID from the database. -![Retrieve UIN for VID Sequence Diagram](_images/idrepo-vid-retrieveuinbyvid-sd.PNG) - - -***2.2.3. Update VID Status*** - -MOSIP Modules can use VID API spec available here - [Update VID Status API Spec](https://github.com/mosip/mosip-docs/wiki/ID-Repository-API#patch-idrepositoryv1vidvid) - to update status of existing Virtual Identity of an Individual. - -1. Receive VID and status to be updated as an input -2. Integrate with kernel-idvalidator-vid to validate incoming VID -3. Retrieve VID entity from database -4. Check current VID status and expiry -5. Update VID status and store in the database -6. If VID status is REVOKED and input VID is of _Perpetual_ Type (i.e., auto-restoration is allowed), generate a new VID and store in the database with status _ACTIVE_ - -Below sequence diagram for update VID status service shows the above sequence of operations in order to update VID status and store in the database. -![Update VID Status Sequence Diagram](_images/idrepo-vid-updatevid-sd.PNG) - - -***2.2.4. Regenerate VID*** - -MOSIP Modules can use VID API spec available here - [Update ID API Spec](https://github.com/mosip/mosip-docs/wiki/ID-Repository-API#post-idrepositoryv1vidvidregenerate) - to regenerate Virtual Identity of a given UIN, with the same VID policy as existing VID. - -1. Receive VID as input -2. Integrate with kernel-idvalidator-vid to validate incoming VID -3. Retrieve VID entity from database -4. Integrate with ID Repository Identity service to validate if input UIN is _ACTIVE_ -5. If VID status is REVOKED and input VID is of _Temporal_ Type (i.e., auto-restoration is _NOT_ allowed), then set VID status as _INVALIDATED_ and update in the database -6. Create a new VID with same VID Policy, mapped to same UIN and store in the database - -Below sequence diagram for regenerate VID service shows the above sequence of operations in order to regenerate VID and store in the database. -![Regenerate VID Sequence Diagram](_images/idrepo-vid-regeneratevid-sd.PNG) diff --git a/design/kernel/Kernel-idgenerator-rid.md b/design/kernel/Kernel-idgenerator-rid.md deleted file mode 100644 index fa3ced0140..0000000000 --- a/design/kernel/Kernel-idgenerator-rid.md +++ /dev/null @@ -1,45 +0,0 @@ -# RID Generator - -#### Background - -The Registration client module needs to generate a RID and assign it to an individual during the Registration process. The Registration client can go in offline mode also. - -#### Solution - - - -**The key solution considerations are** - - -- There cannot be any duplicate numbers generated. - - -- The registration client should be able to generate a unique number even if the Registration client goes to offline mode. - - -- The configurations of the RID is injected to the RID generator module. - - -- The RID generator is included in the Registration client module as Java Jar file. - -- The Registration client application can go offline sometimes. During this time, the properties have to be injected to the RID generator. - -- When the Registration client comes online, all the configurations will be synced and downloaded to the client machine. - - - -**Module diagram** - - - - -![Module Diagram](_images/kernel-idgenerator-rid.jpg) - - -**Class diagram** - - - -![Class Diagram](_images/kernel-idgenerator-cd.png) - - diff --git a/design/kernel/List of roles.md b/design/kernel/List of roles.md deleted file mode 100644 index 97f051df53..0000000000 --- a/design/kernel/List of roles.md +++ /dev/null @@ -1,29 +0,0 @@ -# List of role - Service - -#### Background - -The users and roles are stored in LDAP and this is the single source of truth. In case of offline application, the list of roles should be repliacated to the respective application. This is a replica of the representation in the LDAP server. - -#### Solution - - - -**The key solution considerations are** - - -- There should be a service which will return the list of roles available in the MOSIP system. - - -- The service should be secured and the permissions should be provided to a authorized personnel only. - - -- The service is a wrapper, which will connect to the AuthServer to provide the result. - - - -**Module diagram** - - - -![Module Diagram](_images/List_of_roles.jpg) - diff --git a/design/kernel/List of users.md b/design/kernel/List of users.md deleted file mode 100644 index 14fbc1455c..0000000000 --- a/design/kernel/List of users.md +++ /dev/null @@ -1,30 +0,0 @@ -# List of users - Service - -#### Background - -The roles and userss are stored in LDAP and this is the single source of truth. In case of offline application, the list of users should be repllicated to the respective application. This is a replica of the representation in the LDAP server. - -#### Solution - - - -**The key solution considerations are** - - -- There should be a service which will return the list of users available in the MOSIP system. - - -- The service should be secured and the permissions should be provided to a authorized personnel only. - - -- The service is a wrapper, which will connect to the AuthServer to provide the result. - - - -**Module diagram** - - - -![Module Diagram](_images/List_of_users.jpg) - - diff --git a/design/kernel/UpdatedbyCreatedby.md b/design/kernel/UpdatedbyCreatedby.md deleted file mode 100644 index c5b13a6e93..0000000000 --- a/design/kernel/UpdatedbyCreatedby.md +++ /dev/null @@ -1,33 +0,0 @@ -# Updatedby and Createdby in webservices - -#### Background - -There are many webservices in MOSIP platform. All the webservices have the authentication part defined for the services. So, when a request comes to the webservice, the webservice takes the AuthToken in the request. If the AuthToken is not there in the request, the request is rejected right away. If the AuthToken is available, the userID field from the User claim is taken. Then this userID field is inserted into the database column. This userID in the database has no relation or constraint with any other DB table. This userID is the primary field in the IAM. - -#### Solution - - - -**The key solution considerations are** - - -- The incoming requests should be screened for the AuthToken. If the AuthToken is not available, the request is rejected. Basically, all the incoming requests to the webservices should be filtered for Authentication and Authorization. - - -- The userID have to be taken from the User claim in the AuthToken. The token should be sent to the AuthServer for validity and the user claim. - - -- If the request is for Create request, the Createdby DB column data is placed by the userID. - -- If the request is for the Update request, the Updatedby DB column data is placed by the userID. - -- If the request is for the Delete request, the Updatedby DB column data is placed by the userID. Note: We don't have hard delete in the MOSIP system. So, in case of soft delete, the Updatedby DB column is updated. - - - -**Module diagram** - - - -![Module Diagram](_images/UpdatedbyCreatedby.jpg) - diff --git a/design/kernel/UserRoleMapping.md b/design/kernel/UserRoleMapping.md deleted file mode 100644 index 0f9bc0be92..0000000000 --- a/design/kernel/UserRoleMapping.md +++ /dev/null @@ -1,29 +0,0 @@ -# User Role Mapping - Service - -#### Background - -The roles and users are stored in LDAP and this is the single source of truth. The user to role mapping is maintained in the LDAP server. In case of offline application, user role mapping should be replicated to the respective application. This is a replica of the representation in the LDAP server. - -#### Solution - - - -**The key solution considerations are** - - -- There should be a service which will return the user role mapping in the MOSIP system. - - -- The service should be secured and the permissions should be provided to a authorized personnel only. - - -- The service is a wrapper, which will connect to the AuthServer to provide the result. - - - -**Module diagram** - - - -![Module Diagram](_images/UserRoleMapping.jpg) - diff --git a/design/kernel/_images/GlobalProperties.jpg b/design/kernel/_images/GlobalProperties.jpg deleted file mode 100644 index f7613ca16e..0000000000 Binary files a/design/kernel/_images/GlobalProperties.jpg and /dev/null differ diff --git a/design/kernel/_images/GlobalProperties_1.jpg b/design/kernel/_images/GlobalProperties_1.jpg deleted file mode 100644 index 2a61072dd6..0000000000 Binary files a/design/kernel/_images/GlobalProperties_1.jpg and /dev/null differ diff --git a/design/kernel/_images/Kernel-idgenerator-prid.jpg b/design/kernel/_images/Kernel-idgenerator-prid.jpg deleted file mode 100644 index f3ffbe73e1..0000000000 Binary files a/design/kernel/_images/Kernel-idgenerator-prid.jpg and /dev/null differ diff --git a/design/kernel/_images/KernelComponents.png b/design/kernel/_images/KernelComponents.png deleted file mode 100644 index 377f8f581f..0000000000 Binary files a/design/kernel/_images/KernelComponents.png and /dev/null differ diff --git a/design/kernel/_images/KernelServicesAuthorization.jpg b/design/kernel/_images/KernelServicesAuthorization.jpg deleted file mode 100644 index d83ca03339..0000000000 Binary files a/design/kernel/_images/KernelServicesAuthorization.jpg and /dev/null differ diff --git a/design/kernel/_images/Kernel_logical_diagram.jpg b/design/kernel/_images/Kernel_logical_diagram.jpg deleted file mode 100644 index cc7f8e7567..0000000000 Binary files a/design/kernel/_images/Kernel_logical_diagram.jpg and /dev/null differ diff --git a/design/kernel/_images/LicenseKeyGeneration.jpg b/design/kernel/_images/LicenseKeyGeneration.jpg deleted file mode 100644 index feead06493..0000000000 Binary files a/design/kernel/_images/LicenseKeyGeneration.jpg and /dev/null differ diff --git a/design/kernel/_images/List of roles.jpg b/design/kernel/_images/List of roles.jpg deleted file mode 100644 index f853009f73..0000000000 Binary files a/design/kernel/_images/List of roles.jpg and /dev/null differ diff --git a/design/kernel/_images/List_of_roles.jpg b/design/kernel/_images/List_of_roles.jpg deleted file mode 100644 index 704c2fa2fe..0000000000 Binary files a/design/kernel/_images/List_of_roles.jpg and /dev/null differ diff --git a/design/kernel/_images/List_of_users.jpg b/design/kernel/_images/List_of_users.jpg deleted file mode 100644 index 91e67ed20d..0000000000 Binary files a/design/kernel/_images/List_of_users.jpg and /dev/null differ diff --git a/design/kernel/_images/MOSIP_DataArchitecture.jpg b/design/kernel/_images/MOSIP_DataArchitecture.jpg deleted file mode 100644 index 7af356226b..0000000000 Binary files a/design/kernel/_images/MOSIP_DataArchitecture.jpg and /dev/null differ diff --git a/design/kernel/_images/MOSIP_config_server_setup.png b/design/kernel/_images/MOSIP_config_server_setup.png deleted file mode 100644 index 0d09fa937e..0000000000 Binary files a/design/kernel/_images/MOSIP_config_server_setup.png and /dev/null differ diff --git a/design/kernel/_images/MOSIP_functional_view.png b/design/kernel/_images/MOSIP_functional_view.png deleted file mode 100644 index 3f5fb795ef..0000000000 Binary files a/design/kernel/_images/MOSIP_functional_view.png and /dev/null differ diff --git a/design/kernel/_images/MOSIP_logical_arch.png b/design/kernel/_images/MOSIP_logical_arch.png deleted file mode 100644 index 5e31a809f9..0000000000 Binary files a/design/kernel/_images/MOSIP_logical_arch.png and /dev/null differ diff --git a/design/kernel/_images/MOSIP_modules_components.png b/design/kernel/_images/MOSIP_modules_components.png deleted file mode 100644 index d6eb3a79d9..0000000000 Binary files a/design/kernel/_images/MOSIP_modules_components.png and /dev/null differ diff --git a/design/kernel/_images/UINGenerator.drawio b/design/kernel/_images/UINGenerator.drawio deleted file mode 100644 index 61234691f9..0000000000 --- a/design/kernel/_images/UINGenerator.drawio +++ /dev/null @@ -1 +0,0 @@ -5Vhbb9s2GP01BraHGrpEsvyY2G5WLFuCuu3WvgS0REtsKVEg6djur+9HkbpSTRPEbjEsAQzz8ONF53w3eeIv8sM1R2X2F0swnXhOcpj4y4nnzYIL+FTAUQMXYaSBlJNEQ24LrMlXbEDHoDuSYNEzlIxRSco+GLOiwLHsYYhztu+bbRntn1qiFFvAOkbURv8hicw0GgVOi/+BSZrVJ7uOmclRbWwAkaGE7TuQv5r4C86Y1N/ywwJTxV3Ni173+juzzcU4LuRTFlyu7t9f395++vPgb9DuavkpI/LVzNxNHusHxgk8vxkyLjOWsgLRVYtecbYrEqx2dWDU2twwVgLoAvgZS3k0YqKdZABlMqdmFi7Mj/+a9dXgoxpMg3q4PHQnl0cz0ndVF/wuBQYSbMdj/Mhz166EeIrlI3Z+IxQ4OGY5hvvAOo4pkuShfw9kXC1t7Fo14IsR5BnimH0fEN2Zkxas2JIUsDXmD5hb4pWMFBLz1QMQIgzbjd8pChMkska6jiRCcvYFLxhlHJCCFUpoijaY3jFBJGEFwDFWm8MEHC0JxMjNwEAqB2hmLylJFbphUrIcJpABmn22hNL6zInnB47611cu1RPlh1QllWkuYoSnLBfTuCLgHgmBhciV7JoiOBIfHvcKW8V6wcxEqElRrm/G+zbga5OsE+s1dnLdo/9pUPpPDMrwVwalbwXle1Jc4wJzJBn/UPk+KDJUsK/PHnbC6xJVdOzBx/tacCaRCal5y/GLnNyb953ci2wnd70RLw/P5eWhTeSbvwG4g/Ju0VdnhPhICfDIf8zhRhN+s2kAFH9JKxludxJ2wQY/AbnBIIM0qaFDbjjCbXQubucWt2QL49/UUwG9QiUBJXaIckUblRUPjsw4FplqkTznd5it8A2UmTDVFsa+2IhSrxiBUh0LGNQUnTMtSYFuOXB7DBdDm8pAuX1VzSpqgqtJsFQVBNKW0BnM7RQUirdypPDociTARUiRvqvy4KuL0yjuRn3FfXcknIIRyf1zSe66FsM/oWqcsiVzxhl/clo3S++U17RK+d4gNucDBXS5MataES45R8eOmXHGZ5/Taqp3bBVunvEFojtWoL/FKYFuTtcPyKacxdAqMbtXHDZZMRExm+bwOd1yVsh7XCT3ZbO8J3uvjRx0cY4fRvOZ1VPCzLb6a2bq9ynvkY6y6R3HYvvlYTzM26EH/c4wjucjYTwPzhXG3q8IYwFBIC/V67KqsRTaaxLX8GtC2x4xqY3MKwIgZv45veDJg9wNB+nYmfe30NnHCvIfRrG10ZmyRX3OebOF3bu+xSgRuo4Piv27Ti+w1v0CKpKmPzPYsPoPd4FMkoNx894qxt9b/9O9gB9EPS3dWWT3AtFIErl4fi8Aw/YXI+0X7c9u/uob \ No newline at end of file diff --git a/design/kernel/_images/UINGenerator.jpg b/design/kernel/_images/UINGenerator.jpg deleted file mode 100644 index 8a223213ce..0000000000 Binary files a/design/kernel/_images/UINGenerator.jpg and /dev/null differ diff --git a/design/kernel/_images/UIN_Pool.drawio b/design/kernel/_images/UIN_Pool.drawio deleted file mode 100644 index c6d7cd4b48..0000000000 --- a/design/kernel/_images/UIN_Pool.drawio +++ /dev/null @@ -1 +0,0 @@ -7VhRb9owEP41PBYlDinpY8mgnUS3CrTtcTKJSbw6cWQ7Bfrrd05sQghotKJiD7Soyn13ts/3feZS97wwWz8IXKRPPCash5x43fO+9BAa3gbwVwObGnD9wKuRRNDYYA0wp2/EgI5BSxoT2QpUnDNFizYY8TwnkWphWAi+aoctOWuvWuCEdIB5hFkX/UVjldZo4DsN/khoktqVXcd4MmyDDSBTHPPVDuSNe14oOFf1U7YOCdPFs3Wpx02OeLeJCZKrUwYUj7PB/ex78k3+XBH588ckeX24QfUsr5iVZsMlzU2+amOLIFc0YzgHa7TkuZobjwN2lFIWT/GGlzoJqXD0Yq1RygV9g3jMwOUCAG6hDMfoVs9GGQs546JaxyOO/m2NnOsZzVqCSBj7bHfs7kFPeN0KnGKpbJacMVxIuqjy1gMzLBKaj7hSPDNBdpeTdlLL6gf8mNEkByyCtYiwtah34w7ANrUkQpH1UZLcLfVwZgjPiBIbCLEDrHzMebE6WzXac28Nlu7qzhkYzRu9J9upG0nAg1HFOxTidRQyAxUjx+2oBHatKpIFfyG2gDmvZbNTUwPJAkc0T6ZkqfcwaJCZ2ZaGOFRzyapjk9I4Jrlmlyus8GIrwYLTXFXb9kfwgeqETt/v+ZBTCLbb2PDR4UKFPIc0Ma1IIaAT2K/aYxSdyujxg9Wl2dAK4j+JVht3dlYHR1hFV1Y/zqqPLsyqf4RV78rqx1kdBhdmdXioR//GUkI7IvG1WV+sWXvDdrN20YlS+bxuHVy79Ue+AYb/d7e+u3br87N68W5t/8W9tutz0nrxdu26HVo7fKYq27ZZey2g6x1jmZLYGJ0WpotFI8zujSMD2hip5yj0zNk60bcw/friA/X/lFnxNb/Xlp5cV8j19ZOuuBfoNbTvkWC9pu9bBVCupw+8M7VJK2jD0A3yuhS5h9rk3adx1L33mEdQ+ZJBoffJsmWf4gVhz1xSUx/FC/3201C5z8/CvLB0mfznQYZXGccZjSfoELtvpSB9uc3XHFMixq+kPq06GbaX7XbtMzCK9l58bpDfYXRwgFB7m/EOPsFsrsgq385Fozf+Cw== \ No newline at end of file diff --git a/design/kernel/_images/UIN_Pool.jpg b/design/kernel/_images/UIN_Pool.jpg deleted file mode 100644 index b598d90059..0000000000 Binary files a/design/kernel/_images/UIN_Pool.jpg and /dev/null differ diff --git a/design/kernel/_images/UpdatedbyCreatedby.jpg b/design/kernel/_images/UpdatedbyCreatedby.jpg deleted file mode 100644 index 06771ebe97..0000000000 Binary files a/design/kernel/_images/UpdatedbyCreatedby.jpg and /dev/null differ diff --git a/design/kernel/_images/UserRoleMapping.jpg b/design/kernel/_images/UserRoleMapping.jpg deleted file mode 100644 index 5bbe19a0f3..0000000000 Binary files a/design/kernel/_images/UserRoleMapping.jpg and /dev/null differ diff --git a/design/kernel/_images/VIDGenerator.drawio b/design/kernel/_images/VIDGenerator.drawio deleted file mode 100644 index 56baf2dd60..0000000000 --- a/design/kernel/_images/VIDGenerator.drawio +++ /dev/null @@ -1 +0,0 @@ -3VjZcts2FP0azSQP8nARKfVRlmQ3Y7XSxEuavHggEiJRgQQLQFu+PhckuFPKojhuO34wcXCJ5Zy7UT17Eh1uOUrCP5iPac8y/EPPnvYsy3TNEfxTyDFDBiM7AwJOfG1UAvfkM9agodEt8bGoGUrGqCRJHfRYHGNP1jDEOdvXzdaM1ndNUIBbwL2HaBv9QHwZZujIMUr8d0yCMN/ZNPRMhHJjDYgQ+WxfgexZz55wxmT2FB0mmCrycl6y925OzBYH4ziW3/LCePb8eLtYfLo72Cu0vZ5+ConsD/XZ5DG/MPbh/nrIuAxZwGJEZyV6zdk29rFa1YBRaTNnLAHQBPBvLOVRi4m2kgEUyojqWTgwP/6l308HH9XgysmH00N1cnrUo/aNNQmCbbmHz1wz9xzEA6xfHZHpXTD8cLe5Ef6GR7ulGO1zO8VBZQPN5y1mEYbzgAHHFEmyq/sI0q4WFHalGvCgBfkOcfS6O0S3eqcJi9ckAOwe8x3mLfESRmKJ+WwHDAnNduF3ikIfibCQriKJkJxt8IRRxgGJWayEpmiF6ZIJIgmLAfawWhwmYGtJIEbmDQOpHKCYHVMSKHTFpGQRTCANFOusCaX5nj3Ldgz1lx05UTeKDoHKKleR8BC+YpG48lICnpEQWIhI+cEpn1CnwIezKurZfp6jdIoybR2x+zLghxoKK7GeY5fo3umF9msEZafn/1i02RcGjX51qZy5lMkaGTWZBm6D/yy69VulBGPO0bFilsaIOL2PYzf2MRt59WvnqtvDQ3aC0h8KTn48Ndit1PBE/CVLtkAx409pBIJfNP2o7iV7WAnfJygVcw+RVvcIziTSgf3b2fT77aE2GNa5KrirhJppdcRaU+uflmPdFpGP7/4EYAlNRou+PC95R0qAR/51DlcZ4fNVASBvE6QyLLYSVsG18LuIXMs5ESAVct0Obkcvxa3Z9tL3GPkQe7CjS6WiA2qYG6inh5BjEar2DKqbSlJwoNgvlNCYiyLFcLwSSUpac5U1h0pjGUWdFN11EhiVDWfHgnxGq9RAObvOEmDtXPecqapekDJFlj3NSjGjeC07il5WCgU4BomDhzQH9wc/R+eRUy9XrtOOoVGHzoOXqlfWf6denev6qt3h6VzxC5rBzkM6r0Fy2amXzfnH6tzZTv2XinNp03GROO1OPS3HjE5C7G3wixbkVuLo4PlkLjHdVyzInVQOWlSSNYzfqGsBoSIrDUUlSPO/8o9K+XjbrgvtymF0QJKTIFDlorvMQDaPa/K5/2zV1/u1Kid9XRDG6seI7APHykQyUln7ItNVzceMR4gW82VP0PeyryFlxIPVG8tx0pMClUbj+W25fX7J7hbQ1RTdZMfP+fiXVcSLvNg2Gl48HLa9uOsTzn4pL263lU/vps/LxfJxPn5YvH+eLyZ3/y8NWp9BVkcmcTo0sL5fAxiWv5tln1Tlr4/27As= \ No newline at end of file diff --git a/design/kernel/_images/VIDGenerator.jpg b/design/kernel/_images/VIDGenerator.jpg deleted file mode 100644 index 21d9898adb..0000000000 Binary files a/design/kernel/_images/VIDGenerator.jpg and /dev/null differ diff --git a/design/kernel/_images/auth-service-cd.png b/design/kernel/_images/auth-service-cd.png deleted file mode 100644 index e5e5dfeb97..0000000000 Binary files a/design/kernel/_images/auth-service-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-MISPIDGenerator.jpg b/design/kernel/_images/kernel-MISPIDGenerator.jpg deleted file mode 100644 index 936532be0a..0000000000 Binary files a/design/kernel/_images/kernel-MISPIDGenerator.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-MachineIDGenerator.jpg b/design/kernel/_images/kernel-MachineIDGenerator.jpg deleted file mode 100644 index a64e926a69..0000000000 Binary files a/design/kernel/_images/kernel-MachineIDGenerator.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-PRIDGenerator.jpg b/design/kernel/_images/kernel-PRIDGenerator.jpg deleted file mode 100644 index f3ffbe73e1..0000000000 Binary files a/design/kernel/_images/kernel-PRIDGenerator.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-RIDGenerator.jpg b/design/kernel/_images/kernel-RIDGenerator.jpg deleted file mode 100644 index b42d7a6cdc..0000000000 Binary files a/design/kernel/_images/kernel-RIDGenerator.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-RegistrationCenterIDGenerator.jpg b/design/kernel/_images/kernel-RegistrationCenterIDGenerator.jpg deleted file mode 100644 index 8913670aaa..0000000000 Binary files a/design/kernel/_images/kernel-RegistrationCenterIDGenerator.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-TSPIDGenerator.jpg b/design/kernel/_images/kernel-TSPIDGenerator.jpg deleted file mode 100644 index 3c677dae3f..0000000000 Binary files a/design/kernel/_images/kernel-TSPIDGenerator.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-TokenGenerator.jpg b/design/kernel/_images/kernel-TokenGenerator.jpg deleted file mode 100644 index ef781fe260..0000000000 Binary files a/design/kernel/_images/kernel-TokenGenerator.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-UINGenerator-class.jpg b/design/kernel/_images/kernel-UINGenerator-class.jpg deleted file mode 100644 index bf1c9147d4..0000000000 Binary files a/design/kernel/_images/kernel-UINGenerator-class.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-UINGenerator.jpg b/design/kernel/_images/kernel-UINGenerator.jpg deleted file mode 100644 index 1a7c6e08f2..0000000000 Binary files a/design/kernel/_images/kernel-UINGenerator.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-VIDGenerator.jpg b/design/kernel/_images/kernel-VIDGenerator.jpg deleted file mode 100644 index 0fba0c8bfd..0000000000 Binary files a/design/kernel/_images/kernel-VIDGenerator.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-applicanttype.jpg b/design/kernel/_images/kernel-applicanttype.jpg deleted file mode 100644 index 43b60219f3..0000000000 Binary files a/design/kernel/_images/kernel-applicanttype.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-auditmanager-api-cd.png b/design/kernel/_images/kernel-auditmanager-api-cd.png deleted file mode 100644 index 021088b270..0000000000 Binary files a/design/kernel/_images/kernel-auditmanager-api-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-auditmanager-cd.png b/design/kernel/_images/kernel-auditmanager-cd.png deleted file mode 100644 index 5fcd216424..0000000000 Binary files a/design/kernel/_images/kernel-auditmanager-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-auditmanager-erd.png b/design/kernel/_images/kernel-auditmanager-erd.png deleted file mode 100644 index 37ba202bce..0000000000 Binary files a/design/kernel/_images/kernel-auditmanager-erd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-auth-fd.jpg b/design/kernel/_images/kernel-auth-fd.jpg deleted file mode 100644 index d83ca03339..0000000000 Binary files a/design/kernel/_images/kernel-auth-fd.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-authentication-keepalive-prereg.jpg b/design/kernel/_images/kernel-authentication-keepalive-prereg.jpg deleted file mode 100644 index 6dd9d4f204..0000000000 Binary files a/design/kernel/_images/kernel-authentication-keepalive-prereg.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-authn-classdiagram.jpg b/design/kernel/_images/kernel-authn-classdiagram.jpg deleted file mode 100644 index 1624559fd7..0000000000 Binary files a/design/kernel/_images/kernel-authn-classdiagram.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-authn-login-swimlane.jpg b/design/kernel/_images/kernel-authn-login-swimlane.jpg deleted file mode 100644 index 22bbb7abc4..0000000000 Binary files a/design/kernel/_images/kernel-authn-login-swimlane.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-authn-sequencediagram.jpg b/design/kernel/_images/kernel-authn-sequencediagram.jpg deleted file mode 100644 index 9ecc06a769..0000000000 Binary files a/design/kernel/_images/kernel-authn-sequencediagram.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-authn-servicecall-swimlane.jpg b/design/kernel/_images/kernel-authn-servicecall-swimlane.jpg deleted file mode 100644 index 7552b5ce24..0000000000 Binary files a/design/kernel/_images/kernel-authn-servicecall-swimlane.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-authn-tokensoverview.jpg b/design/kernel/_images/kernel-authn-tokensoverview.jpg deleted file mode 100644 index 293be5cf57..0000000000 Binary files a/design/kernel/_images/kernel-authn-tokensoverview.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-batch-framework.png b/design/kernel/_images/kernel-batch-framework.png deleted file mode 100644 index a04abb5831..0000000000 Binary files a/design/kernel/_images/kernel-batch-framework.png and /dev/null differ diff --git a/design/kernel/_images/kernel-cbeffutil.jpg b/design/kernel/_images/kernel-cbeffutil.jpg deleted file mode 100644 index 891adf5258..0000000000 Binary files a/design/kernel/_images/kernel-cbeffutil.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-crypto-cd.png b/design/kernel/_images/kernel-crypto-cd.png deleted file mode 100644 index bd2dd4826f..0000000000 Binary files a/design/kernel/_images/kernel-crypto-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-cryptography-digitalsignature.jpeg b/design/kernel/_images/kernel-cryptography-digitalsignature.jpeg deleted file mode 100644 index 89b16efec4..0000000000 Binary files a/design/kernel/_images/kernel-cryptography-digitalsignature.jpeg and /dev/null differ diff --git a/design/kernel/_images/kernel-cryptomanager.png b/design/kernel/_images/kernel-cryptomanager.png deleted file mode 100644 index 033060ad6d..0000000000 Binary files a/design/kernel/_images/kernel-cryptomanager.png and /dev/null differ diff --git a/design/kernel/_images/kernel-dataaccess-cd.png b/design/kernel/_images/kernel-dataaccess-cd.png deleted file mode 100644 index 5f2d20ecd3..0000000000 Binary files a/design/kernel/_images/kernel-dataaccess-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-datamapper-cd.png b/design/kernel/_images/kernel-datamapper-cd.png deleted file mode 100644 index 649e7ee578..0000000000 Binary files a/design/kernel/_images/kernel-datamapper-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-datavalidator-cd.png b/design/kernel/_images/kernel-datavalidator-cd.png deleted file mode 100644 index e0b53a1b25..0000000000 Binary files a/design/kernel/_images/kernel-datavalidator-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-datavalidator-fc.png b/design/kernel/_images/kernel-datavalidator-fc.png deleted file mode 100644 index 6845e230f0..0000000000 Binary files a/design/kernel/_images/kernel-datavalidator-fc.png and /dev/null differ diff --git a/design/kernel/_images/kernel-dockerizesofthsm.jpg b/design/kernel/_images/kernel-dockerizesofthsm.jpg deleted file mode 100644 index d82f747b11..0000000000 Binary files a/design/kernel/_images/kernel-dockerizesofthsm.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-emailnotification-cd.png b/design/kernel/_images/kernel-emailnotification-cd.png deleted file mode 100644 index 213a951ed2..0000000000 Binary files a/design/kernel/_images/kernel-emailnotification-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-filesystem-adatper.gif b/design/kernel/_images/kernel-filesystem-adatper.gif deleted file mode 100644 index baad443126..0000000000 Binary files a/design/kernel/_images/kernel-filesystem-adatper.gif and /dev/null differ diff --git a/design/kernel/_images/kernel-filesystemadapter.jpg b/design/kernel/_images/kernel-filesystemadapter.jpg deleted file mode 100644 index 8a623ba25d..0000000000 Binary files a/design/kernel/_images/kernel-filesystemadapter.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-fsadapter-cd.png b/design/kernel/_images/kernel-fsadapter-cd.png deleted file mode 100644 index 05889a1784..0000000000 Binary files a/design/kernel/_images/kernel-fsadapter-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-id-generators-algorithm.jpg b/design/kernel/_images/kernel-id-generators-algorithm.jpg deleted file mode 100644 index 9043fdb183..0000000000 Binary files a/design/kernel/_images/kernel-id-generators-algorithm.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-idgenerator-cd.png b/design/kernel/_images/kernel-idgenerator-cd.png deleted file mode 100644 index e3b531f2cc..0000000000 Binary files a/design/kernel/_images/kernel-idgenerator-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-idgenerator-machineid.jpg b/design/kernel/_images/kernel-idgenerator-machineid.jpg deleted file mode 100644 index a64e926a69..0000000000 Binary files a/design/kernel/_images/kernel-idgenerator-machineid.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-idgenerator-mispid.jpg b/design/kernel/_images/kernel-idgenerator-mispid.jpg deleted file mode 100644 index 3c677dae3f..0000000000 Binary files a/design/kernel/_images/kernel-idgenerator-mispid.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-idgenerator-regcenterid.jpg b/design/kernel/_images/kernel-idgenerator-regcenterid.jpg deleted file mode 100644 index 8913670aaa..0000000000 Binary files a/design/kernel/_images/kernel-idgenerator-regcenterid.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-idgenerator-rid.jpg b/design/kernel/_images/kernel-idgenerator-rid.jpg deleted file mode 100644 index b42d7a6cdc..0000000000 Binary files a/design/kernel/_images/kernel-idgenerator-rid.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-idgenerator-tokenid.jpg b/design/kernel/_images/kernel-idgenerator-tokenid.jpg deleted file mode 100644 index ef781fe260..0000000000 Binary files a/design/kernel/_images/kernel-idgenerator-tokenid.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-idgenerator-uin-old.jpg b/design/kernel/_images/kernel-idgenerator-uin-old.jpg deleted file mode 100644 index 2d583581b5..0000000000 Binary files a/design/kernel/_images/kernel-idgenerator-uin-old.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-idgenerator-useragency.jpg b/design/kernel/_images/kernel-idgenerator-useragency.jpg deleted file mode 100644 index f0eabf952b..0000000000 Binary files a/design/kernel/_images/kernel-idgenerator-useragency.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-idgenerator-vid.jpg b/design/kernel/_images/kernel-idgenerator-vid.jpg deleted file mode 100644 index 0fba0c8bfd..0000000000 Binary files a/design/kernel/_images/kernel-idgenerator-vid.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-idobjectvalidator-cd.PNG b/design/kernel/_images/kernel-idobjectvalidator-cd.PNG deleted file mode 100644 index a7093d0e66..0000000000 Binary files a/design/kernel/_images/kernel-idobjectvalidator-cd.PNG and /dev/null differ diff --git a/design/kernel/_images/kernel-idobjectvalidator-sd.PNG b/design/kernel/_images/kernel-idobjectvalidator-sd.PNG deleted file mode 100644 index 37335a7f26..0000000000 Binary files a/design/kernel/_images/kernel-idobjectvalidator-sd.PNG and /dev/null differ diff --git a/design/kernel/_images/kernel-idrepo-cd.PNG b/design/kernel/_images/kernel-idrepo-cd.PNG deleted file mode 100644 index b5b1380aa1..0000000000 Binary files a/design/kernel/_images/kernel-idrepo-cd.PNG and /dev/null differ diff --git a/design/kernel/_images/kernel-idrepo-createid-fd.PNG b/design/kernel/_images/kernel-idrepo-createid-fd.PNG deleted file mode 100644 index 705fe2c546..0000000000 Binary files a/design/kernel/_images/kernel-idrepo-createid-fd.PNG and /dev/null differ diff --git a/design/kernel/_images/kernel-idrepo-createid-sd.PNG b/design/kernel/_images/kernel-idrepo-createid-sd.PNG deleted file mode 100644 index cbd01745c1..0000000000 Binary files a/design/kernel/_images/kernel-idrepo-createid-sd.PNG and /dev/null differ diff --git a/design/kernel/_images/kernel-idrepo-databasesharding.png b/design/kernel/_images/kernel-idrepo-databasesharding.png deleted file mode 100644 index 4c79e54414..0000000000 Binary files a/design/kernel/_images/kernel-idrepo-databasesharding.png and /dev/null differ diff --git a/design/kernel/_images/kernel-idrepo-erd.png b/design/kernel/_images/kernel-idrepo-erd.png deleted file mode 100644 index fcbffba402..0000000000 Binary files a/design/kernel/_images/kernel-idrepo-erd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-idrepo-getidentity-fd.PNG b/design/kernel/_images/kernel-idrepo-getidentity-fd.PNG deleted file mode 100644 index 24780b8e43..0000000000 Binary files a/design/kernel/_images/kernel-idrepo-getidentity-fd.PNG and /dev/null differ diff --git a/design/kernel/_images/kernel-idrepo-getidentity-sd.PNG b/design/kernel/_images/kernel-idrepo-getidentity-sd.PNG deleted file mode 100644 index 06233e5518..0000000000 Binary files a/design/kernel/_images/kernel-idrepo-getidentity-sd.PNG and /dev/null differ diff --git a/design/kernel/_images/kernel-idrepo-updateid-fd.PNG b/design/kernel/_images/kernel-idrepo-updateid-fd.PNG deleted file mode 100644 index 1e28c58798..0000000000 Binary files a/design/kernel/_images/kernel-idrepo-updateid-fd.PNG and /dev/null differ diff --git a/design/kernel/_images/kernel-idrepo-updateid-sd.PNG b/design/kernel/_images/kernel-idrepo-updateid-sd.PNG deleted file mode 100644 index b8a11b3e93..0000000000 Binary files a/design/kernel/_images/kernel-idrepo-updateid-sd.PNG and /dev/null differ diff --git a/design/kernel/_images/kernel-idvalidator-cd.png b/design/kernel/_images/kernel-idvalidator-cd.png deleted file mode 100644 index 3fef3c39e7..0000000000 Binary files a/design/kernel/_images/kernel-idvalidator-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-idvalidator-fc.png b/design/kernel/_images/kernel-idvalidator-fc.png deleted file mode 100644 index 8bfadfedd7..0000000000 Binary files a/design/kernel/_images/kernel-idvalidator-fc.png and /dev/null differ diff --git a/design/kernel/_images/kernel-jsonvalidator-cd.png b/design/kernel/_images/kernel-jsonvalidator-cd.png deleted file mode 100644 index 3ed33e778e..0000000000 Binary files a/design/kernel/_images/kernel-jsonvalidator-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-keygenerator-cd.png b/design/kernel/_images/kernel-keygenerator-cd.png deleted file mode 100644 index c24e6971bf..0000000000 Binary files a/design/kernel/_images/kernel-keygenerator-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-keymanager-erd.png b/design/kernel/_images/kernel-keymanager-erd.png deleted file mode 100644 index 8ff1fc69e9..0000000000 Binary files a/design/kernel/_images/kernel-keymanager-erd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-keymanager-softhsm-cd.png b/design/kernel/_images/kernel-keymanager-softhsm-cd.png deleted file mode 100644 index 6347c2e221..0000000000 Binary files a/design/kernel/_images/kernel-keymanager-softhsm-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-licensekeymanager-cd.png b/design/kernel/_images/kernel-licensekeymanager-cd.png deleted file mode 100644 index a551547594..0000000000 Binary files a/design/kernel/_images/kernel-licensekeymanager-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-licensekeymanager-erd.png b/design/kernel/_images/kernel-licensekeymanager-erd.png deleted file mode 100644 index b2afb11b8a..0000000000 Binary files a/design/kernel/_images/kernel-licensekeymanager-erd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-logger-cd.png b/design/kernel/_images/kernel-logger-cd.png deleted file mode 100644 index 9f75eed517..0000000000 Binary files a/design/kernel/_images/kernel-logger-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-masterdata-cd.png b/design/kernel/_images/kernel-masterdata-cd.png deleted file mode 100644 index d2e019be47..0000000000 Binary files a/design/kernel/_images/kernel-masterdata-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-masterdata-erd.png b/design/kernel/_images/kernel-masterdata-erd.png deleted file mode 100644 index 127c6bb9c8..0000000000 Binary files a/design/kernel/_images/kernel-masterdata-erd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-otpmanager-cd.png b/design/kernel/_images/kernel-otpmanager-cd.png deleted file mode 100644 index 919f2280a6..0000000000 Binary files a/design/kernel/_images/kernel-otpmanager-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-otpmanager-erd.png b/design/kernel/_images/kernel-otpmanager-erd.png deleted file mode 100644 index a9509a86dc..0000000000 Binary files a/design/kernel/_images/kernel-otpmanager-erd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-otpnotification-cd.png b/design/kernel/_images/kernel-otpnotification-cd.png deleted file mode 100644 index 31806ff6c8..0000000000 Binary files a/design/kernel/_images/kernel-otpnotification-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-packetserver-http-cd.png b/design/kernel/_images/kernel-packetserver-http-cd.png deleted file mode 100644 index a8e7fb21a8..0000000000 Binary files a/design/kernel/_images/kernel-packetserver-http-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-packetuploader-sftp-cd.png b/design/kernel/_images/kernel-packetuploader-sftp-cd.png deleted file mode 100644 index 098aaf4a32..0000000000 Binary files a/design/kernel/_images/kernel-packetuploader-sftp-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-pdfgenerator-cd.png b/design/kernel/_images/kernel-pdfgenerator-cd.png deleted file mode 100644 index 6a9b85d673..0000000000 Binary files a/design/kernel/_images/kernel-pdfgenerator-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-pinvalidator-cd.png b/design/kernel/_images/kernel-pinvalidator-cd.png deleted file mode 100644 index c8b318c201..0000000000 Binary files a/design/kernel/_images/kernel-pinvalidator-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-qrcodegenerator-cd.png b/design/kernel/_images/kernel-qrcodegenerator-cd.png deleted file mode 100644 index 2fb09b8562..0000000000 Binary files a/design/kernel/_images/kernel-qrcodegenerator-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-salt-generator-cd.png b/design/kernel/_images/kernel-salt-generator-cd.png deleted file mode 100644 index aa33e8b738..0000000000 Binary files a/design/kernel/_images/kernel-salt-generator-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-salt-generator-sd.png b/design/kernel/_images/kernel-salt-generator-sd.png deleted file mode 100644 index 497fb916d1..0000000000 Binary files a/design/kernel/_images/kernel-salt-generator-sd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-smsnotification-cd.png b/design/kernel/_images/kernel-smsnotification-cd.png deleted file mode 100644 index 44a5d6f28f..0000000000 Binary files a/design/kernel/_images/kernel-smsnotification-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-syncservices.jpg b/design/kernel/_images/kernel-syncservices.jpg deleted file mode 100644 index 97dbecdde6..0000000000 Binary files a/design/kernel/_images/kernel-syncservices.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-templatemanager-cd.png b/design/kernel/_images/kernel-templatemanager-cd.png deleted file mode 100644 index 17ad8b2ad9..0000000000 Binary files a/design/kernel/_images/kernel-templatemanager-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-transliteration-cd.png b/design/kernel/_images/kernel-transliteration-cd.png deleted file mode 100644 index 49f2514b82..0000000000 Binary files a/design/kernel/_images/kernel-transliteration-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-uin-ack-service.jpg b/design/kernel/_images/kernel-uin-ack-service.jpg deleted file mode 100644 index 5ba6f9feab..0000000000 Binary files a/design/kernel/_images/kernel-uin-ack-service.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel-uingenerator-cd.png b/design/kernel/_images/kernel-uingenerator-cd.png deleted file mode 100644 index d64f5a0b91..0000000000 Binary files a/design/kernel/_images/kernel-uingenerator-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-uingenerator-erd.png b/design/kernel/_images/kernel-uingenerator-erd.png deleted file mode 100644 index a64eda6d89..0000000000 Binary files a/design/kernel/_images/kernel-uingenerator-erd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-uingenerator.png b/design/kernel/_images/kernel-uingenerator.png deleted file mode 100644 index c4725992d8..0000000000 Binary files a/design/kernel/_images/kernel-uingenerator.png and /dev/null differ diff --git a/design/kernel/_images/kernel-utils-cd.png b/design/kernel/_images/kernel-utils-cd.png deleted file mode 100644 index be5363e50c..0000000000 Binary files a/design/kernel/_images/kernel-utils-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel-virusscanner-cd.png b/design/kernel/_images/kernel-virusscanner-cd.png deleted file mode 100644 index fff5b81a4a..0000000000 Binary files a/design/kernel/_images/kernel-virusscanner-cd.png and /dev/null differ diff --git a/design/kernel/_images/kernel_cbeffutil_classdiagram.gif b/design/kernel/_images/kernel_cbeffutil_classdiagram.gif deleted file mode 100644 index c2c259b009..0000000000 Binary files a/design/kernel/_images/kernel_cbeffutil_classdiagram.gif and /dev/null differ diff --git a/design/kernel/_images/kernel_keymanager_Flowchart_diagram.png b/design/kernel/_images/kernel_keymanager_Flowchart_diagram.png deleted file mode 100644 index 7850d760d0..0000000000 Binary files a/design/kernel/_images/kernel_keymanager_Flowchart_diagram.png and /dev/null differ diff --git a/design/kernel/_images/kernel_keymanager_Seq_IDA_Kernel_diagram.jpg b/design/kernel/_images/kernel_keymanager_Seq_IDA_Kernel_diagram.jpg deleted file mode 100644 index fbd29dbfd6..0000000000 Binary files a/design/kernel/_images/kernel_keymanager_Seq_IDA_Kernel_diagram.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel_keymanager_Seq_IDA_Kernel_diagram.png b/design/kernel/_images/kernel_keymanager_Seq_IDA_Kernel_diagram.png deleted file mode 100644 index 9d30f7bbc5..0000000000 Binary files a/design/kernel/_images/kernel_keymanager_Seq_IDA_Kernel_diagram.png and /dev/null differ diff --git a/design/kernel/_images/kernel_keymanager_Seq_Prereg_Reg_diagram.jpg b/design/kernel/_images/kernel_keymanager_Seq_Prereg_Reg_diagram.jpg deleted file mode 100644 index 58d14afead..0000000000 Binary files a/design/kernel/_images/kernel_keymanager_Seq_Prereg_Reg_diagram.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel_keymanager_Seq_Prereg_Reg_diagram.png b/design/kernel/_images/kernel_keymanager_Seq_Prereg_Reg_diagram.png deleted file mode 100644 index 24b3115e33..0000000000 Binary files a/design/kernel/_images/kernel_keymanager_Seq_Prereg_Reg_diagram.png and /dev/null differ diff --git a/design/kernel/_images/kernel_keymanager_Seq_Reg_RegProc_diagram.jpg b/design/kernel/_images/kernel_keymanager_Seq_Reg_RegProc_diagram.jpg deleted file mode 100644 index eb54e1bbfe..0000000000 Binary files a/design/kernel/_images/kernel_keymanager_Seq_Reg_RegProc_diagram.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel_keymanager_Seq_Reg_RegProc_diagram.png b/design/kernel/_images/kernel_keymanager_Seq_Reg_RegProc_diagram.png deleted file mode 100644 index a2a549c078..0000000000 Binary files a/design/kernel/_images/kernel_keymanager_Seq_Reg_RegProc_diagram.png and /dev/null differ diff --git a/design/kernel/_images/kernel_keymanager_Seq_TSP_IDA_diagram.jpg b/design/kernel/_images/kernel_keymanager_Seq_TSP_IDA_diagram.jpg deleted file mode 100644 index f7b65f4b02..0000000000 Binary files a/design/kernel/_images/kernel_keymanager_Seq_TSP_IDA_diagram.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel_keymanager_Seq_TSP_IDA_diagram.png b/design/kernel/_images/kernel_keymanager_Seq_TSP_IDA_diagram.png deleted file mode 100644 index f7b65f4b02..0000000000 Binary files a/design/kernel/_images/kernel_keymanager_Seq_TSP_IDA_diagram.png and /dev/null differ diff --git a/design/kernel/_images/kernel_keymanager_components_diagram.png b/design/kernel/_images/kernel_keymanager_components_diagram.png deleted file mode 100644 index 455465db95..0000000000 Binary files a/design/kernel/_images/kernel_keymanager_components_diagram.png and /dev/null differ diff --git a/design/kernel/_images/kernel_keymanager_connections_diagram.jpg b/design/kernel/_images/kernel_keymanager_connections_diagram.jpg deleted file mode 100644 index ee01dc9a44..0000000000 Binary files a/design/kernel/_images/kernel_keymanager_connections_diagram.jpg and /dev/null differ diff --git a/design/kernel/_images/kernel_keymanager_connections_diagram.png b/design/kernel/_images/kernel_keymanager_connections_diagram.png deleted file mode 100644 index ee01dc9a44..0000000000 Binary files a/design/kernel/_images/kernel_keymanager_connections_diagram.png and /dev/null differ diff --git a/design/kernel/_images/kernel_qrcodesample.png b/design/kernel/_images/kernel_qrcodesample.png deleted file mode 100644 index 785398812f..0000000000 Binary files a/design/kernel/_images/kernel_qrcodesample.png and /dev/null differ diff --git a/design/kernel/_images/packet_uploader_http.png b/design/kernel/_images/packet_uploader_http.png deleted file mode 100644 index 52dccb9758..0000000000 Binary files a/design/kernel/_images/packet_uploader_http.png and /dev/null differ diff --git a/design/kernel/_images/packet_uploader_http_maxsizeerror.png b/design/kernel/_images/packet_uploader_http_maxsizeerror.png deleted file mode 100644 index 5798732f93..0000000000 Binary files a/design/kernel/_images/packet_uploader_http_maxsizeerror.png and /dev/null differ diff --git a/design/kernel/_images/smsnotification-cd.png b/design/kernel/_images/smsnotification-cd.png deleted file mode 100644 index 923e8b5e88..0000000000 Binary files a/design/kernel/_images/smsnotification-cd.png and /dev/null differ diff --git a/design/kernel/_sources/kernel-idobjectvalidator.xml b/design/kernel/_sources/kernel-idobjectvalidator.xml deleted file mode 100644 index 1245cb8e5b..0000000000 --- a/design/kernel/_sources/kernel-idobjectvalidator.xml +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/design/kernel/_sources/kernel-idrepo-service.xml b/design/kernel/_sources/kernel-idrepo-service.xml deleted file mode 100644 index 0b2d39d774..0000000000 --- a/design/kernel/_sources/kernel-idrepo-service.xml +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/design/kernel/_sources/kernel-salt-generator.xml b/design/kernel/_sources/kernel-salt-generator.xml deleted file mode 100644 index 06acf6be73..0000000000 --- a/design/kernel/_sources/kernel-salt-generator.xml +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/design/kernel/admin-bulkupload.md b/design/kernel/admin-bulkupload.md deleted file mode 100644 index 3a55592d6a..0000000000 --- a/design/kernel/admin-bulkupload.md +++ /dev/null @@ -1,46 +0,0 @@ -# Bulk upload create and update - -#### Background - -The master data should be allowed to create or update the data in bulk. The user uploads a CSV file with the data. The first row represents the column names and the rest of the rows are the data which will be inserted into the table. The user selects the table from a drop down and selects the operation as Insert or Update or Upsert. Once the file is uploaded, the result messages are displayed in the front end. - - -#### Solution - - -**The key solution considerations are** - -- Following are the key considerations during the creation of master data, - - - The user uploads the CSV file with the data, which have to be inserted. The valid file format is CSV. - - - The uploaded file has the column names and their data. The first row is reserved for the columns and and remaing rows are for the data. - - - There are 2 types of functional parameters, which is set in the front end. - 1. When the user selects the table name from the drop down, "TABLE" parameter is set. - 2. When the user selects the type of actions, "Insert" or "Update" or "Upsert", the "FUNCTION" action is set in the front end. - - - The validator utility validates the following, - 1. The file format of the uploaded file - 2. The structure of the content is correct. - a. the first row is for the table column names - b. all the rows should have the equal number of column size - 3. The data type and the length validations are NOT validated in the code. This functionality is already available in the RDBMS - 4. The allowed date format should be ISO-8601. TODO: Date format have to be mentioned. The date is converted into UTC before saving into the database. - - - The table names are created in the Config server along with the primary keys and the level. The UI dropdown renders the table names from the Config server. The master_data configurations are stored as a JSON configuraion file. For example, [{"table_name":"", "primary_keys":[], "level":1}] - - - The levels starts from 1 to n. If the level is 1, these table date have to be inserted before the level 2. - - - The entire master_data configurations have to be cached on the first read and populated as the Java representation, for faster retrieval. The primary keys are used during the update functionaity. - - - The Insert operation uses a generic utility, which accepts the Table name. The column names corresponding to the Table name is fetched from the first row of the CSV file. The INSERT query is constructed for all the rows in the CSV records. The entire list of queries are executed and any exceptions are added to the ExceptionList. Example query for Insert is, "insert into tbl_name(col_1,col_2,col_3,col_4) values (?,?,?,?") - - - The Update operation uses a generic utility. This accepts the table name. The primary keys are identified by they master_data configuration file. This primary keys are used for update condition. The condition for the update operation is based only the primary keys. - - - In case of exceptions, the entire insertion activities are rolled back. The ExceptionList is given back to the UI, so that the errors are populated in the front end. - - - The disadvantage of this method is, the system uses the native query. - - - The advantage is, if we want to add any new Table, we don't need to create the JPA Entity classes. - \ No newline at end of file diff --git a/design/kernel/kernel-auditmanager-api.md b/design/kernel/kernel-auditmanager-api.md deleted file mode 100644 index b1bf4e6411..0000000000 --- a/design/kernel/kernel-auditmanager-api.md +++ /dev/null @@ -1,31 +0,0 @@ -# Audit API - -#### Background - -This library can be used to audit events and operations. It has method exposed to save event details as audit in database. - - -#### Solution - - -**The key solution considerations are** - -- Create an interface for AuditManager having required method declaration, which will be exposed to the other applications. - - -- Create a project which implements AuditManager to save event details as audit in database. - - -**Class Diagram** - - -![Class Diagram](_images/kernel-auditmanager-api-cd.png) - - - -**ERD** - - - -![ERD](_images/kernel-auditmanager-erd.png) - diff --git a/design/kernel/kernel-auditmanager.md b/design/kernel/kernel-auditmanager.md deleted file mode 100644 index 7934aea94d..0000000000 --- a/design/kernel/kernel-auditmanager.md +++ /dev/null @@ -1,77 +0,0 @@ -# Audit Service - -#### Background - -This service can be used to audit events and operations. Service has REST API exposed to save event details as audit in database. - - -#### Solution - - -**The key solution considerations are** - - -- Create a project which provides REST service to send event/action details. - - -- REST service can be used by any MOSIP module for auditing through HTTP client. - - -- Request body model for POST **/auditmanager/audits** - - -``` -{ - "eventId": "EventId12333", - "eventName": "Event Name1", - "eventType": "EventType3", - "actionTimeStamp": "2018-11-04T10:52:48.838Z", - "hostName": "Host Name6", - "hostIp": "10.89.213.89", - "applicationId": "ApplicationId89", - "applicationName": "Application Name22", - "sessionUserId": "SessionUserId22", - "sessionUserName": "Session UserName22", - "id": "id3333", - "idType": "idType333", - "createdBy": "user1", - "moduleName": "Module Name22", - "moduleId": "ModuleId22", - "description": "Description for event" -} -``` - - - -- Response body model for POST **/auditmanager/audits** - -``` -{ - "status": true -} -``` - - - - - - -**Class Diagram** - - - - - -![Class Diagram](_images/kernel-auditmanager-cd.png) - - - -**ERD** - - - - - -![ERD](_images/kernel-auditmanager-erd.png) - - diff --git a/design/kernel/kernel-auth-service.md b/design/kernel/kernel-auth-service.md deleted file mode 100644 index 8503cc198d..0000000000 --- a/design/kernel/kernel-auth-service.md +++ /dev/null @@ -1,29 +0,0 @@ -# Authorization in the Kernel webservices - -#### Background - -There are many webservices in MOSIP platform. All the webservices have the authentication part defined for the services. So, when a request comes to the webservice, the webservice takes the AuthToken in the request. If the AuthToken is not there in the request, the request is rejected right away. If the AuthToken is available, the role name is taken from the User claim. - -#### Solution - - - -**The key solution considerations are** - - -- The incoming requests should be screened for the AuthToken. If the AuthToken is not available, the request is rejected. Basically, all the incoming requests to the webservices should be filtered for Authentication and Authorization. - -- The role name have to be taken from the User claim in the AuthToken. The token should be sent to the AuthServer for validity and the user claim. - -- The authorization for this JIRA ID is handled in all the web services in the MOSIP kernel platform. - -- Java APIs is not checkec for Authorization. It is upto the users or callers responsibility to declare the roles which can use this Java API. - - -**Module diagram** - - - -![Module Diagram](_images/kernel-auth-fd.jpg) - - diff --git a/design/kernel/kernel-authn.md b/design/kernel/kernel-authn.md deleted file mode 100644 index 06dc6ef24a..0000000000 --- a/design/kernel/kernel-authn.md +++ /dev/null @@ -1,128 +0,0 @@ -# Authentication and Authorization in MOSIP platform - -#### Background - -The authentication and authorization in the MOSIP platform is handled in the a centralized place. OAuth 2.0 authorization framework is used as the standards.JSON Web Token(JWT) is used as a mechanism to implement OAuth2.0 framework. - -#### Solution - - - -**The key solution considerations are** - - -- A centralized AUTH SERVER (Auth Service with an IAM example Keycloak) handles the authorization request from the platform. - -- Once authenticated, the Auth Server sends back an AuthToken. - -- Auth token contains the information about the authenticated user and the meta data such as the expiration time, subject, issuer etc., - -- The Tokens are stored in the IAM for an individual user. In case of force logout scenario, this record will be deleted from this datastore. - -**Tokens Overview** - -![Tokens Overview](_images/kernel-authn-tokensoverview.jpg) - -**MOSIP Authentication and Authorization Principles** - -- No resource in the MOSIP can be accessed without Authentication and Authorization. - -- All the auth requests will go via the Auth Server. - -- The user data stores are abstracted behind the IAM. - -- The user data stores should be pluggable(If supported by configured IAM). - -- The platform's authentication method should support the heterogenous technologies and authentication should happen seamlessly. - - -**Different kinds of Actors in MOSIP platform** - -- Following are the identified actors in the authentication, - -1. Human users - -- These are the actual human users. - -- Users are provided with Username Password - -2. Clients - -- These are the applications like Registration client, IDA etc., - -- Applications are provided with client_credentials like clientid & secret-key - - -**Implementing Auth in the web services** - -- To ease out the development effort, an Auth Adapter component is distributed to the Web service developers. - -- The developer have to do 3 steps to plug in the Auth Adapter, - -1. Include the Auth Adapter jar file in the classpath. - -2. Inject the Auth Server details - -3. Annotate the server method which have to be protected with the "Role" information. - -Reference: [Auth Springboot User Guide](https://docs.mosip.io/platform/contribute/coding-standards/auth-springboot-user-guide) - - -**Implementing Auth in JavaFX application** - - -1. If the actual human user login, pass the username and password to the Auth server. - -2. In case of background serivces, pass the clientid & secret-key. - -3. Once authenticated, the client receives the Auth Token. Client stores them in a secured local store. - -4. In all the REST service calls to server, include the Auth Token. - -5. If the Auth token is expired, login again. - - -**Implementing Auth in Angular application** - -1. The human user logs in using the username and the password. - -2. Once authenticated, the client receives the Auth Token. Client stores them in a HTTP-only cookie. - -3. In all the REST service calls to server, Auth Token is included. - -4. If the Auth Token is expired, the page is redirected to the login page. - -5. A timer runs in the client side, which is lesser than the session timeout. This timer calls the "/authorize/validateToken" service. - -6. If the Auth Token comes insides the Sliding Window Threshold, a new Auth Token will be issued. - -![Angular authentication keeep alive flow](_images/kernel-authentication-keepalive-prereg.jpg) - -Reference: [Auth Angular User Guide](https://docs.mosip.io/platform/contribute/coding-standards/auth-angular-user-guide) - - -**Different realms in MOSIP(IN KEYCLOAK)** - -1. Pre-Registration --> preregistration - -2. Registration --> mosip - -3. Registration processor --> mosip - -4. IDA --> mosip - -5. Partner Management --> partnermanagement - - -**Pluggable IAM with Auth Service** - -1. Auth Service communicates with any plugable IAM with OPENID Endpoints. -2. All the features like token storage,user details storage, sessions etc are handled by IAM. -3. In case supported by IAM Auth Service will connect with different realms and do AUTHN and AUTHZ smoothly. - - -**Class Diagram** - - - -![Class Diagram](_images/auth-service-cd.png) \ No newline at end of file diff --git a/design/kernel/kernel-cbeffutil.md b/design/kernel/kernel-cbeffutil.md deleted file mode 100644 index 8bc420ccfb..0000000000 --- a/design/kernel/kernel-cbeffutil.md +++ /dev/null @@ -1,58 +0,0 @@ -# CBEFF util - -#### Background - -There are many types of biometric information can be collected as part of the MOSIP platform. There should be a common uniform mechanism to deal with the information. CBEFF is used to achieve this. CBEFF (Common Biometric Exchange Formats Framework) is a set of ISO standards defining an approach to facilitate serialisation and sharing of biometric data in an implementation agnostic manner. This is achieved through use of a data structure which both describes, and contains, biometric data. - -#### Solution - - -**The key solution considerations are** - - -- A standard format of the biometrics data have to be described. - -- The format should be standard across the ABIS utilities. - -- The XSD file will be loaded only once during initialization of the cbeffutil application. - -- The CBEFF file will be of XML format. The validations of any XML file have to be validated with the XSD in the MOSIP platform to confirm the validity of the document. - -- The incoming CBEFF file have to be converted to the Java object. The XSD also gets converted to Java representation. Once the conformity is validated, the data from the CBEFF file can be utilized. - -- The CBEFF contains the list of BIR(Biometric Identification Records) - -- The structure of the BIR is as follows, - - - BIR Biometric Identification Record - - version - - CEFFVersion - - BIRInfo - - BDB info(Biometric Data block) - - FormatOwner - - FormatType - - Creation Data - - Type - - Subtype - - purpose - - quality - - SB Info (Signature block) - - byte array of the ISO image - - byte array of signature image - - Any elements - -- The CBEFF util supports the following functions, - 1. Create CBEFF file. - 2. Update a CBEFF file. - 3. Search based on BDB info type - 4. Search based on BDB info sub type - -**High Level Diagram** -![High Level Diagram](_images/kernel-cbeffutil.jpg) - - -**Class diagram** - -![class Diagram](_images/kernel_cbeffutil_classdiagram.gif) - - diff --git a/design/kernel/kernel-dataaccess.md b/design/kernel/kernel-dataaccess.md deleted file mode 100644 index 86bd3ba1d6..0000000000 Binary files a/design/kernel/kernel-dataaccess.md and /dev/null differ diff --git a/design/kernel/kernel-datamapper.md b/design/kernel/kernel-datamapper.md deleted file mode 100644 index b7d8f056a8..0000000000 --- a/design/kernel/kernel-datamapper.md +++ /dev/null @@ -1,53 +0,0 @@ -## Data Mapper - -**Background** - - -This library can be used to facilitate data mapping between objects. It contain a series of methods that accept following parameters: - - -- Source Object - - -- Destination Object / Class - - -- Mapping Fields to include - - -- Fields to exclude - - -- Null mapping - - -- Default mapping - - -- Data converter - - - -**Solution** - - - -**The key solution considerations are** - - -- Create an interface for DataMapper and DataConverter having required method declaration, which will be exposed to the other applications. - - -- Create a project which will have Data Mapper implementation based on Orika API. - - -- DataMapper can be used in any MOSIP module for encryption and decryption after adding crypto implementation to their class path. - - - -**Class diagram** - - - -![Class Diagram](_images/kernel-datamapper-cd.png) - diff --git a/design/kernel/kernel-datavalidator.md b/design/kernel/kernel-datavalidator.md deleted file mode 100644 index 0d788f5f37..0000000000 --- a/design/kernel/kernel-datavalidator.md +++ /dev/null @@ -1,36 +0,0 @@ -# Data Validator - -**Background** - -This library can be used to validate several data such as Email,Phone etc based on configured business rules. - - -**Solution** - - - -**The key solution considerations are** - - -- Create an interface for DataValidator having required method declaration to validate data, which will be exposed to the other applications. - - -- Create a project which implements DataValidator for different types of data based on configured business rules. - - -- DataValidator can be used in any MOSIP module to validate data after adding DataValidator implementation to their class path. - - - -**Class Diagram** - - - -![Class Diagram](_images/kernel-datavalidator-cd.png) - - -** Validation Flow** - -![Flow Chart](_images/kernel-datavalidator-fc.png) - - diff --git a/design/kernel/kernel-dockerizesofthsm.md b/design/kernel/kernel-dockerizesofthsm.md deleted file mode 100644 index 2c06bc88b7..0000000000 --- a/design/kernel/kernel-dockerizesofthsm.md +++ /dev/null @@ -1,27 +0,0 @@ -# Dockerize SoftHSM - -#### Background - -The key manager uses the SoftHSM software to store the keys. The SoftHSM software also will be bundled as the part of key manager. An external volume will be mounted to the container, where the keys are stored. Each time the container gets started, the SoftHSM will be installed and it will load all the keys from the mount. - -#### Solution - - - -**The key solution considerations are** - - -- When the Key Manager starts, it have to install the associated SoftHSM software itself. - -- The old keys which had been created should be persisted each time. - -- When the key manager starts for the next time, it have to load all the old keys which was generated during the earlier sessions. - - -**Module diagram** - - - -![Module Diagram](_images/kernel-dockerizesofthsm.jpg) - - diff --git a/design/kernel/kernel-filesystemadapter.md b/design/kernel/kernel-filesystemadapter.md deleted file mode 100644 index c94daab1f1..0000000000 --- a/design/kernel/kernel-filesystemadapter.md +++ /dev/null @@ -1,26 +0,0 @@ -# File System adapter - -#### Background - -MOSIP system can use multiple file systems. For example, the files system can be HDFS, CEPH etc., A common adapter should be used to plugin whatever the file systems. - -#### Solution - - - -**The key solution considerations are** - - -- The file system implementation should not affect the base design. - -- When MOSIP decides to switch the file system, it should be configurable. - - - - -**Class diagram** - - -![Module Diagram](_images/kernel-fsadapter-cd.png) - - diff --git a/design/kernel/kernel-id-generators-algorithm.md b/design/kernel/kernel-id-generators-algorithm.md deleted file mode 100644 index eb08c208bb..0000000000 --- a/design/kernel/kernel-id-generators-algorithm.md +++ /dev/null @@ -1,31 +0,0 @@ -# ID generation algorithm - -#### Background - -There are many ID generators inside MOSIP. To generate the ID, Secured Random generators are used. When multiple concurrent requests are there to generate the ID generator, there can be a performance issue. So, an algorithm have to be defined to accomodate the concurrent ID generate requests. - -#### Solution - - - -**The key solution considerations are** - - -- Performance is the key thing during the ID generation. - -- Generate a single secure random number and keep that securely. - -- Have an incremental counter value, which is also a Secure Random number. Save this it to the datbaase. - -- Whenever a new request for the ID generation gets received, increment the counter and use that as a key to the AES algorithm and encrypt the initial secure random number - - -- Convert the Hash to the number and provide this as the ID. - - -**Module diagram** - - - -![Module Diagram](_images/kernel-id-generators-algorithm.jpg) - diff --git a/design/kernel/kernel-idgenerator-machineid.md b/design/kernel/kernel-idgenerator-machineid.md deleted file mode 100644 index 44ee0682c3..0000000000 --- a/design/kernel/kernel-idgenerator-machineid.md +++ /dev/null @@ -1,32 +0,0 @@ -# Machine ID Generator - -#### Background - -A Machine ID can be generated for various machines in the MOSIP platform. Once a unique number is generated, this Machine ID is assigned against individual machines. - -#### Solution - - - -**The key solution considerations are** - - -- An unique number have to be generated for each request. - -- The various configurations such as the starting number, incremental value, restricted numbers etc., are retrieved from the config server and injected to the library. - - -**Module diagram** - - - -![Module Diagram](_images/kernel-idgenerator-machineid.jpg) - - -**Class diagram** - - - -![Class Diagram](_images/kernel-idgenerator-cd.png) - - diff --git a/design/kernel/kernel-idgenerator-mispid.md b/design/kernel/kernel-idgenerator-mispid.md deleted file mode 100644 index fc53cf7667..0000000000 --- a/design/kernel/kernel-idgenerator-mispid.md +++ /dev/null @@ -1,30 +0,0 @@ -# MISPID Generator - -#### Background - -A MISP ID can be generated for each MISP. There are configurations during the MISP ID generations such as only numeric, length, restricted numbers etc, - -#### Solution - - - -**The key solution considerations are** - - -- An unique number have to be generated for each request. - -- The counter have to be maintained in a persistent storage, so that when next request comes, this counter is incremented for the next generated number - - -**Module diagram** - - - -![Module Diagram](_images/kernel-MISPIDGenerator.jpg) - - -**Class diagram** - - - -![Class Diagram](_images/kernel-idgenerator-cd.png) diff --git a/design/kernel/kernel-idgenerator-prid.md b/design/kernel/kernel-idgenerator-prid.md deleted file mode 100644 index 228ef9ab34..0000000000 --- a/design/kernel/kernel-idgenerator-prid.md +++ /dev/null @@ -1,40 +0,0 @@ -# PRID Generator - -#### Background - -The Pre-registration application needs to display an acknowledgement number when somebody pre-registers for an enrolment. - -#### Solution - - - -**The key solution considerations are** - - -- Generate an Id numeric id of configured length and policy. - - -- The configurations of the PRID is injected to the PRID generator module by the Pre-Registration module. - - -- The PRID generator is included in the Pre-Registration client module as Java Jar file. - - - -**Module diagram** - - - -![Module Diagram](_images/Kernel-idgenerator-prid.jpg) - -** ID Generator Algotithm ** - - [ID Generator Algotithm](kernel-id-generators-algorithm.md) - - -**Class diagram** - - - -![Class Diagram](_images/kernel-idgenerator-cd.png) - diff --git a/design/kernel/kernel-idgenerator-regcenterid.md b/design/kernel/kernel-idgenerator-regcenterid.md deleted file mode 100644 index 4b2b338c98..0000000000 --- a/design/kernel/kernel-idgenerator-regcenterid.md +++ /dev/null @@ -1,32 +0,0 @@ -# Registration center ID Generator - -#### Background - -A center ID can be generated for various centers in the MOSIP platform. Once a unique number is generated, this Center ID is assigned against a Registration Center. - -#### Solution - - - -**The key solution considerations are** - - -- An unique number have to be generated for each request. - -- The various configurations such as the starting number, incremental value, restricted numbers etc., are retrieved from the config server and injected to the library. - - -**Module diagram** - - - -![Module Diagram](_images/kernel-idgenerator-regcenterid.jpg) - - -**Class diagram** - - - -![Class Diagram](_images/kernel-idgenerator-cd.png) - - diff --git a/design/kernel/kernel-idgenerator-service.md b/design/kernel/kernel-idgenerator-service.md deleted file mode 100644 index c02ba06bc5..0000000000 --- a/design/kernel/kernel-idgenerator-service.md +++ /dev/null @@ -1,43 +0,0 @@ -# Id Generator - UIN and VID - -#### Background - -UINs and VIDs have to generted satisfying the necessary criteria defined by the country. There can be millions of UINs and VIDs have to be generated during the lifetime of MOSIP. The time it takes to generate these unique IDs are based on the criteria and conditions placed on them. -UINs are needed when a new UIN is assigned to an individual. VIDs can be generated and used at will by the inviduals. - -#### Solution - - -**The key solution considerations in UIN generations are** - -- Following are the key considerations for the UIN generation functionality, - 1. Maintaining a buffer pool: - A buffer pool of pre-generated UINs have to be maintained. The recommended pool size is 4 times the size of expected UINs, which have to be issued daily. This pool will help the Registration Processor to get the UIN as soon as possible. - 2. Vert.x implementation - There are 2 verticles which will be maintained. One will generate the UIN and another will clear up the used UINs to another table. Hence, the transaction table, which issues the UIN will be kept low on size. - - The UinGeneratorVerticle verticle generates the UINs and keeps the required pool size. The Registration Processor is served with the UINs and when the pool size shriks less than the threshold size, again the UINs are regenerated into the UIN pool. - - ![UIN Generator](_images/UINGenerator.jpg) - - The UinTransferVerticle sweeps through the "uin" database table and finds the used UINs based on the uin_status column. And moves all of these UINs to "uin_assigned" database table. - - ![UIN Pool](_images/UIN_Pool.jpg) - - - - -**The key solution considerations in VID generations are** - -- Following are the key considerations for the VID generation functionality, - 1. Maintaining a buffer pool: - A buffer pool of pre-generated VIDs have to be maintained. The pool size is based on the usage trend. But generally 50% of the total UINs is recommended as a pool size. - - 2. Vert.x implementation - There are 3 verticles which will be maintained. The verticles are used for 1. VID checker, 2. VID generator and 3. Expiring VIDs. - - The VidPoolCheckerVerticle verticle checks whether the existing pool size is of the size of necessary configured pool size. If not, VidPopulatorVerticle verticle kicks in to generate the necessary VIDs. A lock is acquired when the VidPopulatorVerticle is running. - - ![VID Generator](_images/VIDGenerator.jpg) - - The VidExpiryVerticle verticle recycles the expired VIDs. It returns back the expired VIDs to unused state and can be recycled. Currently, there is no cool-off period configured. Hence, the expired VIDs will be returned to available pool immediately. \ No newline at end of file diff --git a/design/kernel/kernel-idgenerator-statictoken.md b/design/kernel/kernel-idgenerator-statictoken.md deleted file mode 100644 index 6c39563a8f..0000000000 --- a/design/kernel/kernel-idgenerator-statictoken.md +++ /dev/null @@ -1,31 +0,0 @@ -# Static Token generator - -#### Background - -The partners have to store the individual information in their database. The partner cannot store the UIN or VID. Hence, there should be a service in MOSIP which will generate a Static Token for the requested UIN and Partner ID combination. - -#### Solution - - - -**The key solution considerations are** - -- Following are the steps to digitally sign the services in the system, - -1. There should be a RESTful web service which will accept the request input as UIN and Partner ID. - -2. The service will apply the following algorithm to calculate the Token ID and return back. - - - SHA256( SHA256(UIN + SALT_1) + partner code + SALT_2). - -3. The SALT_1 and SALT_2 values are retrieved from the config server. - -4. The response will contain only the Static Token generated. - -5. The same Static Token will be returned for every request for the same UIN and Partner ID combination. - -NOTE: This requirement and design have to be reviewed properly, since this was done in a hurry. Questions are, 1. Where this service will be hosted? Currently, this is in Kernel. But, this might have to be moved to the UIN Repository service space. Otherwise, the user have to pass a VID to this service and UIN is fetched to calculate the static token 2. Will the Salts be rotated. If this is rotated, we might need a database to track these changes. 3. Do we need to really have a static algorithm for this? If UIN is used and if the Salts are compromised, the PII data can be compromised. However, the risk can be minimized by rotating the Salts. 4. Roles who can access this service have to be defined. 5. Do we need to audit the requests? 6. From which system, the UIN is passed to this service? How come that system gets the UIN? Has that system guarantees the data privacy of an individual? - - - - diff --git a/design/kernel/kernel-idgenerator-useragency.md b/design/kernel/kernel-idgenerator-useragency.md deleted file mode 100644 index 03b52a58a8..0000000000 --- a/design/kernel/kernel-idgenerator-useragency.md +++ /dev/null @@ -1,27 +0,0 @@ -# User Agency ID Generator - -#### Background - -Each User Agency can have various ids. The IDs are generated by this module. The module will generate a jar file which other project will add in the classpath. - -#### Solution - - - -**The key solution considerations are** - - -- An unique number have to be generated for each request. - -- The various configurations such as the starting number, incremental value, restricted numbers etc., are retrieved from the config server and injected to the library. - -- The libary which is generated should be a jar file. This jar file can be used by other modules in their classpah. - - -**Module diagram** - - - -![Module Diagram](_images/kernel-idgenerator-useragency.jpg) - - diff --git a/design/kernel/kernel-idobjectvalidator.md b/design/kernel/kernel-idobjectvalidator.md deleted file mode 100644 index eb238b944f..0000000000 --- a/design/kernel/kernel-idobjectvalidator.md +++ /dev/null @@ -1,84 +0,0 @@ -# ID Object Validator: - -## 1. Background - -This library can be used to validate ID Object. It performs below 4 validations. -1. Validate input ID JSON String against ID Schema configured for the country -2. Validate ID attributes against configured regex patterns -3. Validate ID attributes like Gender, Language, DocumentType, Location, etc. against Master Data APIs -4. Validate Country-specific ID attributes - -**Note -** -1. This IDObject Validator needs to be modified if there is any change made to the ID Object for any country -2. The ID Attributes added in ID Schema are for reference purpose. Additional ID attributes for a country can be added -3. If any additional attributes added or existing one removed from ID Schema, corresponding validations needs to be modified in the IDObject Validator - - -***1.1.Target Users -*** -- Pre-Registration and Registration Processor can use ID Object Validator to validate ID Object against ID Schema configured for the country, and data of few ID attributes against Master Data stored for the country -- Registration Client can use ID Object Validator to validate created ID Object against ID Schema for the country, verification for ID Attributes for Registration Processor will happen against their local database - - -***1.2. Key Non-Functional Requirements -*** -- Logging : - - Log all exceptions along with error code and short error message - - As a security measure, Individual’s UIN should not be logged -- Audit : - - Audit all transaction details in database - - Individual’s UIN should not be audited -- Exception : - - Any error in storing or retrieval of Identity details should be handled with appropriate error code and message in the response -- Security : - -## 2. Solution: - -The key solution considerations are - -- Create an interface IDObjectValidator with a method to validate input ID JSON -- Create a project which implements IDObjectValidator based on any opensource json-schema-validator. Current implementation uses Draft v7 specifications of [JSON Schema](http://json-schema.org/) -- IDObjectValidator can be used in any MOSIP module to validate ID Object, after adding its jar in their class path - - -**2.1. Class Diagram:** -![kernel_idobjectvalidator_classdiagram](_images/kernel-idobjectvalidator-cd.PNG) - -Below are the functional details of each of the above validation classes - -1. **IdObjectSchemaValidator** - This *generic* validator class performs structural validation of input ID JSON against ID Schema configured for the country. It also validates mandatory ID Attributes configured for each module using ValidationCase as an input scenario. These mandatory ID attributes per module is configured in [global](https://github.com/mosip/mosip-config/blob/master/config-templates/application-env.properties) properties. - -***Usage of IdObjectSchemaValidator-*** -- Autowire IdObjectSchemaValidator in your class -- Configure mandatory attribute to be validated for a scenario in a module in global properties as below - -*mosip.kernel.idobjectvalidator.mandatory-attributes.[module-name].[scenario-name]=[comma-separated-ID-attributes]* -Sample configuration of mandatory ID Attributes for New Registration in ID Repository module is - -*mosip.kernel.idobjectvalidator.mandatory-attributes.id-repository.new-registration=fullName,dateOfBirth,gender* - -Below are the list of scenarios supported for mandatory ID Attribute validation - -- New Registration -- Child Registration -- UIN Update -- Lost UIN - -2. **IdObjectPatternValidator** - This *generic* validator class performs pattern validation of ID attributes configured in [global](https://github.com/mosip/mosip-config/blob/master/config-templates/application-env.properties) properties. - -***Usage of IdObjectPatternValidator-*** -- Autowire IdObjectPatternValidator in your class -- Add pattern to be validated in global properties as below - -*mosip.id.validation.identity.[id-attribute]=[validation-pattern]* -Sample configuration of pattern for an ID Attribute is - -*mosip.id.validation.identity.phone=^([6-9]{1})([0-9]{9})$* - -3. **IdObjectReferenceValidator** - This validator class contains specific validations for ID Attribute like validating gender attribute against master-data. This customizable validation class will part of kernel-ref-idobjectvalidator in [mosip-ref-impl](https://github.com/mosip/mosip-ref-impl) repository. Any country can chose to customize these validations based on their ID Attributes. - -***Usage of IdObjectReferenceValidator -*** -- Add *mosip.kernel.idobjectvalidator.referenceValidator* in module-specific properties file with fully qualified classname of this class as below - -*mosip.kernel.idobjectvalidator.referenceValidator=io.mosip.kernel.idobjectvalidator.impl.IdObjectReferenceValidator* -**Note** - We support only **one** Reference Validator from classpath. -- Run module jar with absolute path of the reference validator jar as below - -*java –Dloader.path= -jar id-repository-identity-service.jar* -- In order to run module jar in a docker container, either physically add the jar in docker container or fetch it from a remote repository like below - -ADD http://13.71.87.138:8040/artifactory/libs-release-local/io/mosip/kernel-ref-IdObjectValidator.jar kernel-ref-IdObjectValidator.jar - -4. **IdObjectCompositeValidator** - This is a composite validator which can be autowired when all the above 3 validators are required. - -**2.2. Sequence Diagram:** -![kernel_idobjectvalidator_classdiagram](_images/kernel-idobjectvalidator-sd.PNG) - diff --git a/design/kernel/kernel-idvalidator.md b/design/kernel/kernel-idvalidator.md deleted file mode 100644 index 54c2418801..0000000000 --- a/design/kernel/kernel-idvalidator.md +++ /dev/null @@ -1,35 +0,0 @@ -# ID Validator - -#### Background - -This library can be used to validate several IDs such as UIN,VID,PRID,TSPId etc based on configured business rules. - - -#### Solution - - - -**The key solution considerations are** - - -- Create an interface for IDValidator having required method declaration to validate ID, which will be exposed to the other applications. - - -- Create a project which implements IDValidator for different types of IDs based on configured business rules. - - -- IDValidator can be used in any MOSIP module to validate ID after adding IDValidator implementation to their class path. - - - -**Class Diagram** - - - -![Class Diagram](_images/kernel-idvalidator-cd.png) - - -** Validation Flow** - -![Flow Chart](_images/kernel-idvalidator-fc.png) - diff --git a/design/kernel/kernel-keygenerator.md b/design/kernel/kernel-keygenerator.md deleted file mode 100644 index 4fa40b4d93..0000000000 --- a/design/kernel/kernel-keygenerator.md +++ /dev/null @@ -1,30 +0,0 @@ -# Symmetric key and Asymmetric key pair Generator - -#### Background - -This library can be used to generate symmetric secret key and asymmetric public-private key pair based on defined set of algorithms. It contains two methods which provide symmetric key and asymmetric key pair. - - -#### Solution - - - -**The key solution considerations are** - - -- Create an interface for KeyGenerator having required method declaration to provide symmetric/asymmetric keys, which will be exposed to the other applications. - - -- Create a project which implements KeyGenerator with set of algorithms based on Bouncycastle API. - - -- KeyGenerator can be used in any MOSIP module for to generate symmetric/asymmetric keys after adding KeyGenerator implementation to their class path. - - - -**Class Diagram** - - - -![Class Diagram](_images/kernel-keygenerator-cd.png) - diff --git a/design/kernel/kernel-keymanager-softhsm.md b/design/kernel/kernel-keymanager-softhsm.md deleted file mode 100644 index fc527bb9ca..0000000000 --- a/design/kernel/kernel-keymanager-softhsm.md +++ /dev/null @@ -1,39 +0,0 @@ -# Keymanager Softhsm: - -## Background - -This library can be used to interact with SoftHsm key store. It contains several methods to store and retrieve Keys and Certificates as: - -1. Get All Alias -2. Get/Delete key for specific Alias -3. Store/Get Symmetric key for specific Alias -4. Store/Get Asymmetric key for specific Alias -5. Get Private key for specific Alias -6. Get Public key for specific Alias -7. Get Certificate for specific Alias - - -## Solution: - -**The key solution considerations are** - - -- Create an interface KeyStore having required method declaration to to store and retrieve Keys and Certificates, which will be exposed to the other applications. - - -- Create a project which implements KeyStore interface. - - -- KeyStore can be used in any MOSIP module to validate after adding its implementation to their class path. - - -[dockerizesofthsm](kernel-dockerizesofthsm.md) - - -**Class Diagram:** - - - -![kernel_keymanager-softhsm_classdiagram](_images/kernel-keymanager-softhsm-cd.png) - - diff --git a/design/kernel/kernel-keymanager.md b/design/kernel/kernel-keymanager.md deleted file mode 100644 index 1a0d9f95bd..0000000000 --- a/design/kernel/kernel-keymanager.md +++ /dev/null @@ -1,330 +0,0 @@ -# Encryption and Decryption - -#### Background - -This library can be used to encrpyt and decrypt data based on defined set of algorithms. It contains several methods that accept symmetric key and asymmetric key pairs for encryption and decryption. - -- Symmetric key - - -- Asymmetric public key - - -- Asymmetric private key - - - -#### Solution - - - -**The key solution considerations are** - - -- Create an interface for encryptor and decryptor having required method declaration, which will be exposed to the other applications. - - -- Create a project which implements encryptor and decryptor with set of algorithms based on Java Crypto Extension (JCE) API. - - -- Encryptor and Decryptor can be used in any MOSIP module for encryption and decryption after adding crypto implementation to their class path - - - -** Class Diagram** - - - -![Class Diagram](_images/kernel-cryptomanager.png) - - -# Key Manager - -**1. Background** - -In the MOSIP platform, there are many types of keys used in various modules. The users might book an appointment using the Pre-Registration module. During this the users uses the public key to encrypt the message and Pre-Registration module uses the private key to decrypt the message. When these packets are pulled by the Registration module, the Registration module can use the public key of Pre-Registration module to establish the connection. - -The keys should be maintained and managed as a separate entity apart from the actual modules. These keys are rotated based on a specific security policy. - -![Connections Diagram](_images/kernel_keymanager_connections_diagram.png) - -**2. Solution** - -The key solution considerations are - -- Following are the major components in the Key Manager, - 1. Key generation algorithms. - 2. Key rotation module, which will generate the new keys and map to the application for a specific timeframe. - 3. A RESTful micro service, which will serve the public keys of the requested application. - 4. Validator module to check the authenticity of the caller. - 5. Key store to store the keys. - -![Components Diagram](_images/kernel_keymanager_components_diagram.png) - -- The sequence of the key generations and the rotation of the keys are as follows, - 1. During the initial setup, the key rotation duration are configured. - 2. Applications are associated to the key rotation configuration - 3. The key expiration check is done during the request time. - 4. The decryption of data happens inside the key manager module. - 5. The public key is returned to the requester. - -***2.1 Sequence diagrams*** - -Following are the various sequences of the flow between the various modules. The following diagrams represents any 2 applications interactions at any point of time. - -****2.1.1 Pre-registration --> Registration**** - -Following is the sequence diagram of the communication between the Pre-registration and the Registration application, - -![Sequence Diagram](_images/kernel_keymanager_Seq_Prereg_Reg_diagram.png) - -****2.1.2 Registration --> Registration Processor**** - -Following is the sequence diagram of the communication between the Registration and the Registration Processor application, - -![Sequence Diagram](_images/kernel_keymanager_Seq_Reg_RegProc_diagram.png) - -****2.1.3 TSP --> IDA:**** - -Following is the sequence diagram of the communication between the TSP and the IDA application, - -![Sequence Diagram](_images/kernel_keymanager_Seq_TSP_IDA_diagram.jpg) - -****2.1.4 IDA --> Kernel**** - -Following is the sequence diagram of the communication between the IDA and the Kernel application, - -![Sequence Diagram](_images/kernel_keymanager_Seq_IDA_Kernel_diagram.png) - -Following is the flow chart for the step "certValidityCheck()", - -![Sequence Diagram](_images/kernel_keymanager_Flowchart_diagram.png) - - -**2.2 Encryption and Decryption Steps (CryptoManager)** - -**Encryption** - -1. Request received for data encryption along with applicationId, ReferenceId(optional) and the timestamp(current timestamp of encryption). ReferenceId could be multiple instance of entity within Application such as MachineId and TspID for REGISTRATION and IDA respectively. Data to be encrypted is sent as Base64 encoded. Additional salt can bes sent in Base64 encoded to be used for initialization vector (IV) for symmetric encryption. -2. Generate session symmetric key for the request and encrypt the data using it. -3. Use/Request for Application and ReferenceId specific public key (based on timestamp) and encrypt symmetric key using it. -4. Combined the encrypted data and symmetric key separated by key-splitter and respond back as Base64 encoded string. - -**Decryption** - -1. Request received for encrypted data decryption along with applicationId, ReferenceId(optional) and the timestamp(encryption timestamp). -2. Decode the content from Base64 encoded string and split the data and symmetric key. -3. Pass the symmetric key along with ApplicationId,ReferenceId and Timestamp(encryption timestamp) to KeyManager service to decrypt. If additional salt was sent in Base64 encoded to be used for initialization vector (IV) for symmetric encryption, same salt need be sent for decryption. -4. Use the decrypted symmetric key to decrypt data and respond back. - - - -**2.3 Asymmetric key storage and validation (KeyManager)** - -**Get Public Key** - -1. Request received for public key for the specific ApplicationId, ReferenceId(optional) and the timestamp. ReferenceId could be multiple instance of entity within Application such as MachineId and TspID for REGISTRATION and IDA respectively.If ReferenceId is not present fetch the public key from SoftHsm for ApplicationId else fetch it from KeyStore DB. - -2. If ReferenceId is not present, Fetch the key-alias for the ApplicationId at given timestamp from KeyAlias DB. Fetch the public key from SoftHSM for the key-alias and respond back.If there is no key-alias for ApplicationId and Timestamp then generate a new KeyPair based on expiry and overlapping policy and store in SoftHSM. - -3. If ReferenceId is present, Fetch the key for the ApplicationId/ReferenceId at given timestamp from KeyStore DB and respond back with public key. If there is no key present for given ReferenceId and Timestamp then generate a new KeyPair based on expiry and overlapping policy and encrypt the private key using ApplicationId's public key (using master key-alias) and store in KeyStore and KeyAlias DB. - - -**Decrypt Symmetric Key** - -1. Request received for encrypted data(Symmetric Key) decryption along with specific ApplicationId, ReferenceId(optional) and the timestamp(encryption timestamp). ReferenceId could be multiple instance of entity within Application such as MachineId and TspID for REGISTRATION and IDA respectively. If ReferenceId is not present decrypt the data using ApplicationId's private key else use ReferenceId's Private key for decryption. - -2. If ReferenceId is not present,Fetch the Private key of ApplicationId from SoftHSM and decrypt the data(Symmetric Key). - -3. If ReferenceId is present, Fetch the key for the ApplicationId/ReferenceId at given timestamp(encryption timestamp) from KeyStore DB and decrypt the ReferenceId's private key with ApplicationId's private key (using master key-alias). Use decrypted ReferenceId's private key to decrypt the data(Symmetric Key). - - -**ERD** - -![Module Diagram](_images/kernel-keymanager-erd.png) - - -# License key generation and validation - -#### Background - -TSPs call the IDA to authenticate the Individuals. There can be various service calls such as Demographic, biometric based authentications. Each service calls have the permission associated. When a service call comes to the IDA, a request is sent to the Kernel module to retrieve the permissions for the License Key. -This service can be used to generate,assign permission and validate License key based on expiry date, suspended or blocked for a TSP Id. Service has REST API exposed for fetching and validating License key. - -#### Solution - - - -**The key solution considerations are** - -- A service is defined to receive the request to generate a new license key for a TSP. - -- Another service associates the license key with the list of permissions. - -- Another service accepts the incoming requests from the TSPs should be validated for authentication. Check whether the TSPs has the valid license. - -- Then the permissions are retrieved for the identified TSPs. - -- Return the permissions associated with the License keys. - -**Module diagram** - - - -![Module Diagram](_images/LicenseKeyGeneration.jpg) - - - - -- Request body model for licenseKey generate POST **/license/generate** - - -``` -{ - "licenseExpiryTime": "2019-03-07T10:00:00.000Z", - "tspId": "9837" -} -``` -**Example Response** - -```JSON -{ - "licenseKey": "gR7Mw7tA7S7qifkf" -} -``` - -- Request body model for licenseKey-Tsp map POST **/license/permission** - - -```JSON -{ - "licenseKey": "gR7Mw7tA7S7qifkf", - "permissions": [ - "OTP Trigger","OTP Authentication" - ], - "tspId": "9837" -} -``` -**Example Response** - -```JSON -{ - "status": "Mapped License with the permissions" -} -``` - - -- Request for Validation and Permissions Get **/license/permission** - - -``` -license/permission?licenseKey=gR7Mw7tA7S7qifkf&tspId=9837 -``` - -**Example Response** - -```JSON -{ - "permissions": [ - "OTP Trigger", - "OTP Authentication" - ] -} -``` - - -**Class Diagram** - - - -![Class Diagram](_images/kernel-licensekeymanager-cd.png) - - -**ERD** - - - -![ERD](_images/kernel-licensekeymanager-erd.png) - - - - - -# Digital signatures - -#### Background - -Digital signatures are needed in various places of the MOSIP system. Few example can be, in the Registration client, the operator like to digitally sign the packet. Or, every request from the server can be digitally once again signed by the server. - -#### Solution - - - -**The key solution considerations are** - -- Following are the steps to digitally sign the services in the system, - -1. Create a hash for the web service response using cryptomanager APIs. - -2. Encrypt the hash using the existing "/cryptomanager/v1.0/encrypt" service can be used. In the "referenceId", the value as "HASH" can be passed. - -3. Once the has is encrypted, the encrypted hash is sent as part of the header. - -4. The client is supposed to have the latest public key which is active on that date. - -5. Signature have to be enforced in the all the API's which the server hosts. - -- Create a common utility java project which creates the signature. - -- Use this common utility project, attach the signature in all the response. - - - -**Module diagram** - - - -![Module Diagram](_images/kernel-cryptography-digitalsignature.jpeg) - - -# TokenID Generator - -#### Background - -A Token ID can be requested by an Indivudual against his UIN. A library should be able to generate an unique ID and assign it against a UIN. When a request comes to retrieve a Token ID agains UIN, the system should return a mapping, if already exists. Otherwise, a mapping should be created and returned. - -#### Solution - - - -**The key solution considerations are** - - -- The API will generate a unique number against the configurations. - -- The configurations are injected by the caller of the module. These configurations are defined in the config server. - - -**Module diagram** - - - -![Module Diagram](_images/kernel-idgenerator-tokenid.jpg) - -** ID Generator Algotithm ** - - [ID Generator Algotithm](kernel-id-generators-algorithm.md) - - - - -**Class diagram** - - - -![Class Diagram](_images/kernel-idgenerator-cd.png) - - - - - diff --git a/design/kernel/kernel-logger.md b/design/kernel/kernel-logger.md deleted file mode 100644 index 7c7c899fc2..0000000000 --- a/design/kernel/kernel-logger.md +++ /dev/null @@ -1,39 +0,0 @@ -# Logger - -#### Background - -This application can be used to log execution steps and errors with customized messages and format. It has three different options for logging as: - - -- Console - - -- File - - -- Rolling File - - - -#### Solution - - - -**The key solution considerations are** - - -- Create an interface for Logger having required method declaration to provide logging functionalities, which will be exposed to the other applications. - - -- Create a project which implements Logger based on Logback API. - - -- Logger can be used in any MOSIP module for for logging after adding KeyGenerator implementation to their class path. - - -**Class Diagram** - - - -![Class Diagram](_images/kernel-logger-cd.png) - diff --git a/design/kernel/kernel-masterdata.md b/design/kernel/kernel-masterdata.md deleted file mode 100644 index eae30d8f98..0000000000 --- a/design/kernel/kernel-masterdata.md +++ /dev/null @@ -1,146 +0,0 @@ -# Sync services - -#### Background - -This service can be used for Create, Fetch, Update and Delete operation on Master Data Entities. - -#### Solution - - - -**The key solution considerations are** - -- Create a project which provides REST service to perform CRUD on Master Data Tables. - - -- REST service can be used by any MOSIP module through HTTP client. - - - - -**Class Diagram** (Sample for one entity) - -![CD](_images/kernel-masterdata-cd.png) - - -**ERD** - -![Module Diagram](_images/kernel-masterdata-erd.png) - -# Applicant Type - -#### Background - -There can be multiple applicant types in the MOSIP system. An applicant type is the combination of Individual type, Gender and Age group. There are only few fixed Applicant types will be available for the 1.0 version of MOSIP. Once the module receives the criteria for an Applicant type, the code is derived in the Java code. Then this code is used to get the "Document category" and the "Document type" associated with the "Document category". The "Document category" and the "Document type" is maintained in the database. - -#### Solution - - - -**The key solution considerations are** - - -- There are 2 services in this module. One will return back the "Applicant type" based on the Individual type, Gender and Age group. The other service will return the Document category and the Document type for the Applicant type. - -- The Applicant type definition is there in the Java code. - -- The Applicant type and the Document mapping is there in the database. - -**The inputs which have to be provided are:** - -We need to provide the Map and the key, value pairs are as follows : - -individualTypeCode: mandatory - -dateofbirth: mandatory - -genderCode: mandatory - -biometricAvailable: optional - - -*Valid values for above keys are as follows :* - -individualTypeCode: FR,NFR - -dateofbirth: must be in this pattern yyyy-MM-dd'T'HH:mm:ss.SSS'Z' - -genderCode: MLE,FLE - -biometricAvailable: true,false - - -**Rules based on above input provided** - -``` - if (itc.equals(FOREIGNER) && genderType.equals(MALE) && ageCode.equals(CHILD) && !isBioExPresent){ - // 1 - return "001"; - } else if (itc.equals(FOREIGNER) && genderType.equals(MALE) && ageCode.equals(ADULT) && !isBioExPresent){ - // 2 - return "002"; - - } else if (itc.equals(NON_FOREIGNER) && genderType.equals(MALE) && ageCode.equals(CHILD) && !isBioExPresent){ - // 3 - return "003"; - - } else if (itc.equals(NON_FOREIGNER) && genderType.equals(MALE) && ageCode.equals(ADULT) && !isBioExPresent){ - // 4 - return "004"; - - } else if (itc.equals(FOREIGNER) && genderType.equals(FEMALE) && ageCode.equals(CHILD) && !isBioExPresent){ - // 5 - return "005"; - - } else if (itc.equals(FOREIGNER) && genderType.equals(FEMALE) && ageCode.equals(ADULT) && !isBioExPresent){ - // 6 - return "006"; - - } else if (itc.equals(NON_FOREIGNER) && genderType.equals(FEMALE) && ageCode.equals(CHILD) && !isBioExPresent){ - // 7 - return "007"; - - } else if (itc.equals(NON_FOREIGNER) && genderType.equals(FEMALE) && ageCode.equals(ADULT) && !isBioExPresent){ - // 8 - return "008"; - - } else if (itc.equals(FOREIGNER) && genderType.equals(MALE) && ageCode.equals(CHILD) && isBioExPresent){ - // 9 - return "009"; - - } else if (itc.equals(FOREIGNER) && genderType.equals(MALE) && ageCode.equals(ADULT) && isBioExPresent){ - // 10 - return "010"; - - } else if (itc.equals(NON_FOREIGNER) && genderType.equals(MALE) && ageCode.equals(CHILD) && isBioExPresent){ - // 11 - return "011"; - - } else if (itc.equals(NON_FOREIGNER) && genderType.equals(MALE) && ageCode.equals(ADULT) && isBioExPresent){ - // 12 - return "012"; - - } else if (itc.equals(FOREIGNER) && genderType.equals(FEMALE) && ageCode.equals(CHILD) && isBioExPresent){ - // 13 - return "013"; - - } else if (itc.equals(FOREIGNER) && genderType.equals(FEMALE) && ageCode.equals(ADULT) && isBioExPresent){ - // 14 - return "014"; - - } else if (itc.equals(NON_FOREIGNER) && genderType.equals(FEMALE) && ageCode.equals(CHILD) && isBioExPresent){ - // 15 - return "015"; - - } else if (itc.equals(NON_FOREIGNER) && genderType.equals(FEMALE) && ageCode.equals(ADULT) && isBioExPresent){ - // 16 - return "016"; - - } -``` - -**Module diagram** - - - -![Module Diagram](_images/kernel-applicanttype.jpg) \ No newline at end of file diff --git a/design/kernel/kernel-notification-service.md b/design/kernel/kernel-notification-service.md deleted file mode 100644 index 2ec1d2a450..0000000000 --- a/design/kernel/kernel-notification-service.md +++ /dev/null @@ -1,98 +0,0 @@ -# Email Notification Service - -#### Background - -This service can be used to send email through configured SMTP server. Service has REST API exposed to send messages and attachments through Email. - - -#### Solution - - -**The key solution considerations are** - - -- Create a project which provides REST service to send email. - - -- REST service can be used by any MOSIP module to send email through HTTP client. - - -- Request body model for POST **/notifier/email** - -(curl sample) - -``` --H "Content-Type: multipart/form-data" --F "attachments={}" --F "mailCc=user1@gmail.com" --F "mailContent=OTP for Auth" --F "mailSubject=OTP" --F "mailTo=admin1@gmail.com" -``` - - - -- Response body model for POST **/notifier/email** - -HttpStatus: 202 Accepted - - -``` -{ - "status": "Email Request submitted" -} -``` - -**Class Diagram** - - - -![Class Diagram](_images/kernel-emailnotification-cd.png) - - -# SMS Notification Service - -#### Background - -This service can be used to send sms through configured SMS gateway. Service has REST API exposed to send messages through SMS. - - -#### Solution - - -**The key solution considerations are** - - -- Create a project which provides REST service to send SMS. - - -- REST service can be used by any MOSIP module to send SMS through HTTP client. - - -- Request body model for POST **/notifier/sms** - -``` -{ - "message": "OTP-66776666", - "number": "8980889888" -} -``` - - -- Response body model for POST **/notifier/sms** - -HttpStatus: 202 Accepted - -``` -{ - "status": "success", - "message": "Sms Request Sent" -} -``` - - -**Class Diagram** - - - -![Class Diagram](_images/smsnotification-cd.png) diff --git a/design/kernel/kernel-otpmanager.md b/design/kernel/kernel-otpmanager.md deleted file mode 100644 index 71aba0588f..0000000000 --- a/design/kernel/kernel-otpmanager.md +++ /dev/null @@ -1,69 +0,0 @@ -# One Time Password (OTP) Service - -#### Background - -This service can be used to generate and validate OTP based on configured business rules. Service has REST API exposed for OTP. - - -#### Solution - - -**The key solution considerations are** - - -- Create a project which provides REST service to generate and validate OTP. - - -- REST service can be used by any MOSIP module for OTP through HTTP client. - -- The algorithm used to generate the OTP is from the source code, https://github.com/google/google-authenticator-android/blob/master/AuthenticatorApp/src/main/java/com/google/android/apps/authenticator/OtpProvider.java - - -- Request body model for OTP generate POST **/otpmanager/otps** - -``` -{ - "key": "requestId12378" -} -``` - - - -- Response body model for POST **/otp/generate** - -``` -{ - "otp": "029983", - "status": "GENERATION_SUCCESSFUL" -} -``` - - - -- Request for OTP validation GET **/otp/validate?key=string&otp=029983** - - -- Response body model for GET **/otp/validate?key=string&otp=029983** - -``` -{ - "status": "success", - "message": "VALIDATION SUCCESSFUL" -} -``` - - -**Class Diagram** - - - -![Class Diagram](_images/kernel-otpmanager-cd.png) - - -**ERD** - - - -![ERD](_images/kernel-otpmanager-erd.png) - - diff --git a/design/kernel/kernel-otpnotification.md b/design/kernel/kernel-otpnotification.md deleted file mode 100644 index 55a5bb6b62..0000000000 --- a/design/kernel/kernel-otpnotification.md +++ /dev/null @@ -1,59 +0,0 @@ -# OTP Notification Service - -#### Background - -This service can be used to send otp through email or/and sms based on request.This service make use of Kernel's OTP Manager service for OTP generation, Kernel Email and SMS services to send out notification. Service has REST API exposed to send messages and attachments through Email. - - -#### Solution - - -**The key solution considerations are** - - -- Create a project which provides REST service to send email. - - -- Service can send email/SMS request to kernel service and responds back immediately. - - -- REST service can be used by any MOSIP module to send email through HTTP client. - - -- Request body model for POST **/otpnotifier/otp/send** - -(curl sample) - -``` -{ - "emailBodyTemplate": "Your OTP is $otp", - "emailId": "testmail@tmail.com", - "emailSubjectTemplate": "Test Mail", - "mobileNumber": "1234567890", - "notificationTypes": [ - "email","sms" - ], - "smsTemplate": "Test SMS $otp" -} -``` - - - -- Response body model - -HttpStatus: 202 Accepted - - -``` -{ - "status": "success", - "message": "Otp notification request submitted" -} -``` - -**Class Diagram** - - - -![Class Diagram](_images/kernel-otpnotification-cd.png) - diff --git a/design/kernel/kernel-packetserver-http.md b/design/kernel/kernel-packetserver-http.md deleted file mode 100644 index b76cc49224..0000000000 --- a/design/kernel/kernel-packetserver-http.md +++ /dev/null @@ -1,43 +0,0 @@ -# HTTP Packet Server - -#### Background - -This application can be used as an alternative of SFTP server to upload files/packets to File server. This is a service which has REST API exposed to upload files. - - -#### Solution - - -**The key solution considerations are** - - -- Create a project which provides REST service to upload files. - - -- REST service can be used by any MOSIP module to upload files through HTTP client. - - -- Request body model for POST **/uploads** - -(curl sample) - -``` --H "Content-Type: multipart/form-data" --F "packet=@id_proof.pdf;type=application/pdf" -``` - -- Response body model for POST **/uploads** - -``` -{ - "fileName": "id_proof.pdf", - "fileSizeInBytes": 71976 -} -``` - -**Class Diagram** - - - -![Class Diagram](_images/kernel-packetserver-http-cd.png) - diff --git a/design/kernel/kernel-packetuploader.md b/design/kernel/kernel-packetuploader.md deleted file mode 100644 index ee733d0f38..0000000000 --- a/design/kernel/kernel-packetuploader.md +++ /dev/null @@ -1,37 +0,0 @@ -# SFTP Client - -#### Background - -This library can be used as a SFTP client to upload files/packets to SFTP server. It has series of operations to perform as: - -- Creating SFTP channel providing SFTP server details - - -- Upload files - - -- Release the connection - - - -#### Solution - - - -**The key solution considerations are** - - -- Create a project which implements SFTP client using SSH connection based on Jcraft JSCH API. - - -- SFTP Client can be used in any MOSIP module for upload files after adding KeyGenerator implementation to their class path. - - - -**Class Diagram** - - - -![Class Diagram](_images/kernel-packetuploader-sftp-cd.png) - - diff --git a/design/kernel/kernel-pdfgenerator.md b/design/kernel/kernel-pdfgenerator.md deleted file mode 100644 index d3e0adadc2..0000000000 --- a/design/kernel/kernel-pdfgenerator.md +++ /dev/null @@ -1,37 +0,0 @@ -# PDF Generator - -#### Background - -This application can be used converting plain/html template to PDF. It contains several methods that accept content as: - -- Input Stream - - -- File - - -- String - - -#### Solution - - - -**The key solution considerations are** - - -- Create an interface PDFGenerator having required method declaration to generate PDF document, which will be exposed to the other applications. - - -- Create a project which implements PDFGenerator from provided template based on iText API. - - -- PDF generator can be used in any MOSIP module to generate pdf after adding PDFGrenerate implementation to their class path. - - - -**Class Diagram** - - -![Class Diagram](_images/kernel-pdfgenerator-cd.png) - diff --git a/design/kernel/kernel-pinvalidator.md b/design/kernel/kernel-pinvalidator.md deleted file mode 100644 index 7d68b49d72..0000000000 --- a/design/kernel/kernel-pinvalidator.md +++ /dev/null @@ -1,29 +0,0 @@ -# PIN Validator - -**Background** - -This library can be used to validate PIN based on configured business rules. - - -**Solution** - - -**The key solution considerations are** - - -- Create an interface for PINValidator having required method declaration to validate PIN, which will be exposed to the other applications. - - -- Create a project which implements PINValidator for PIN validation based on configured business rules. - - -- PINValidator can be used in any MOSIP module to validate PIN after adding Its implementation to their class path. - - - -**Class Diagram** - - - -![Class Diagram](_images/kernel-pinvalidator-cd.png) - diff --git a/design/kernel/kernel-qrcodegenerator.md b/design/kernel/kernel-qrcodegenerator.md deleted file mode 100644 index c68ff786d0..0000000000 --- a/design/kernel/kernel-qrcodegenerator.md +++ /dev/null @@ -1,27 +0,0 @@ -# QR Code Generator - -#### Background - -This library can be used to encode data to QR Code. It contains a method to convert String to QR byte code based on version specified. - - -#### Solution - - -**The key solution considerations are** - - -- Create an interface QrCodeGenerator having required method declaration to generate QR bar Code, which will be exposed to the other applications. - - -- Create a project which implements QrCodeGenerator from provided template based on iText API. - - -- QR Code generator can be used in any MOSIP module to generate code after adding its implementation to their class path. - - - -**Class Diagram** - - -![Class Diagram](_images/kernel-qrcodegenerator-cd.png) diff --git a/design/kernel/kernel-ridgenerator.md b/design/kernel/kernel-ridgenerator.md deleted file mode 100644 index e1511eaaa0..0000000000 --- a/design/kernel/kernel-ridgenerator.md +++ /dev/null @@ -1,39 +0,0 @@ -# RID Service - -#### Background - -This service can be used to generate RID for the requested CenterID and MachineID. Service has REST API exposed to fetch generated RID. - - -#### Solution - - -**The key solution considerations are** - - -- Create a project which provides REST service to generate RID for the requested CenterID and MachineID. Append timestamp and sequence in RID - - -- REST service can be used by any RegProc module to fetch RID through HTTP client. - - -- Request for GET **/generate/rid/{centerid}/{machineid}** - -https://mosip.io/v1//generate/rid/10002/10032 - -- Response body model for POST **/generate/rid/{centerid}/{machineid}** - -``` -{ - "id": null, - "version": null, - "responsetime": "2019-05-07T04:30:40.061Z", - "metadata": null, - "response": { - "rid": "10002100320001920190507043040" - }, - "errors": null -} -``` - - diff --git a/design/kernel/kernel-salt-generator.md b/design/kernel/kernel-salt-generator.md deleted file mode 100644 index ef8863c151..0000000000 --- a/design/kernel/kernel-salt-generator.md +++ /dev/null @@ -1,48 +0,0 @@ -# Kernel Salt Generator Job - -## 1. Background - - -Kernel Salt Generator Job is a one-time job which is run to populate salts to be used to hash and encrypt data. This generic job takes schema and table name as input and generates and populates salts in the given schema and table. - - -***1.1.Target Users -*** -- Any module can use this job to populate salts used to hash and/or encrypt data. - - -***1.2. Key Functional Requirements -*** -- Create and save salts against key indexes from 0-999 (confugurable range) - - -***1.3. Key Non-Functional Requirements -*** - -- Logging : - - Log all the exceptions along with error code and short error message -- Exception : - - Any error in storing salt details in DB should be handled with appropriate error code and message in the response - - -### 2. Solution - - -The key solution considerations are -- Create a project which provides a Batch Job to generate and store salts to be used while hashing and encrypting data - - -**2.1. Class Diagram** -![Class Diagram](_images/kernel-salt-generator-cd.png) - - -**2.2. Sequence Diagram** - -Any module can use kernel-salt-generator job to create and store random salt against keyIndex in respective DB. - -1. Receive Schema name and Table Name as an input to run the job -2. Dynamically load Schema and TableName based on given input -3. Load Spring Batch related configurations like JobListener, JobBuilder, StepBuilder, etc. -4. Integrate with kernel-core HMACUtil to generate salt -5. Execute Job which creates salts in chunks (batch) and stores in the tables -6. If data was already present in the table, Job throws an exception and exits - -Below sequence diagram shows the above sequence of operations in order to create and store salts in the database. -![Salt Generator Sequence Diagram](_images/kernel-salt-generator-sd.png) diff --git a/design/kernel/kernel-syncservices.md b/design/kernel/kernel-syncservices.md deleted file mode 100644 index c34cf41640..0000000000 --- a/design/kernel/kernel-syncservices.md +++ /dev/null @@ -1,33 +0,0 @@ -# Sync services - -#### Background - -There can be applications in the MOSIP platform which can go in offline mode. During these times, the MOSIP platform data should be available to them such as Master data, user data etc., This service gives the list of master data to the caller. - -#### Solution - - - -**The key solution considerations are** - - -- The service should return all the master data in MOSIP platform. - -- Based on the requested timestamp, only the delta changes are returned. If the requested timestamp is empty, all the data is returned. - -- In all scenarios, 200 error codes is returned. - - - -**Module diagram** - - - -![Module Diagram](_images/kernel-syncservices.jpg) - - -**ERD** - -![Module Diagram](_images/kernel-masterdata-erd.png) - - diff --git a/design/kernel/kernel-templatemanager.md b/design/kernel/kernel-templatemanager.md deleted file mode 100644 index aa7c39bbff..0000000000 --- a/design/kernel/kernel-templatemanager.md +++ /dev/null @@ -1,47 +0,0 @@ -# Template Manager: - -## Background - -Applications generate automatic emails for account signup, password reminders or automatically sent reports and notification. Using template engine, the email and notification template can be stored in a text file rather than directly embedded in your Java code, it will separate the representation and data - -**Template engine consist of at least these primary elements:** - -* An associated **data model**. - - -* One or more **source templates**. - - -* A processor or **template engine**. - - -* Generated output in the form of **processed template**. - - - -## Solution: - -**The key solution considerations are** - - -- Create an interface TemplateManager having required method declaration to parse/merge the template, which will be exposed to the other applications. - - -- Create a project which implements TemplateManager from provided template based on template engine like velocity template engine or freemarker template processor. - - -- TemplateManager can be used in any MOSIP module to process template after adding its implementation to their class path. - - -- Configure the template and data which you can pass to template manager. - - - - -**Class Diagram:** - - - -![kernel_templatemanager_classdiagram](_images/kernel-templatemanager-cd.png) - - diff --git a/design/kernel/kernel-transliteration.md b/design/kernel/kernel-transliteration.md deleted file mode 100644 index 9e7a851026..0000000000 --- a/design/kernel/kernel-transliteration.md +++ /dev/null @@ -1,36 +0,0 @@ -# Kernel Transliteration - -#### Background - -This library can be used for transliteration. It contains a methods that accept three arguments: - -- Source Language ISO code - - -- Target Language ISO code - - -- Input String - - -#### Solution - - - -**The key solution considerations are** - -- Create an interface Transliteration having required method declaration to transliterate source to target language, which will be exposed to the other applications. - - -- Create a project which implements Transliteration from provided IBM icu4j API. - - -- Transliterator can be used in any MOSIP module to transliterate language after adding its implementation to their class path. - - - -**Class Diagram** - - -![Class Diagram](_images/kernel-transliteration-cd.png) - diff --git a/design/kernel/kernel-uin-ack-service.md b/design/kernel/kernel-uin-ack-service.md deleted file mode 100644 index 08e0d8c65b..0000000000 --- a/design/kernel/kernel-uin-ack-service.md +++ /dev/null @@ -1,26 +0,0 @@ -# Acknowledgement of UIN assignment - -#### Background - -There is a pool of UIN in the database. Whenever the Registration processor module requests for an UIN from this pool, the status have to reflect whether it have been UNUSED or ISSUED or ASSIGNED. Let's say the initial status is UNUSED. If the UIN is responded back the caller, the system doesn't knows whether the UIN had been actually used. Due to some exception in the caller, the UIN might not been actually assigned to anybody. - -#### Solution - - - -**The key solution considerations are** - - -- When the UIN got generated and kept in the pool, the UNUSED status is assigned. - -- As soon as you respond with the UIN to any request call, the status of the UIN is updated as ISSUED. - -- This new service is to receive the acknowledgement from the caller. When the confirmation is received, the status of the UIN in the pool database is changed to ASSIGNED. - - -**Module diagram** - - - -![Module Diagram](_images/kernel-uin-ack-service.jpg) - diff --git a/design/kernel/kernel-utils.md b/design/kernel/kernel-utils.md deleted file mode 100644 index 86d943f2f4..0000000000 --- a/design/kernel/kernel-utils.md +++ /dev/null @@ -1,47 +0,0 @@ -# Kernel Utils - -#### Background - -Kernel utils can have common utilities methods to be reused across MOSIP platform. -There are several static classes and methods as below: - -- StringsUtills - -- FileUtils - -- DateUtils - -- CryptoUtils - -- CalanderUtils - -- ZipUtils - -- JsonUtils - -- HMACUtils - -- UUIDUtils - - -[API Documentation] - -``` -mvn javadoc:javadoc -``` - - -#### Solution - - -**The key solution considerations are** - -- All utilities classes can be part of kernel.core package and can be imported throughout platform. Apache and Jackson library can be used if required. - - -**Class Diagram** - - -![Class Diagram](_images/kernel-utils-cd.png) - - diff --git a/design/kernel/kernel-uuid-generator.md b/design/kernel/kernel-uuid-generator.md deleted file mode 100644 index 816feddcdc..0000000000 --- a/design/kernel/kernel-uuid-generator.md +++ /dev/null @@ -1,30 +0,0 @@ -# UUID Generator - -#### Background - -"Universally Unique Identifier(UUID)" is used in multiple places in the MOSIP platform such as to identify an unique transaction or to have it as the ID field. MOSIP platform uses the UUID Version 5. The UUID includes the namespace name-based. - -#### Solution - - - -**The key solution considerations are** - - -- The UUID generated have to be unique for multiple requests, even if the requests arises at the same time. - -- The length of the generated UUID is limited to 36 characters. - -- In its canonical textual representation, the sixteen octets of a UUID are represented as 32 hexadecimal (base 16) digits, displayed in five groups separated by hyphens, in the form 8-4-4-4-12 for a total of 36 characters (32 alphanumeric characters and four hyphens). - -For example: - - 123e4567-e89b-12d3-a456-426655440000 - - xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx - -The four bits of digit M indicate the UUID version, and the one to three most significant bits of digit N indicate the UUID variant. In the example, M is 1 and N is a(10xx), meaning that the UUID is a variant 1, version 1 UUID; that is, a time-based DCE/RFC 4122 UUID. - -- The UUID generator is provided as a utility jar file. The caller have to included this jar file in the classpath to make use of this utility. - - diff --git a/design/kernel/kernel-virusscanner.md b/design/kernel/kernel-virusscanner.md deleted file mode 100644 index cd4ade406e..0000000000 --- a/design/kernel/kernel-virusscanner.md +++ /dev/null @@ -1,30 +0,0 @@ -# Virus Scanner - -#### Background - -This library can be used to scan files and folders for virus. It contains two methods for virus scanning separately for file and folder . - - -#### Solution - - - -**The key solution considerations are** - - -- Create an interface for VirusScanner having required method declaration, which will be exposed to the other applications. - - -- Create a project which implements VirusScanner based on Capybara Clamav API. - - -- Virus scanner can be used in any MOSIP module for virus scanning after adding VirusScanner implementation to their class path - - - -** Class Diagram** - - - -![Class Diagram](_images/kernel-virusscanner-cd.png) - diff --git a/docs/configuration.md b/docs/configuration.md new file mode 100644 index 0000000000..535ef6780c --- /dev/null +++ b/docs/configuration.md @@ -0,0 +1,52 @@ +# Packet Manager Configuration Guide +## Overview +The guide here lists down some of the important properties that may be customised for a given installation. Note that the listing here is not exhaustive, but a checklist to review properties that are likely to be different from default. If you would like to see all the properites, then refer to the files listed below. + +## Configuration files +Packet Manager uses the following configuration files: +``` +application-default.properties +packet-manager-default.properties +``` + +See [Module Configuration](https://docs.mosip.io/1.2.0/modules/module-configuration) for location of these files. + +## Priority +The Packet Manager reads information from packet based on a configurable priority. If there are multiple packets present for same Id then Packet Manager decides which packet should get priority to fetch the information based on below property - +` packetmanager.default.priority=source:REGISTRATION_CLIENT\/process:BIOMETRIC_CORRECTION|NEW|UPDATE|LOST,source:RESIDENT\/process:ACTIVATED|DEACTIVATED|RES_UPDATE|RES_REPRINT ` +## Providers +Packet Manager uses reader and writer provider to read and write packet. + +* Reader Provider: MOSIP by defult has a packet structure. But it provides support to read packet in different structure. The reader provider has to be configured in below format - + * Default Reader Provider +` provider.packetreader.mosip=source:REGISTRATION_CLIENT,process:NEW|UPDATE|LOST|BIOMETRIC_CORRECTION,classname:io.mosip.commons.packet.impl.PacketReaderImpl ` + * New Reader Provider example - + ` provider.packetreader.= ` + + * Writer Provider: MOSIP by defult has a packet structure. But it provides support to write packet in different structure. The writer provider has to be configured in below format - + * Default Writer Provider +` provider.packetwriter.mosip=source:REGISTRATION_CLIENT,process:NEW|UPDATE|LOST|BIOMETRIC_CORRECTION,classname:io.mosip.commons.packet.impl.PacketWriterImpl ` + * New Writer Provider example - + ` provider.packetwriter.= ` + + ## Object Store Connection + By default MOSIP provides support for below 3 adapters to connect to object store: + + * S3 Adapter: Used for distributed object store + ``` + object.store.s3.accesskey=****** +object.store.s3.secretkey=***** +object.store.s3.url=${mosip.minio.url} +object.store.s3.region=${s3.region} +object.store.s3.readlimit=10000000 + ``` + * Posix Adapter: Used to connect to flat file system + ``` + object.store.base.location=/home/mosip + ``` + * Swift Adapter: Used for distributed object store + ``` +object.store.swift.username=test +object.store.swift.password=test +object.store.swift.url=http://localhost:8080 + ```