@mojaloop/sdk-scheme-adapter 12.0.1 → 12.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.circleci/config.yml +619 -0
- package/.env.example +13 -0
- package/CHANGELOG.md +29 -0
- package/CODEOWNERS +2 -0
- package/Dockerfile +35 -0
- package/LICENSE.md +10 -0
- package/PROXY.md +84 -0
- package/README.md +228 -0
- package/SECURITY.md +18 -0
- package/audit-resolve.json +20 -0
- package/docker/ml-testing-toolkit/secrets/keygen.sh +5 -0
- package/docker/ml-testing-toolkit/secrets/privatekey.pem +27 -0
- package/docker/ml-testing-toolkit/secrets/publickey.cer +21 -0
- package/docker/ml-testing-toolkit/secrets/tls/createSecrets.sh +29 -0
- package/docker/ml-testing-toolkit/secrets/tls/hub_client.csr +28 -0
- package/docker/ml-testing-toolkit/secrets/tls/hub_client_cacert.pem +32 -0
- package/docker/ml-testing-toolkit/secrets/tls/hub_client_cakey.key +51 -0
- package/docker/ml-testing-toolkit/secrets/tls/hub_client_key.key +51 -0
- package/docker/ml-testing-toolkit/secrets/tls/hub_server.csr +28 -0
- package/docker/ml-testing-toolkit/secrets/tls/hub_server_cacert.pem +32 -0
- package/docker/ml-testing-toolkit/secrets/tls/hub_server_cacert.srl +1 -0
- package/docker/ml-testing-toolkit/secrets/tls/hub_server_cakey.key +51 -0
- package/docker/ml-testing-toolkit/secrets/tls/hub_server_cert.pem +33 -0
- package/docker/ml-testing-toolkit/secrets/tls/hub_server_key.key +51 -0
- package/docker/ml-testing-toolkit/secrets/tls/openssl.conf +17 -0
- package/docker/ml-testing-toolkit/spec_files/api_definitions/central_admin_9.3/api_spec.yaml +2450 -0
- package/docker/ml-testing-toolkit/spec_files/api_definitions/central_admin_9.3/response_map.json +96 -0
- package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.0/api_spec.yaml +4187 -0
- package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.0/callback_map.json +542 -0
- package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.0/mockRef.json +83 -0
- package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.0/trigger_templates/transaction_request_followup.json +125 -0
- package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.1/api_spec.yaml +3703 -0
- package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.1/callback_map.json +568 -0
- package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.1/mockRef.json +83 -0
- package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.1/trigger_templates/transaction_request_followup.json +125 -0
- package/docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/api_spec.yaml +983 -0
- package/docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/mockRef.json +38 -0
- package/docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/response_map.json +34 -0
- package/docker/ml-testing-toolkit/spec_files/reports/templates/newman/html_template.html +1074 -0
- package/docker/ml-testing-toolkit/spec_files/reports/templates/newman/pdf_template.html +765 -0
- package/docker/ml-testing-toolkit/spec_files/reports/templates/newman/script.js +98 -0
- package/docker/ml-testing-toolkit/spec_files/rules_callback/config.json +3 -0
- package/docker/ml-testing-toolkit/spec_files/rules_callback/default.json +426 -0
- package/docker/ml-testing-toolkit/spec_files/rules_response/config.json +3 -0
- package/docker/ml-testing-toolkit/spec_files/rules_response/default.json +1623 -0
- package/docker/ml-testing-toolkit/spec_files/rules_response/default_pisp_rules.json +161 -0
- package/docker/ml-testing-toolkit/spec_files/rules_validation/config.json +3 -0
- package/docker/ml-testing-toolkit/spec_files/rules_validation/default.json +672 -0
- package/docker/ml-testing-toolkit/spec_files/system_config.json +62 -0
- package/docker/ml-testing-toolkit/spec_files/user_config.json +45 -0
- package/docker/wait4/setup_hosts_file.sh +25 -0
- package/docker/wait4/wait4.config.js +71 -0
- package/docker/wait4/wait4.js +204 -0
- package/docker-compose.yml +67 -0
- package/docs/Mojaloop - Modusbox Onboarding functionality.pdf +0 -0
- package/docs/dfspInboundApi.yaml +1091 -0
- package/jest.config.js +4 -1
- package/package.json +13 -8
- package/secrets/jwsSigningKey.key +27 -0
- package/secrets/jwsVerificationKeys/mojaloop-sdk.pem +9 -0
- package/secrets/jwsVerificationKeys/switch.pem +9 -0
- package/sequences.puml +99 -0
- package/src/ControlAgent/index.js +221 -0
- package/{TestServer → src/ControlServer}/handlers.js +0 -0
- package/src/ControlServer/index.js +294 -0
- package/{InboundServer → src/InboundServer}/api.yaml +0 -0
- package/src/InboundServer/api_template.yaml +69 -0
- package/{InboundServer → src/InboundServer}/handlers.js +0 -0
- package/{InboundServer → src/InboundServer}/index.js +33 -1
- package/{InboundServer → src/InboundServer}/middlewares.js +0 -0
- package/{OAuthTestServer → src/OAuthTestServer}/index.js +0 -0
- package/{OAuthTestServer → src/OAuthTestServer}/model.js +0 -0
- package/{OutboundServer → src/OutboundServer}/api.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_interfaces/index.d.ts +0 -0
- package/{OutboundServer → src/OutboundServer}/api_interfaces/openapi.d.ts +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/parameters/bulkQuoteId.yaml +1 -1
- package/{OutboundServer → src/OutboundServer}/api_template/components/parameters/bulkTransferId.yaml +1 -1
- package/{OutboundServer → src/OutboundServer}/api_template/components/parameters/requestToPayTransactionId.yaml +1 -1
- package/{OutboundServer → src/OutboundServer}/api_template/components/parameters/transferId.yaml +1 -1
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/accountsCreationCompleted.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/accountsCreationError.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/accountsCreationTimeout.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkQuoteBadRequest.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkQuoteServerError.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkQuoteSuccess.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkQuoteTimeout.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkTransferBadRequest.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkTransferServerError.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkTransferSuccess.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkTransferTimeout.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/partiesByIdError404.yaml +1 -1
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/partiesByIdSuccess.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/quotesPostSuccess.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/quotesServerError.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/requestToPaySuccess.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/requestToPayTransferBadRequest.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/requestToPayTransferSuccess.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/simpleTransfersPostSuccess.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/simpleTransfersServerError.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/transferBadRequest.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/transferServerError.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/transferSuccess.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/responses/transferTimeout.yaml +0 -0
- package/src/OutboundServer/api_template/components/schemas/accountCreationStatus.yaml +18 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/accountsCreationState.yaml +0 -0
- package/src/OutboundServer/api_template/components/schemas/accountsRequest.yaml +20 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/accountsResponse.yaml +1 -1
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/async2SyncCurrentState.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkQuoteErrorResponse.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkQuoteRequest.yaml +2 -2
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkQuoteResponse.yaml +1 -1
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkQuoteStatus.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkQuoteStatusResponse.yaml +1 -1
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkTransferErrorResponse.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkTransferRequest.yaml +2 -2
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkTransferResponse.yaml +1 -1
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkTransferStatus.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkTransferStatusResponse.yaml +1 -1
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/errorAccountsResponse.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/errorQuotesResponse.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/errorResponse.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/errorSimpleTransfersResponse.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/errorTransferResponse.yaml +0 -0
- package/src/OutboundServer/api_template/components/schemas/extensionListEmptiable.yaml +6 -0
- package/src/OutboundServer/api_template/components/schemas/individualQuote.yaml +32 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/individualQuoteResult.yaml +5 -5
- package/src/OutboundServer/api_template/components/schemas/individualTransfer.yaml +32 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/individualTransferFulfilment.yaml +2 -2
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/individualTransferResult.yaml +6 -6
- package/src/OutboundServer/api_template/components/schemas/mojaloopError.yaml +5 -0
- package/src/OutboundServer/api_template/components/schemas/mojaloopTransactionRequestState.yaml +2 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/partiesByIdResponse.yaml +1 -1
- package/src/OutboundServer/api_template/components/schemas/quote.yaml +3 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/quoteError.yaml +0 -0
- package/src/OutboundServer/api_template/components/schemas/quotesPostRequest.yaml +13 -0
- package/src/OutboundServer/api_template/components/schemas/quotesPostResponse.yaml +48 -0
- package/src/OutboundServer/api_template/components/schemas/requestToPayRequest.yaml +39 -0
- package/src/OutboundServer/api_template/components/schemas/requestToPayResponse.yaml +41 -0
- package/src/OutboundServer/api_template/components/schemas/requestToPayTransferRequest.yaml +42 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/requestToPayTransferResponse.yaml +6 -6
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/simpleTransferServerError.yaml +0 -0
- package/src/OutboundServer/api_template/components/schemas/simpleTransfersPostRequest.yaml +12 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/simpleTransfersPostResponse.yaml +1 -1
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transactionType.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferContinuationAcceptOTP.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferContinuationAcceptParty.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferContinuationAcceptQuote.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferError.yaml +0 -0
- package/src/OutboundServer/api_template/components/schemas/transferFulfilment.yaml +3 -0
- package/src/OutboundServer/api_template/components/schemas/transferParty.yaml +40 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferRequest.yaml +4 -4
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferResponse.yaml +6 -6
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferStatus.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferStatusResponse.yaml +1 -1
- package/{OutboundServer → src/OutboundServer}/api_template/health.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/openapi.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/paths/accounts.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/paths/bulkQuotes.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/paths/bulkQuotes_bulkQuoteId.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/paths/bulkTransfers.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/paths/bulkTransfers_bulkTransferId.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/paths/parties_Type_ID.yaml +2 -2
- package/{OutboundServer → src/OutboundServer}/api_template/paths/parties_Type_ID_SubId.yaml +3 -3
- package/{OutboundServer → src/OutboundServer}/api_template/paths/quotes.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/paths/requestToPay.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/paths/requestToPayTransfer.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/paths/requestToPayTransfer_requestToPayTransactionId.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/paths/simpleTransfers.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/paths/transfers.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/api_template/paths/transfers_transferId.yaml +0 -0
- package/{OutboundServer → src/OutboundServer}/handlers.js +0 -0
- package/{OutboundServer → src/OutboundServer}/index.js +15 -0
- package/{OutboundServer → src/OutboundServer}/middlewares.js +0 -0
- package/{TestServer → src/TestServer}/api.yaml +0 -0
- package/src/TestServer/handlers.js +63 -0
- package/{TestServer → src/TestServer}/index.js +31 -0
- package/{config.js → src/config.js} +6 -0
- package/{index.d.ts → src/index.d.ts} +0 -0
- package/{index.js → src/index.js} +0 -0
- package/{lib → src/lib}/api/index.js +0 -0
- package/{lib → src/lib}/cache.js +0 -0
- package/{lib → src/lib}/check.js +0 -0
- package/{lib → src/lib}/model/AccountsModel.js +0 -0
- package/{lib → src/lib}/model/Async2SyncModel.js +0 -0
- package/{lib → src/lib}/model/InboundTransfersModel.js +0 -0
- package/{lib → src/lib}/model/OutboundBulkQuotesModel.js +3 -3
- package/{lib → src/lib}/model/OutboundBulkTransfersModel.js +1 -1
- package/{lib → src/lib}/model/OutboundRequestToPayModel.js +1 -1
- package/{lib → src/lib}/model/OutboundRequestToPayTransferModel.js +9 -9
- package/{lib → src/lib}/model/OutboundTransfersModel.js +1 -1
- package/{lib → src/lib}/model/PartiesModel.js +0 -0
- package/{lib → src/lib}/model/ProxyModel/MatchRules/Expression.js +0 -0
- package/{lib → src/lib}/model/ProxyModel/MatchRules/Headers.js +0 -0
- package/{lib → src/lib}/model/ProxyModel/MatchRules/MatchRule.js +0 -0
- package/{lib → src/lib}/model/ProxyModel/MatchRules/Path.js +0 -0
- package/{lib → src/lib}/model/ProxyModel/MatchRules/Query.js +0 -0
- package/{lib → src/lib}/model/ProxyModel/MatchRules/index.js +0 -0
- package/{lib → src/lib}/model/ProxyModel/Route.js +0 -0
- package/{lib → src/lib}/model/ProxyModel/configSchema.json +0 -0
- package/{lib → src/lib}/model/ProxyModel/index.js +0 -0
- package/{lib → src/lib}/model/QuotesModel.js +0 -0
- package/{lib → src/lib}/model/TransfersModel.js +0 -0
- package/{lib → src/lib}/model/common/BackendError.js +0 -0
- package/{lib → src/lib}/model/common/PersistentStateMachine.js +0 -0
- package/{lib → src/lib}/model/common/index.js +0 -0
- package/{lib → src/lib}/model/index.js +0 -0
- package/{lib → src/lib}/model/lib/deferredJob.js +0 -0
- package/{lib → src/lib}/model/lib/index.js +0 -0
- package/{lib → src/lib}/model/lib/requests/backendRequests.js +0 -0
- package/{lib → src/lib}/model/lib/requests/common.js +0 -0
- package/{lib → src/lib}/model/lib/requests/index.js +0 -0
- package/{lib → src/lib}/model/lib/shared.js +6 -5
- package/{lib → src/lib}/randomphrase/index.js +0 -0
- package/{lib → src/lib}/randomphrase/words.json +0 -0
- package/{lib → src/lib}/router.js +0 -0
- package/{lib → src/lib}/validate.js +0 -0
- package/test/config/integration.env +9 -0
- package/test/integration/lib/cache.test.js +3 -3
- package/test/unit/ControlClient.test.js +113 -0
- package/test/unit/ControlServer/events.js +41 -0
- package/test/unit/ControlServer/index.js +231 -0
- package/test/unit/ControlServer.test.js +126 -0
- package/test/unit/InboundServer.test.js +4 -4
- package/test/unit/TestServer.test.js +5 -5
- package/test/unit/api/utils.js +5 -5
- package/test/unit/config.test.js +10 -9
- package/test/unit/inboundApi/handlers.test.js +6 -6
- package/test/unit/index.test.js +2 -1
- package/test/unit/lib/cache.test.js +1 -1
- package/test/unit/lib/model/AccountsModel.test.js +2 -2
- package/test/unit/lib/model/InboundTransfersModel.test.js +5 -5
- package/test/unit/lib/model/OutboundBulkQuotesModel.test.js +2 -2
- package/test/unit/lib/model/OutboundBulkTransfersModel.test.js +2 -2
- package/test/unit/lib/model/OutboundRequestToPayModel.test.js +3 -3
- package/test/unit/lib/model/OutboundRequestToPayTransferModel.test.js +2 -2
- package/test/unit/lib/model/OutboundTransfersModel.test.js +36 -3
- package/test/unit/lib/model/PartiesModel.test.js +28 -28
- package/test/unit/lib/model/QuotesModel.test.js +31 -31
- package/test/unit/lib/model/TransfersModel.test.js +3 -3
- package/test/unit/lib/model/common/PersistentStateMachine.test.js +13 -13
- package/test/unit/lib/model/mockedLibRequests.js +1 -1
- package/test/unit/outboundApi/handlers.test.js +3 -3
- package/.eslintignore +0 -2
- package/InboundServer/api_template.yaml +0 -69
- package/OutboundServer/api_template/components/schemas/accountCreationStatus.yaml +0 -18
- package/OutboundServer/api_template/components/schemas/accountsRequest.yaml +0 -20
- package/OutboundServer/api_template/components/schemas/extensionListEmptiable.yaml +0 -6
- package/OutboundServer/api_template/components/schemas/individualQuote.yaml +0 -32
- package/OutboundServer/api_template/components/schemas/individualTransfer.yaml +0 -32
- package/OutboundServer/api_template/components/schemas/mojaloopError.yaml +0 -5
- package/OutboundServer/api_template/components/schemas/mojaloopTransactionRequestState.yaml +0 -2
- package/OutboundServer/api_template/components/schemas/quote.yaml +0 -3
- package/OutboundServer/api_template/components/schemas/quotesPostRequest.yaml +0 -13
- package/OutboundServer/api_template/components/schemas/quotesPostResponse.yaml +0 -48
- package/OutboundServer/api_template/components/schemas/requestToPayRequest.yaml +0 -39
- package/OutboundServer/api_template/components/schemas/requestToPayResponse.yaml +0 -41
- package/OutboundServer/api_template/components/schemas/requestToPayTransferRequest.yaml +0 -42
- package/OutboundServer/api_template/components/schemas/simpleTransfersPostRequest.yaml +0 -12
- package/OutboundServer/api_template/components/schemas/transferFulfilment.yaml +0 -3
- package/OutboundServer/api_template/components/schemas/transferParty.yaml +0 -40
package/Dockerfile
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
FROM node:16-alpine as builder
|
|
2
|
+
|
|
3
|
+
RUN apk add --no-cache git python3 build-base
|
|
4
|
+
|
|
5
|
+
EXPOSE 3000
|
|
6
|
+
|
|
7
|
+
WORKDIR /src
|
|
8
|
+
|
|
9
|
+
# This is super-ugly, but it means we don't have to re-run npm install every time any of the source
|
|
10
|
+
# files change- only when any dependencies change- which is a superior developer experience when
|
|
11
|
+
# relying on docker-compose.
|
|
12
|
+
COPY ./package.json .
|
|
13
|
+
COPY ./package-lock.json .
|
|
14
|
+
RUN npm ci --only=production
|
|
15
|
+
FROM node:16-alpine
|
|
16
|
+
|
|
17
|
+
ARG BUILD_DATE
|
|
18
|
+
ARG VCS_URL
|
|
19
|
+
ARG VCS_REF
|
|
20
|
+
ARG VERSION
|
|
21
|
+
|
|
22
|
+
# See http://label-schema.org/rc1/ for label schema info
|
|
23
|
+
LABEL org.label-schema.schema-version="1.0"
|
|
24
|
+
LABEL org.label-schema.name="sdk-scheme-adapter"
|
|
25
|
+
LABEL org.label-schema.build-date=$BUILD_DATE
|
|
26
|
+
LABEL org.label-schema.vcs-url=$VCS_URL
|
|
27
|
+
LABEL org.label-schema.vcs-ref=$VCS_REF
|
|
28
|
+
LABEL org.label-schema.url="https://mojaloop.io/"
|
|
29
|
+
LABEL org.label-schema.version=$VERSION
|
|
30
|
+
|
|
31
|
+
COPY --from=builder /src/ /src
|
|
32
|
+
COPY ./src ./src
|
|
33
|
+
COPY ./secrets /
|
|
34
|
+
|
|
35
|
+
CMD ["node", "src/index.js"]
|
package/LICENSE.md
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# LICENSE
|
|
2
|
+
|
|
3
|
+
Copyright © 2017 Bill & Melinda Gates Foundation
|
|
4
|
+
|
|
5
|
+
The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0
|
|
6
|
+
(the "License") and you may not use these files except in compliance with the [License](http://www.apache.org/licenses/LICENSE-2.0). You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the [License](http://www.apache.org/licenses/LICENSE-2.0).
|
package/PROXY.md
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
### SDK Proxy Configuration
|
|
2
|
+
|
|
3
|
+
The SDK Proxy allows a DFSP to use the same outbound SDK endpoint for talking to a DFSP through the Mojaloop API and to a non-Mojaloop (custom) REST API exposed by the Mojaloop Hub. For example:
|
|
4
|
+
* to issue a Mojaloop transfer request, a DFSP would call: `http://local.sdk-adapter.com:4001/transfers`
|
|
5
|
+
* to issue a request to a custom API, a DFSP would call: `http://local.sdk-adapter.com:4001/customservice`
|
|
6
|
+
|
|
7
|
+
To be able to connect to a custom API, the DFSP must:
|
|
8
|
+
|
|
9
|
+
1. Define API endpoint information in a Proxy configuration YAML file.
|
|
10
|
+
2. Specify the location of the configuration file in the environment variable `PROXY_CONFIG_PATH`.
|
|
11
|
+
3. Map the configuration file into the container at runtime.
|
|
12
|
+
|
|
13
|
+
The configuration file is structured as follows:
|
|
14
|
+
```yaml
|
|
15
|
+
version: 1.0
|
|
16
|
+
routes:
|
|
17
|
+
- description: 'Routing by URL path as string'
|
|
18
|
+
match:
|
|
19
|
+
- path: /sdk-path-1
|
|
20
|
+
- path: /sdk-other-path-1
|
|
21
|
+
destination:
|
|
22
|
+
path: /switch-path-1
|
|
23
|
+
|
|
24
|
+
- description: 'Routing by URL path as regexp'
|
|
25
|
+
match:
|
|
26
|
+
- path: ~ ^\/sdk-.*2$
|
|
27
|
+
destination:
|
|
28
|
+
path: /switch-path-2
|
|
29
|
+
|
|
30
|
+
- description: 'Routing by query and headers params with regexp'
|
|
31
|
+
match:
|
|
32
|
+
- path: /sdk-custom-api
|
|
33
|
+
headers:
|
|
34
|
+
- name: CustomHeader
|
|
35
|
+
value: ~ *
|
|
36
|
+
query:
|
|
37
|
+
- key: customQueryKey
|
|
38
|
+
value: Value1
|
|
39
|
+
- key: ~ query.*Special
|
|
40
|
+
value: ~ val.*2
|
|
41
|
+
destination:
|
|
42
|
+
path: /switch-path-3
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
#### Elements of configuration file
|
|
47
|
+
|
|
48
|
+
* `version` **(required)** - Must be set to `1.0`.
|
|
49
|
+
|
|
50
|
+
* `routes` **(required)** - Must contain an array of routes, that is, endpoint mappings with corresponding forwarding rules.
|
|
51
|
+
|
|
52
|
+
##### Routes
|
|
53
|
+
|
|
54
|
+
* `description` **(optional)** - User description of route.
|
|
55
|
+
|
|
56
|
+
* `match` **(required)** - Must contain one or more forwarding rules that will be applied to incoming requests.
|
|
57
|
+
A request will be forwarded to the `destination` if **ANY** of the rules match the request.
|
|
58
|
+
|
|
59
|
+
* `destination` **(required)** - The endpoint that the SDK Proxy should forward requests to.
|
|
60
|
+
|
|
61
|
+
##### Forwarding rules
|
|
62
|
+
|
|
63
|
+
There must be at least one forwarding rule defined in `match`, additional rules are optional.
|
|
64
|
+
|
|
65
|
+
A forwarding rule value can be defined as a plain string or a regular expression.
|
|
66
|
+
|
|
67
|
+
When using a regular expression, the value must be prefixed with the tilde symbol (`~`) and a space, for example:
|
|
68
|
+
```
|
|
69
|
+
~ customVal.*
|
|
70
|
+
|
|
71
|
+
~ ^\/api\/common\/.*\/v1$
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
A forwarding rule is applied by the SDK Proxy when **ALL** of the items inside the rule match the corresponding request parameters (such as an endpoint URL, or HTTP request headers, or query parameters). You can define rules about request parameters using the following elements in the configuration file:
|
|
75
|
+
|
|
76
|
+
* `path` - used to match a URL path
|
|
77
|
+
|
|
78
|
+
* `headers` - array of `name`/`value` pairs used to match HTTP request headers:
|
|
79
|
+
* `name` - HTTP header name
|
|
80
|
+
* `value` - HTTP header value
|
|
81
|
+
|
|
82
|
+
* `query` - array of `key`/`value` pairs used to match HTTP query parameters:
|
|
83
|
+
* `key` - HTTP query key
|
|
84
|
+
* `value` - HTTP query value
|
package/README.md
ADDED
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
[](https://github.com/mojaloop/sdk-scheme-adapter/commits/master)
|
|
2
|
+
[](https://github.com/mojaloop/sdk-scheme-adapter/releases)
|
|
3
|
+
[](https://www.npmjs.com/package/@mojaloop/sdk-scheme-adapter)
|
|
4
|
+
[](https://www.npmjs.com/package/@mojaloop/sdk-scheme-adapter)
|
|
5
|
+
[](https://circleci.com/gh/mojaloop/sdk-scheme-adapter)
|
|
6
|
+
|
|
7
|
+
# Mojaloop SDK Scheme Adapter
|
|
8
|
+
|
|
9
|
+
This package provides a scheme adapter that interfaces between a Mojaloop API compliant switch and a DFSP backend platform that does not natively implement the Mojaloop API.
|
|
10
|
+
|
|
11
|
+
The API between the scheme adapter and the DFSP backend is synchronous HTTP while the interface between the scheme adapter and the switch is native Mojaloop API.
|
|
12
|
+
|
|
13
|
+
This package exemplifies the use of the Mojaloop SDK Standard Components for TLS, JWS and ILP (available [here](http://www.github.com/mojaloop/sdk-standard-components)).
|
|
14
|
+
|
|
15
|
+
For information on the background and context of this project please see the presentation [here](docs/Mojaloop%20-%20Modusbox%20Onboarding%20functionality.pdf)
|
|
16
|
+
|
|
17
|
+
## DFSP Backend API
|
|
18
|
+
|
|
19
|
+
DFSP backends must implement the [DFSP Inbound API](docs/dfspInboundApi.yaml) in order for the scheme adapter to make incoming transfers i.e. to receive funds to a customer account.
|
|
20
|
+
|
|
21
|
+
DFSP backends can call the [DFSP Outbound API](/src/outboundApi/api.yaml) in order to make outgoing transfers i.e. to send funds from a customer account.
|
|
22
|
+
|
|
23
|
+
## Docker Image
|
|
24
|
+
|
|
25
|
+
This package is available as a pre-built docker image on Docker Hub: [https://hub.docker.com/r/mojaloop/sdk-scheme-adapter](https://hub.docker.com/r/mojaloop/sdk-scheme-adapter)
|
|
26
|
+
|
|
27
|
+
## NPM Package
|
|
28
|
+
|
|
29
|
+
Users who do not wish to use all the functionality of the scheme adapter as-is are able to import this package as a dependency into their own projects. The scheme adapter package is [published on npm](https://www.npmjs.com/package/@mojaloop/sdk-scheme-adapter) and exposes the following components for external use:
|
|
30
|
+
|
|
31
|
+
- Inbound Server Middleware
|
|
32
|
+
- Outbound Server Middleware
|
|
33
|
+
- Request Router
|
|
34
|
+
- Request Validation Framework
|
|
35
|
+
- Unique Request Identifier Framework (RandomPhrase)
|
|
36
|
+
- Logger
|
|
37
|
+
- Distributed Cache Abstraction (uses REDIS as a backing service)
|
|
38
|
+
|
|
39
|
+
## Quick Start
|
|
40
|
+
|
|
41
|
+
The steps shown below illustrate setting up the Mojaloop SDK Scheme Adapter locally with a mock DFSP backend.
|
|
42
|
+
|
|
43
|
+
This configuration is suitable as a starting point for DFSPs wishing to utilize the scheme adapter for integrating their backend systems with a Mojaloop API enabled switch.
|
|
44
|
+
|
|
45
|
+
_Note that these instructions are for Linux based systems. For Mac and/or Windows you will need to translate the following for your environment._
|
|
46
|
+
|
|
47
|
+
1. Make sure you have docker and docker-compose installed locally. See [https://docs.docker.com/v17.12/install/](https://docs.docker.com/v17.12/install/) and [https://docs.docker.com/compose/install/](https://docs.docker.com/compose/install/) respectively.
|
|
48
|
+
1. Clone the Mojaloop SDK Mock DFSP Backend repository locally:
|
|
49
|
+
|
|
50
|
+
Change directory into your workspace then to clone using HTTPS:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
$ git clone https://github.com/mojaloop/sdk-mock-dfsp-backend.git
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
or to clone using SSH:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
$ git clone git@github.com:mojaloop/sdk-mock-dfsp-backend.git
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Now change directory into the cloned repository directory:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
$ cd sdk-mock-dfsp-backend
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
1. Edit the scheme adapter configuration to point the scheme adapter at your Mojaloop API enabled switch or simulator:
|
|
69
|
+
|
|
70
|
+
Use your favourite text editor to edit the file `src/scheme-adapter.env`.
|
|
71
|
+
Change the value of the `PEER_ENDPOINT` variable to the DNS name or IP address and port number of your Mojaloop API enabled switch or simulator. Save the file.
|
|
72
|
+
|
|
73
|
+
1. Use docker-compose to download and run the pre-built scheme-adapter, shared cache and mock DFSP backend containers locally:
|
|
74
|
+
|
|
75
|
+
Change directory into the `src` subfolder and run docker-compose
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
$ cd src/
|
|
79
|
+
$ docker-compose up
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
You should see docker download the pre-built docker images for the scheme adapter, shared cache (redis) and mock DFSP backend. Docker-compose will start the containers.
|
|
83
|
+
|
|
84
|
+
1. Test the outbound (sending money) API:
|
|
85
|
+
|
|
86
|
+
Find the IP address of the mock DFSP backend container. To do this you can use...
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
docker network ls
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
to find the list of docker networks on your local machine. Identity the docker network created by docker-compose, docker-compose will assign a name based on the directory name from which you ran the `docker-compose up` command.
|
|
93
|
+
|
|
94
|
+
Once you have identified the network you can use...
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
docker network inspect {network name}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
This will print a JSON structure to the terminal containing the set of containers in the network and their individual IP addresses.
|
|
101
|
+
|
|
102
|
+
Use the following command to tell the mock DFSP backend to initiate an outbound money transfer via the scheme-adapter:
|
|
103
|
+
|
|
104
|
+
_Dont forget to substitute in the correct IP address for the Mock DFSP Backend container_
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
curl -X POST \
|
|
108
|
+
http://{MOCK Container IP Address}:3000/send \
|
|
109
|
+
-H 'Content-Type: application/json' \
|
|
110
|
+
-d '{
|
|
111
|
+
"from": {
|
|
112
|
+
"displayName": "John Doe",
|
|
113
|
+
"idType": "MSISDN",
|
|
114
|
+
"idValue": "123456789"
|
|
115
|
+
},
|
|
116
|
+
"to": {
|
|
117
|
+
"idType": "MSISDN",
|
|
118
|
+
"idValue": "987654321"
|
|
119
|
+
},
|
|
120
|
+
"amountType": "SEND",
|
|
121
|
+
"currency": "USD",
|
|
122
|
+
"amount": "100",
|
|
123
|
+
"transactionType": "TRANSFER",
|
|
124
|
+
"note": "test payment",
|
|
125
|
+
"homeTransactionId": "123ABC"
|
|
126
|
+
}'
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
The response from the above call should indicate the result of the communication between the scheme-adapter and the Mojaloop API enabled switch or simulator.
|
|
130
|
+
|
|
131
|
+
1. Speak to your switch operator or use your simulator to test the inbound (receiving money) API.
|
|
132
|
+
|
|
133
|
+
You can now examine the code of the Mock DFSP backend to understand how it implements the scheme-adapter simplified inbound API.
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
## Testing
|
|
137
|
+
|
|
138
|
+
### Unit Tests
|
|
139
|
+
|
|
140
|
+
Unit tests can be found in the `./src/test/unit` directory, and follow the same directory structure of the main project.
|
|
141
|
+
|
|
142
|
+
Run the unit tests with the following (from `./src` dir):
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
npm run test
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Integration Tests
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
docker-compose -f docker-compose.yml build
|
|
152
|
+
docker-compose -f docker-compose.yml up -d
|
|
153
|
+
./docker/wait4/wait4.js cicd-integration-tests
|
|
154
|
+
cd src
|
|
155
|
+
npm run test:int
|
|
156
|
+
cd ../
|
|
157
|
+
docker-compose -f docker-compose.yml down
|
|
158
|
+
|
|
159
|
+
# test report you can find in
|
|
160
|
+
src/junit.xml
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Get status of quote request
|
|
164
|
+
The status of a previously sent quotation request can be get by executing `GET /quotes/{ID}`.
|
|
165
|
+
When the response to the original quote request is sent, the response is cached in the redis store. When a `GET /quotes/{ID}` is received,
|
|
166
|
+
the cached response is retrieved from the redis store and returned to the caller as a body with `PUT /quotes/{ID}` request.
|
|
167
|
+
When the redis is setup as a persistent store then it will return the response for all the quote requests sent with `POST /quotes`. If the the redis is setup as cache with expiry time then it will not return response for the expired quotes when the cache expires. Also only the payer dfsp is supposed to make the `GET /quotes/{ID}` request.
|
|
168
|
+
If the quote response is not found in the redis store `PUT /quotes/{ID}` will be made with the following body
|
|
169
|
+
```
|
|
170
|
+
{
|
|
171
|
+
"errorInformation":{
|
|
172
|
+
"errorCode":"3205",
|
|
173
|
+
"errorDescription":"Quote ID not found"
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Dev Tools
|
|
179
|
+
This project uses @redocly/openapi-cli and @mojaloop/api-snippets to build interfaces.
|
|
180
|
+
|
|
181
|
+
Any interface changes should be done in the corresponding `api-template.yaml`
|
|
182
|
+
file and then rebuilt using the command below or the `build:openapi` scripts.
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
openapi bundle --output api.yaml --ext yaml api_template.yaml
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
To rebuild the inbound interface run
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
npm run build:openapi:inbound
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
To rebuild the outbound interface run
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
npm run build:openapi:outbound
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## Automated Releases
|
|
201
|
+
|
|
202
|
+
As part of our CI/CD process, we use a combination of CircleCI, standard-version
|
|
203
|
+
npm package and github-release CircleCI orb to automatically trigger our releases
|
|
204
|
+
and image builds. This process essentially mimics a manual tag and release.
|
|
205
|
+
|
|
206
|
+
On a merge to master, CircleCI is configured to use the mojaloopci github account
|
|
207
|
+
to push the latest generated CHANGELOG and package version number.
|
|
208
|
+
|
|
209
|
+
Once those changes are pushed, CircleCI will pull the updated master, tag and
|
|
210
|
+
push a release triggering another subsequent build that also publishes a docker image.
|
|
211
|
+
|
|
212
|
+
### Potential problems
|
|
213
|
+
|
|
214
|
+
* There is a case where the merge to master workflow will resolve successfully, triggering
|
|
215
|
+
a release. Then that tagged release workflow subsequently failing due to the image scan,
|
|
216
|
+
audit check, vulnerability check or other "live" checks.
|
|
217
|
+
|
|
218
|
+
This will leave master without an associated published build. Fixes that require
|
|
219
|
+
a new merge will essentially cause a skip in version number or require a clean up
|
|
220
|
+
of the master branch to the commit before the CHANGELOG and bump.
|
|
221
|
+
|
|
222
|
+
This may be resolved by relying solely on the previous checks of the
|
|
223
|
+
merge to master workflow to assume that our tagged release is of sound quality.
|
|
224
|
+
We are still mulling over this solution since catching bugs/vulnerabilities/etc earlier
|
|
225
|
+
is a boon.
|
|
226
|
+
|
|
227
|
+
* It is unknown if a race condition might occur with multiple merges with master in
|
|
228
|
+
quick succession, but this is a suspected edge case.
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Supported Versions
|
|
4
|
+
|
|
5
|
+
All versions of this project are currently being supported with security updates.
|
|
6
|
+
|
|
7
|
+
| Version | Supported |
|
|
8
|
+
| ------- | ------------------ |
|
|
9
|
+
| 0.0.x | :white_check_mark: |
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## Reporting a Vulnerability
|
|
13
|
+
|
|
14
|
+
Please report any vulnerabilities you may discover privately, so as to not expose current users to unnecessary risk, by contacting the repository owner.
|
|
15
|
+
|
|
16
|
+
Reports will be assessed by the development team and an impact assessment carried out as soon as possible.
|
|
17
|
+
|
|
18
|
+
Further actions will be planned and communicated as deemed appropriate by the repository owner in order to minimise exposure of users to risk.
|
package/audit-resolve.json
CHANGED
|
@@ -414,6 +414,26 @@
|
|
|
414
414
|
"decision": "ignore",
|
|
415
415
|
"madeAt": 1649898257344,
|
|
416
416
|
"expiresAt": 1652490250295
|
|
417
|
+
},
|
|
418
|
+
"1070030|@mojaloop/central-services-shared>widdershins>markdown-it": {
|
|
419
|
+
"decision": "ignore",
|
|
420
|
+
"madeAt": 1650460940438,
|
|
421
|
+
"expiresAt": 1653052932045
|
|
422
|
+
},
|
|
423
|
+
"1070030|@mojaloop/central-services-shared>shins>markdown-it": {
|
|
424
|
+
"decision": "ignore",
|
|
425
|
+
"madeAt": 1650459472663,
|
|
426
|
+
"expiresAt": 1653051469252
|
|
427
|
+
},
|
|
428
|
+
"1068154|@mojaloop/central-services-shared>shins>sanitize-html": {
|
|
429
|
+
"decision": "ignore",
|
|
430
|
+
"madeAt": 1650459474362,
|
|
431
|
+
"expiresAt": 1653051469252
|
|
432
|
+
},
|
|
433
|
+
"1068155|@mojaloop/central-services-shared>shins>sanitize-html": {
|
|
434
|
+
"decision": "ignore",
|
|
435
|
+
"madeAt": 1650459475376,
|
|
436
|
+
"expiresAt": 1653051469252
|
|
417
437
|
}
|
|
418
438
|
},
|
|
419
439
|
"rules": {},
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
#openssl genrsa -des3 -out privatekey.pem 2048
|
|
2
|
+
openssl genrsa -out privatekey.pem 2048
|
|
3
|
+
openssl req -new -x509 -key privatekey.pem -out publickey.cer -days 1825 -subj "/CN=testingtoolkitdfsp/C=US/ST=Ohio/L=Columbus/O=Testing Toolkit/OU=Payments"
|
|
4
|
+
#openssl rsa -in privatekey.pem -pubout -out publickey.cer
|
|
5
|
+
#openssl rsa -in privatekey.pem -out privatekey.pem
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
+
MIIEpQIBAAKCAQEAwczEjlUeOPutgPRlpZSbcbJJwsmmxsBfoPDw1sjBiR7L6Doh
|
|
3
|
+
VqKd810+TmiDRYgCzOLabje/mtLiDC95MtuPF5yUiVE04ar6Ny5pZLxJEnbDEOAE
|
|
4
|
+
TxOn1gzCKeRHYOcgybDi6TLhnvyFyIaXKzyBhEYvxI8VvRV11UawLqvpgVrdsbZy
|
|
5
|
+
1FQOMLq7OB+J6qC7fhR61F6Wu45RZlZMB482c658P7dCQCdQtEMEF5kuBNB/JuUR
|
|
6
|
+
e0qKjl2udKVL3wgBC7J7o7Tx8kY5T63q/ZC3TfoTclFeXtIePt8Eu74u3d6WpSWb
|
|
7
|
+
Z12mewRBVPtmbGHgEXpih3uayaqIeC8Dc4zO5QIDAQABAoIBAQCPMGJR36YS6DGL
|
|
8
|
+
xAeOTbyERvykxSVKWDzPxvXLXE1SqMRz8u9K+Z/GfjBY8nN7XkDjbQGCygHxvLpz
|
|
9
|
+
0me0IfEZuwEsbCmsSw3Q06PfYBaFY+ZAg6PrYVRynL6hAR+UA3GAVAdz0bpOI7od
|
|
10
|
+
LQRoV65CMzF8A1RGfqKvUClAcph2j4lbjjRZ1OExDdcbRCI4h9qgGOMo9o9OEB1X
|
|
11
|
+
HHiPhtS1ZwjczqCyJHkkHbOgYNPN7SDy8vHFOVjMDIADF+S/NLrxGUUIUDvNMnGV
|
|
12
|
+
D4G8thQD2zSatMjlbJJ+oNt++T/SJMSIiuQTB5zy/KpiMPUN+AXhq5h/dHDcFXhA
|
|
13
|
+
ng2deEcJAoGBAOQr1g/s/3V32tQpYloTMOPqIJoVnZnlcXbKy3nWLuOrkVlM0x3V
|
|
14
|
+
AEwC7ntb2eOSQ331AvBd/EESgtZr1jvxfsHG+MjwEylcOE33g4MqCKthGcnFA8zG
|
|
15
|
+
Z5h6OqTtHdY1bmuiisPvBA4/x2o7mWJz35vT0Sny3cci3f2D6pmPpuq3AoGBANlv
|
|
16
|
+
wjWgeDQSR8nTdM1P7zepVdN51f8Fl3r49kMhceVHdwL5iL7q4GkxUgpCyBkFoElW
|
|
17
|
+
vmsLgR1fnb+qBtF2kvljQtlRrlgwz1GgYNhp+aAgcAjvQ9fQcvCLr1leXzf6VBHx
|
|
18
|
+
jXEIUAlAJVlJ5gWKlDNK9ytjurOvOXipRC4GQKdDAoGBALNOt6RATOjVTYSZGQ9M
|
|
19
|
+
MYmKPiCYiAeexbHi4FBYvvRvqYOR2f6BmwAg9aS/o9Uw5hUf7DVUxp2knGlAyVTG
|
|
20
|
+
DSTe5jeSYpyIOj8bGaCD8dgsMIXda4ULDfJHa7qcFGx4BNRVIdOkC33fJSkYuQsj
|
|
21
|
+
oD/nD2J1109c2TMW7c/LkhK1AoGAUD8xws7tbfJNMkxrMBbPJ5DETx8I/myW4lid
|
|
22
|
+
slrWiRLd9mgXsrZGiiwcphLNfIaaCFcOQb1mMmwGcSUUDRwg1A9xLXk6yeuBqBNz
|
|
23
|
+
iotaCGHQV0vOkwioUuSKm4X7yFIH0vN+CvhRaYiWACUI0oS5e1CwdgABeK0znbeC
|
|
24
|
+
pSXDmLcCgYEA1ls595Ue5cUCmFDvpCIifsATNOMPguKeFuPbYSItQod3P3Bj6txV
|
|
25
|
+
phe0jUtWPhIF3I0XOtea2Usvbrj64GMNWLaeK2pdsbIWBlsu2tuqaAfKYiGpGCAh
|
|
26
|
+
QWGAPwZ4w7Z3nmA6IhaD6zUnzBGserHv59XttKK0AiQwYMn6UvUIq0M=
|
|
27
|
+
-----END RSA PRIVATE KEY-----
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIDbjCCAlYCCQDudXfDH36/JjANBgkqhkiG9w0BAQsFADB5MRswGQYDVQQDDBJ0
|
|
3
|
+
ZXN0aW5ndG9vbGtpdGRmc3AxCzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARPaGlvMREw
|
|
4
|
+
DwYDVQQHDAhDb2x1bWJ1czEYMBYGA1UECgwPVGVzdGluZyBUb29sa2l0MREwDwYD
|
|
5
|
+
VQQLDAhQYXltZW50czAeFw0yMDAzMjQxNzU1MjZaFw0yNTAzMjMxNzU1MjZaMHkx
|
|
6
|
+
GzAZBgNVBAMMEnRlc3Rpbmd0b29sa2l0ZGZzcDELMAkGA1UEBhMCVVMxDTALBgNV
|
|
7
|
+
BAgMBE9oaW8xETAPBgNVBAcMCENvbHVtYnVzMRgwFgYDVQQKDA9UZXN0aW5nIFRv
|
|
8
|
+
b2xraXQxETAPBgNVBAsMCFBheW1lbnRzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
|
9
|
+
MIIBCgKCAQEAwczEjlUeOPutgPRlpZSbcbJJwsmmxsBfoPDw1sjBiR7L6DohVqKd
|
|
10
|
+
810+TmiDRYgCzOLabje/mtLiDC95MtuPF5yUiVE04ar6Ny5pZLxJEnbDEOAETxOn
|
|
11
|
+
1gzCKeRHYOcgybDi6TLhnvyFyIaXKzyBhEYvxI8VvRV11UawLqvpgVrdsbZy1FQO
|
|
12
|
+
MLq7OB+J6qC7fhR61F6Wu45RZlZMB482c658P7dCQCdQtEMEF5kuBNB/JuURe0qK
|
|
13
|
+
jl2udKVL3wgBC7J7o7Tx8kY5T63q/ZC3TfoTclFeXtIePt8Eu74u3d6WpSWbZ12m
|
|
14
|
+
ewRBVPtmbGHgEXpih3uayaqIeC8Dc4zO5QIDAQABMA0GCSqGSIb3DQEBCwUAA4IB
|
|
15
|
+
AQAZ1lQ/KcSGwy/jQUIGF87JugLU17nnIEG2TrkC5n+fZDQqs8QqU6itbkdGQyNj
|
|
16
|
+
F5aLoPEdrKzevnBztlAEq0bofR0uDnQPN74A/NwOUfWds0hq5elZnO9Uq0G15Go4
|
|
17
|
+
pfqLbSjHxSu6LZaHP6f9+WvMqNbGr3kipz8GSIQWixzdKBnNxCwWjZmk4gD5cahU
|
|
18
|
+
XIpMAZumsnKk6pWilmuMIxC579CyLkGdVze3Kj6GunUJ1pieZzv4+RUJz8NgXxjW
|
|
19
|
+
ZRwqCkEqPe/8S1X9srtcrdbHryDdC18Ldu/rADEKbSqy0BhQdKYDcxulaQuqibwD
|
|
20
|
+
i0dWSdTWoseAbUqp2ACc6aF/
|
|
21
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
OUTPUT_DIR="."
|
|
2
|
+
|
|
3
|
+
rm *.key *.pem *.csr *.crt *.srl
|
|
4
|
+
|
|
5
|
+
## Generating Server CA certificate
|
|
6
|
+
openssl genrsa -out "$OUTPUT_DIR/hub_server_cakey.key" 4096
|
|
7
|
+
openssl req -new -sha256 -config openssl.conf -nodes -x509 -days 10000 -extensions v3_ca -key "$OUTPUT_DIR/hub_server_cakey.key" -out "$OUTPUT_DIR/hub_server_cacert.pem" -subj '/CN=hubserverca/C=US/ST=Ohio/L=Columbus/O=Hub Server CA/OU=Payments'
|
|
8
|
+
|
|
9
|
+
## Generate server key
|
|
10
|
+
openssl genrsa -out "$OUTPUT_DIR/hub_server_key.key" 4096
|
|
11
|
+
|
|
12
|
+
## Generate server csr
|
|
13
|
+
openssl req -new -sha256 -config openssl.conf -key hub_server_cakey.key -subj "/C=US/ST=CA/O=Hub Server/CN=mojaloop-testing-toolkit" -out hub_server.csr
|
|
14
|
+
|
|
15
|
+
## Sign server cert
|
|
16
|
+
openssl x509 -req -days 3650 -sha256 -extfile openssl.conf -extensions v3_req -in hub_server.csr -signkey hub_server_key.key -CA hub_server_cacert.pem -CAkey hub_server_cakey.key -CAcreateserial -out hub_server_cert.pem
|
|
17
|
+
|
|
18
|
+
## Generating Client CA certificate
|
|
19
|
+
openssl genrsa -out "$OUTPUT_DIR/hub_client_cakey.key" 4096
|
|
20
|
+
openssl req -new -sha256 -config openssl.conf -nodes -x509 -days 10000 -extensions v3_ca -key "$OUTPUT_DIR/hub_client_cakey.key" -out "$OUTPUT_DIR/hub_client_cacert.pem" -subj '/CN=hubclientca/C=US/ST=Ohio/L=Columbus/O=Hub Client CA/OU=Payments'
|
|
21
|
+
|
|
22
|
+
## Generate client key
|
|
23
|
+
openssl genrsa -out "$OUTPUT_DIR/hub_client_key.key" 4096
|
|
24
|
+
|
|
25
|
+
## Generate client csr
|
|
26
|
+
openssl req -new -sha256 -key hub_client_key.key -out "$OUTPUT_DIR/hub_client.csr" -subj '/CN=hubclient/C=US/ST=Ohio/L=Columbus/O=Hub Client/OU=Payments/emailAddress=admin@hubclient.com'
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
#openssl x509 -in hub_server_cert.pem -text -noout
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE REQUEST-----
|
|
2
|
+
MIIE1TCCAr0CAQAwgY8xEjAQBgNVBAMMCWh1YmNsaWVudDELMAkGA1UEBhMCVVMx
|
|
3
|
+
DTALBgNVBAgMBE9oaW8xETAPBgNVBAcMCENvbHVtYnVzMRMwEQYDVQQKDApIdWIg
|
|
4
|
+
Q2xpZW50MREwDwYDVQQLDAhQYXltZW50czEiMCAGCSqGSIb3DQEJARYTYWRtaW5A
|
|
5
|
+
aHViY2xpZW50LmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMXw
|
|
6
|
+
zRGgrVa7eiuO6ZgNc16gLTW+akYh86CDIiIYtDIKUcLsmViLVXqMdPbaheMPTNr3
|
|
7
|
+
PGhAYyMjRUSf/PtxokTexyfr2ATF1JL8MC9ea6y4nnKfuf5mHdEyWCEGMywNPsVO
|
|
8
|
+
2Dvf8w7RmV+Do/HzE0479lK/JqFAOxeSrNiQXhmJ1gv6Km7E4tuvqVLDhry55LWN
|
|
9
|
+
MSpT8dcHoYylzvtutXTlYTZfPAN9J7cqHS/BdXPOw5GM0104RKctR6ma6bCt3OvV
|
|
10
|
+
BqrKsvJ+cKOmfj86jYottMWKLlDYkszikqsKOQebqjNj8wDTNX4JhETkjF2WlemN
|
|
11
|
+
h4FBTmzmE88ugUY3b+PsySZxsbL1UURZINofsZTGyjV6GETKeGXVbIvJAY4+xpES
|
|
12
|
+
vv0QhBjz7aX4rNngbERuMkXa3WF4EYkU1Yl61XnWvYSm5MAF2j+oGoOD4SgxXJxm
|
|
13
|
+
Xs5jS4wAYBPA1VkafaXQQ/cCrD+F3kxSy+CHnuTaPt/Dqq89zvN9yMcqwkdIChfY
|
|
14
|
+
og8NP01aMe84rkcfQpBVUe9wkgo/lsFqBE9lRuuxhFpGyhNL1g9VJ/DSVIkZm8Ba
|
|
15
|
+
1jcGbl25SdtU0FswGLkl45JpQtjvErdldNerhcxHoAVA1AlqRS71lV8Uq5TqdLHh
|
|
16
|
+
fMz8JSV9YEyAc4gP2YBOfonHFtXGyelYHukblHi3AgMBAAGgADANBgkqhkiG9w0B
|
|
17
|
+
AQsFAAOCAgEAqHiCShmAw+D0MBPTll4bJMeIk6PhlhV/OaLakDoAu4HjQgaMODP2
|
|
18
|
+
uJjX07jRQFiMPFNJNgTJHfdl/azSIsfI56/6XVmUwYENDzwUVHkBo0d9XSCPX+cn
|
|
19
|
+
gFRc6J2ccGJO0O+ac8lsvIrAWd72chbhAxm09xQ/iz4aT+zwc7TrpYtn6mdfTkWD
|
|
20
|
+
xrNTcuUrT2CBNQKpO3m2oA/lJbnlfoz+m16hJQmmLX5i+qympS9EmH9un5yH4Lx+
|
|
21
|
+
EuiMcuKad4kxQF27hnnp9z/WQr/DR6Y826NpqWDA5gvJcCXo+ACfl+JIQSN54Z68
|
|
22
|
+
J0C+1idE5lY12jgXUGBMn3gwAA39hucPDVu4br0Q6oOnYLD8ZnVpsy1Pvf1ekIvb
|
|
23
|
+
PJEYOUu8lsuwJQcpdLwrEV2WDFsxRalYTnvYazv+dtBmidSHziZythQZNPcDQNvN
|
|
24
|
+
8OmwEE0t+o9TpEgHRVLonwRm3AfHiEmD/fsj0yylZzg7hSDa9QaQ1TW/nCC/3KfZ
|
|
25
|
+
ASztRCe+teibaLbRiLNUwhI+kkYTy1jibeDtb7A/FE8rlnC21e+5/Ds+90FEtcaG
|
|
26
|
+
kesHJkC7rtzGlsdZGB0HnDJTWE9vxFsIcHf0+oJ73yKI/17+0DW7jBFp874hdhMj
|
|
27
|
+
ip8xnZFDmplztB3aPzIpmNClAcNn5AP+m9cKbg8wY/wmTcRlF7hNAMU=
|
|
28
|
+
-----END CERTIFICATE REQUEST-----
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIFdjCCA16gAwIBAgIJAL5G4HWE3SsRMA0GCSqGSIb3DQEBCwUAMHAxFDASBgNV
|
|
3
|
+
BAMMC2h1YmNsaWVudGNhMQswCQYDVQQGEwJVUzENMAsGA1UECAwET2hpbzERMA8G
|
|
4
|
+
A1UEBwwIQ29sdW1idXMxFjAUBgNVBAoMDUh1YiBDbGllbnQgQ0ExETAPBgNVBAsM
|
|
5
|
+
CFBheW1lbnRzMB4XDTIwMDQwNzIwMjA0NVoXDTQ3MDgyNDIwMjA0NVowcDEUMBIG
|
|
6
|
+
A1UEAwwLaHViY2xpZW50Y2ExCzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARPaGlvMREw
|
|
7
|
+
DwYDVQQHDAhDb2x1bWJ1czEWMBQGA1UECgwNSHViIENsaWVudCBDQTERMA8GA1UE
|
|
8
|
+
CwwIUGF5bWVudHMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDGeRcG
|
|
9
|
+
9RbcFLGTw5v9AsB3wTrcOCX3VQT8sCODAotd6heuOZwxeODZ1it35OtfNwhSDNlC
|
|
10
|
+
xg3GxYnh+PThWpCW7fHeXYKskj+0iXtgOdnoyjJQbXW4YTHWt+m/1AaB3A2QgEwP
|
|
11
|
+
2alxSXqKVTPar70Swh8CSyfMWObXGHk6ydhZ87bxnwBsb2zCf4TX/CXpgV/Dq+fA
|
|
12
|
+
EQHF/FJSNYKsSx/ElNnsaN9VF9g8GbQwcTFSqZXv0zQkUai8U1l4zIj1w6ZsAiXK
|
|
13
|
+
u93s4fa6mCRM56o45bcjh4zgX0MfWFEYGzFN6tpkeiFJwV2jsZoEEv0SBgw8jGCF
|
|
14
|
+
9U3zc3G4LDmI1CIUk0E9gq3EoWQFZWS2ILcH/GjuqII2qavJ5HdcneN8sRWRz5RS
|
|
15
|
+
6jzWsJlB+wLocXXS8Kv44zQWQJRsbPWbSowtTjie6XIWgAQWiSVzZeu2/zHchC/3
|
|
16
|
+
CBL9vDT5qn70c5cdRkACS2phZZF4vLekEYfWxRYqLs6iaGTjc6FiYoKf3sqm6LPN
|
|
17
|
+
2Gz9OTH16qklA3jzY4jFSmDeoqYYBGGxbKgWN/w5SII+w+GROjz+dH9Ut4cFEUuC
|
|
18
|
+
IZ/rqUPYBgU11YR2feOqGLweBb54dSGxa0sf4jQLIzy36EXGOeiz8O5K/bcitFyE
|
|
19
|
+
kkIIiFFzt44H4mIUamamk3WF7GTp+r5XSbNyQQIDAQABoxMwETAPBgNVHRMBAf8E
|
|
20
|
+
BTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQCH/r0Wjh7FKDnXi707BZwgZL4Agu+Z
|
|
21
|
+
sntNZx7lbkJKLovpAouN7oHqwSJ5b1r7KOoW8RFZk/5wHBsis1GTU1HHaErAG/KU
|
|
22
|
+
jSz7amU1aUCKaXk/qMyEF6oVQ09a06OMYfqhNwzLL+zuzZT274z/WEA9V/EOkLrF
|
|
23
|
+
sm34vSZk8RMVwcnja0Tq21K6gk7hJ64cq1/sOtZhS6t6YRnzu7mA0PjnaeHPuGBv
|
|
24
|
+
qxYt1WmMvxEzBP6D6NgFRKuwDmZxDH9mV+o3BTktzUh83F40I5rjzXI7Wfw/D3Od
|
|
25
|
+
1Sgypq/rJJowCBWY7NkWfB1Oykl1Ql3ThUNSwDaN8WZLZINQcwjbv5CWoJ8uJ3yX
|
|
26
|
+
YNy/29k1jmsjx0/LdH3oHshdhfnekUSqRjHsSHqKuobwr7mivERKIPywQQzqId0+
|
|
27
|
+
SW/Y4wMXroVCSDhApDy5CKXpW1j4fRWQy+vgLZTof3t8mv4znfc+P8M0ET/HoH2Q
|
|
28
|
+
q1B8Cwis0JIxfMQJ/HiypVo0g2cPCpqQkhwJk8kFuJccPiCnm9yR5wsmVm0wF1/d
|
|
29
|
+
glB2lou8lGNBjnMuRxSjQ6S/k4XNGupV8D9qnoHCrIcfNRwfsNIFFRbbDFn9pfog
|
|
30
|
+
IV4kF6529qmxTMcmQXCPhkTHRkTypvPc9Hgxd60GtJVmHIxBFHRWNcSRVFuZtyHm
|
|
31
|
+
cTQg3x0mFGAD9Q==
|
|
32
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
+
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
|
|
51
|
+
-----END RSA PRIVATE KEY-----
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
+
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
|
|
51
|
+
-----END RSA PRIVATE KEY-----
|