@verii/server-credentialagent 1.0.0-pre.1752076816
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/.localdev.e2e.env +40 -0
- package/.localdev.env +41 -0
- package/.standalone.env +5 -0
- package/LICENSE +202 -0
- package/NOTICE +1 -0
- package/README.md +19 -0
- package/docker/compose.yml +33 -0
- package/e2e/README.md +12 -0
- package/e2e/org-registration-and-issuing.e2e.test.js +624 -0
- package/jest.config.js +20 -0
- package/migrate-mongo.config.js +36 -0
- package/migrations/20210317133137-add-index-to-offers-repo.js +57 -0
- package/migrations/20210416145639-add-index-to-revocation-list.js +27 -0
- package/migrations/20210719120225-add_unique_did_index_to_tenant.js +45 -0
- package/migrations/20230524053029-add-vendorUserIdMappings-index.js +32 -0
- package/migrations/20230616111907-add-configuration-type-index.js +32 -0
- package/package.json +108 -0
- package/src/assets/public/favicon.ico +0 -0
- package/src/assets/public/logo192.png +0 -0
- package/src/assets/public/logo512.png +0 -0
- package/src/assets/public/manifest.json +28 -0
- package/src/assets/templates/app-redirect.hbs +16 -0
- package/src/config/config.js +44 -0
- package/src/config/core-config.js +143 -0
- package/src/config/holder-config.js +104 -0
- package/src/config/index.js +22 -0
- package/src/config/operator-config.js +64 -0
- package/src/controllers/autoload-holder-api-controllers.js +30 -0
- package/src/controllers/autoload-operator-api-controllers.js +31 -0
- package/src/controllers/autoload-root-api-controller.js +30 -0
- package/src/controllers/autoload-saasoperator-api-controllers.js +31 -0
- package/src/controllers/holder/autohooks.js +55 -0
- package/src/controllers/holder/get-exchange-progress/autohooks.js +27 -0
- package/src/controllers/holder/get-exchange-progress/controller.js +50 -0
- package/src/controllers/holder/inspect/autohooks.js +35 -0
- package/src/controllers/holder/inspect/get-presentation-request/controller.js +100 -0
- package/src/controllers/holder/inspect/schemas/holder-disclosure.schema.json +73 -0
- package/src/controllers/holder/inspect/schemas/index.js +33 -0
- package/src/controllers/holder/inspect/schemas/presentation-definition.v1.schema.json +461 -0
- package/src/controllers/holder/inspect/schemas/presentation-request.schema.json +279 -0
- package/src/controllers/holder/inspect/schemas/presentation-submission.schema.json +41 -0
- package/src/controllers/holder/inspect/schemas/siop-presentation-submission.schema.json +74 -0
- package/src/controllers/holder/inspect/schemas/velocity-presentation-submission.response.200.schema.json +36 -0
- package/src/controllers/holder/inspect/schemas/velocity-presentation-submission.schema.json +34 -0
- package/src/controllers/holder/inspect/submit-presentation/controller.js +89 -0
- package/src/controllers/holder/issue/autohooks.js +23 -0
- package/src/controllers/holder/issue/get-credential-manifest/controller.js +193 -0
- package/src/controllers/holder/issue/offers/autohooks.js +35 -0
- package/src/controllers/holder/issue/offers/controller.js +164 -0
- package/src/controllers/holder/issue/offers/credential-offers/controller.js +460 -0
- package/src/controllers/holder/issue/submit-identification/autohooks.js +37 -0
- package/src/controllers/holder/issue/submit-identification/controller.js +63 -0
- package/src/controllers/holder/oauth/autohooks.js +19 -0
- package/src/controllers/holder/oauth/controller.js +140 -0
- package/src/controllers/index.js +22 -0
- package/src/controllers/operator/tenants/_tenantId/autohooks.js +40 -0
- package/src/controllers/operator/tenants/_tenantId/check-credentials/autohooks.js +24 -0
- package/src/controllers/operator/tenants/_tenantId/check-credentials/controller-v0.8.js +200 -0
- package/src/controllers/operator/tenants/_tenantId/check-credentials/schemas/index.js +19 -0
- package/src/controllers/operator/tenants/_tenantId/check-credentials/schemas/vendor-credential.schema.json +244 -0
- package/src/controllers/operator/tenants/_tenantId/controller-v0.8.js +221 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/_id/autohooks.js +30 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/_id/controller-v0.8.js +271 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/autohooks.js +45 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/controller-v0.8.js +199 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/schemas/add-feed.schema.js +14 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/schemas/feed.schema.json +27 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/schemas/index.js +25 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/schemas/modify-feed-update-body.schema.js +18 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/schemas/modify-feed.schema.json +19 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/autohooks.js +34 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/controller-v0.8.js +100 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/schemas/agent-disclosure-presentation-definition.schema.json +404 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/schemas/agent-disclosure.schema.js +24 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/schemas/index.js +29 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/schemas/new-agent-disclosure.schema.json +166 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/schemas/update-agent-disclosure.schema.js +20 -0
- package/src/controllers/operator/tenants/_tenantId/exchanges/_exchangeId/autohooks.js +30 -0
- package/src/controllers/operator/tenants/_tenantId/exchanges/_exchangeId/controller-v0.8.js +73 -0
- package/src/controllers/operator/tenants/_tenantId/exchanges/autohooks.js +19 -0
- package/src/controllers/operator/tenants/_tenantId/exchanges/controller-v0.8.js +150 -0
- package/src/controllers/operator/tenants/_tenantId/exchanges/schemas/get-exchange.response.body.json +147 -0
- package/src/controllers/operator/tenants/_tenantId/exchanges/schemas/index.js +21 -0
- package/src/controllers/operator/tenants/_tenantId/issued-credentials/autohooks.js +27 -0
- package/src/controllers/operator/tenants/_tenantId/issued-credentials/controller-v0.8.js +303 -0
- package/src/controllers/operator/tenants/_tenantId/issued-credentials/schemas/index.js +23 -0
- package/src/controllers/operator/tenants/_tenantId/issued-credentials/schemas/issued-credential.schema.json +115 -0
- package/src/controllers/operator/tenants/_tenantId/issued-credentials/schemas/revoke-credentials.schema.json +18 -0
- package/src/controllers/operator/tenants/_tenantId/keys/controller-v0.8.js +168 -0
- package/src/controllers/operator/tenants/_tenantId/offer-data/controller-v0.8.js +78 -0
- package/src/controllers/operator/tenants/_tenantId/offers/autohooks.js +34 -0
- package/src/controllers/operator/tenants/_tenantId/offers/controller-v0.8.js +253 -0
- package/src/controllers/operator/tenants/_tenantId/offers/schemas/index.js +23 -0
- package/src/controllers/operator/tenants/_tenantId/offers/schemas/new-vendor-offer.schema.js +47 -0
- package/src/controllers/operator/tenants/_tenantId/offers/schemas/vendor-offer.schema.json +56 -0
- package/src/controllers/operator/tenants/_tenantId/users/autohooks.js +24 -0
- package/src/controllers/operator/tenants/_tenantId/users/controller-v0.8.js +92 -0
- package/src/controllers/operator/tenants/_tenantId/users/schemas/index.js +23 -0
- package/src/controllers/operator/tenants/_tenantId/users/schemas/new-user.schema.json +13 -0
- package/src/controllers/operator/tenants/_tenantId/users/schemas/user.schema.json +16 -0
- package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/autohooks.js +34 -0
- package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/controller-v0.8.js +110 -0
- package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/Credential.schema.js +18 -0
- package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/IssueCredentialOptions.schema.json +42 -0
- package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/IssueCredentialRequest.schema.json +13 -0
- package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/IssueCredentialResponse.schema.json +19 -0
- package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/LinkedDataProof.schema.json +43 -0
- package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/VerifiableCredential.schema.js +16 -0
- package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/index.js +31 -0
- package/src/controllers/operator/tenants/autohooks.js +65 -0
- package/src/controllers/operator/tenants/controller-v0.8.js +167 -0
- package/src/controllers/operator/tenants/schemas/index.js +41 -0
- package/src/controllers/operator/tenants/schemas/modify-secret.schema.json +11 -0
- package/src/controllers/operator/tenants/schemas/modify-tenant-v0.8.schema.json +44 -0
- package/src/controllers/operator/tenants/schemas/new-tenant-v0.8.schema.json +19 -0
- package/src/controllers/operator/tenants/schemas/new-tenant.response.200.schema.json +7 -0
- package/src/controllers/operator/tenants/schemas/secret-key-metadata.schema.json +31 -0
- package/src/controllers/operator/tenants/schemas/secret-key.schema.json +29 -0
- package/src/controllers/operator/tenants/schemas/secret-kid.schema.json +13 -0
- package/src/controllers/operator/tenants/schemas/secret-new-tenant-v0.8.schema.json +28 -0
- package/src/controllers/operator/tenants/schemas/secret-tenant-key-v0.8.schema.json +13 -0
- package/src/controllers/operator/tenants/schemas/tenant-key-v0.8.schema.json +14 -0
- package/src/controllers/operator/tenants/schemas/tenant-v0.8.schema.json +62 -0
- package/src/controllers/root/autohooks.js +23 -0
- package/src/controllers/root/controller.js +173 -0
- package/src/controllers/saasoperator/groups/_id/autohooks.js +9 -0
- package/src/controllers/saasoperator/groups/_id/controller.js +121 -0
- package/src/controllers/saasoperator/groups/autohooks.js +19 -0
- package/src/controllers/saasoperator/groups/controller.js +65 -0
- package/src/controllers/saasoperator/groups/schemas/group.schema.js +17 -0
- package/src/controllers/saasoperator/groups/schemas/index.js +4 -0
- package/src/controllers/saasoperator/groups/schemas/new-group.schema.js +13 -0
- package/src/entities/common/domains/get-json-at-path.js +28 -0
- package/src/entities/common/domains/index.js +17 -0
- package/src/entities/common/index.js +17 -0
- package/src/entities/credentials/domains/credential-format.js +22 -0
- package/src/entities/credentials/domains/index.js +19 -0
- package/src/entities/credentials/index.js +17 -0
- package/src/entities/deep-links/domains/extract-did.js +11 -0
- package/src/entities/deep-links/domains/index.js +20 -0
- package/src/entities/deep-links/domains/velocity-protocol-uri-to-http-uri.js +32 -0
- package/src/entities/deep-links/index.js +19 -0
- package/src/entities/disclosures/domains/assert-disclosure-active.js +21 -0
- package/src/entities/disclosures/domains/compute-disclosure-configuration-type.js +29 -0
- package/src/entities/disclosures/domains/constants.js +61 -0
- package/src/entities/disclosures/domains/errors.js +34 -0
- package/src/entities/disclosures/domains/get-disclosure-configuration-type.js +60 -0
- package/src/entities/disclosures/domains/index.js +32 -0
- package/src/entities/disclosures/domains/is-issuing-disclosure.js +23 -0
- package/src/entities/disclosures/domains/parse-body-to-disclosure.js +17 -0
- package/src/entities/disclosures/domains/validate-by-identification-method.js +69 -0
- package/src/entities/disclosures/domains/validate-commercial-entity.js +26 -0
- package/src/entities/disclosures/domains/validate-disclosure-by-configuration-type.js +47 -0
- package/src/entities/disclosures/domains/validate-disclosure-default-issuing.js +77 -0
- package/src/entities/disclosures/domains/validate-disclosure.js +37 -0
- package/src/entities/disclosures/domains/validate-feed.js +16 -0
- package/src/entities/disclosures/domains/validate-presentation-definition.js +54 -0
- package/src/entities/disclosures/domains/validate-vendor-endpoint.js +22 -0
- package/src/entities/disclosures/domains/validate-vendor-webhook.js +18 -0
- package/src/entities/disclosures/factories/disclosure-factory.js +94 -0
- package/src/entities/disclosures/factories/index.js +19 -0
- package/src/entities/disclosures/index.js +22 -0
- package/src/entities/disclosures/orchestrators/get-disclosure.js +18 -0
- package/src/entities/disclosures/orchestrators/index.js +20 -0
- package/src/entities/disclosures/orchestrators/update-disclosure-configuration-type.js +32 -0
- package/src/entities/disclosures/repos/index.js +20 -0
- package/src/entities/disclosures/repos/repo.js +118 -0
- package/src/entities/disclosures/repos/set-configuration-type.js +33 -0
- package/src/entities/exchanges/adapters/index.js +17 -0
- package/src/entities/exchanges/adapters/sign-exchange-response.js +45 -0
- package/src/entities/exchanges/domains/build-exchange-progress.js +56 -0
- package/src/entities/exchanges/domains/constants.js +24 -0
- package/src/entities/exchanges/domains/ensure-exchange-state-valid.js +35 -0
- package/src/entities/exchanges/domains/errors.js +33 -0
- package/src/entities/exchanges/domains/index.js +25 -0
- package/src/entities/exchanges/domains/states.js +43 -0
- package/src/entities/exchanges/domains/types.js +31 -0
- package/src/entities/exchanges/factories/disclosure-exchange-factory.js +46 -0
- package/src/entities/exchanges/factories/index.js +20 -0
- package/src/entities/exchanges/factories/offer-exchange-factory.js +48 -0
- package/src/entities/exchanges/index.js +23 -0
- package/src/entities/exchanges/orchestrators/build-exchange-request-deep-link.js +50 -0
- package/src/entities/exchanges/orchestrators/index.js +19 -0
- package/src/entities/exchanges/repos/exchange-repo-projections.js +45 -0
- package/src/entities/exchanges/repos/exchange-state-repo-extension.js +76 -0
- package/src/entities/exchanges/repos/index.js +20 -0
- package/src/entities/exchanges/repos/repo.js +44 -0
- package/src/entities/feeds/factories/feed-factory.js +47 -0
- package/src/entities/feeds/factories/index.js +19 -0
- package/src/entities/feeds/index.js +20 -0
- package/src/entities/feeds/repos/index.js +19 -0
- package/src/entities/feeds/repos/repo.js +95 -0
- package/src/entities/groups/domains/format-group.js +11 -0
- package/src/entities/groups/domains/index.js +3 -0
- package/src/entities/groups/factories/group-factory.js +40 -0
- package/src/entities/groups/factories/index.js +19 -0
- package/src/entities/groups/index.js +22 -0
- package/src/entities/groups/orchestrators/find-group-or-error.js +16 -0
- package/src/entities/groups/orchestrators/index.js +6 -0
- package/src/entities/groups/orchestrators/validate-did.js +24 -0
- package/src/entities/groups/orchestrators/validate-group-by-user.js +16 -0
- package/src/entities/groups/orchestrators/validate-group.js +39 -0
- package/src/entities/groups/repos/delete-tenant-extension.js +13 -0
- package/src/entities/groups/repos/index.js +19 -0
- package/src/entities/groups/repos/repo.js +38 -0
- package/src/entities/groups/repos/update-or-error-extension.js +46 -0
- package/src/entities/index.js +37 -0
- package/src/entities/keys/domains/constants.js +37 -0
- package/src/entities/keys/domains/index.js +21 -0
- package/src/entities/keys/domains/is-matching-private-key-kid.js +41 -0
- package/src/entities/keys/domains/validate-key.js +62 -0
- package/src/entities/keys/factories/index.js +19 -0
- package/src/entities/keys/factories/key-factory.js +56 -0
- package/src/entities/keys/index.js +22 -0
- package/src/entities/keys/orchestrators/index.js +3 -0
- package/src/entities/keys/orchestrators/validate-did-doc-keys.js +69 -0
- package/src/entities/metadata-list-allocations/index.js +19 -0
- package/src/entities/metadata-list-allocations/repos/index.js +19 -0
- package/src/entities/metadata-list-allocations/repos/repo.js +40 -0
- package/src/entities/notifications/domains/index.js +19 -0
- package/src/entities/notifications/domains/notification-types.js +25 -0
- package/src/entities/notifications/index.js +19 -0
- package/src/entities/offers/domains/build-clean-pii-filter.js +35 -0
- package/src/entities/offers/domains/build-deeplink-url.js +120 -0
- package/src/entities/offers/domains/build-offer.js +88 -0
- package/src/entities/offers/domains/build-qr-code-url.js +37 -0
- package/src/entities/offers/domains/constants.js +32 -0
- package/src/entities/offers/domains/filter-object-ids.js +34 -0
- package/src/entities/offers/domains/generate-issuing-challenge.js +26 -0
- package/src/entities/offers/domains/generate-link-code.js +35 -0
- package/src/entities/offers/domains/index.js +31 -0
- package/src/entities/offers/domains/post-validation-offers-handler.js +31 -0
- package/src/entities/offers/domains/prepare-linked-credentials-for-holder.js +36 -0
- package/src/entities/offers/domains/resolve-subject.js +142 -0
- package/src/entities/offers/domains/validate-offer-commercial-entity.js +24 -0
- package/src/entities/offers/domains/validate-offer.js +90 -0
- package/src/entities/offers/factories/index.js +19 -0
- package/src/entities/offers/factories/offer-factory.js +119 -0
- package/src/entities/offers/index.js +22 -0
- package/src/entities/offers/orchestrators/create-verifiable-credentials.js +131 -0
- package/src/entities/offers/orchestrators/finalize-exchange.js +44 -0
- package/src/entities/offers/orchestrators/index.js +23 -0
- package/src/entities/offers/orchestrators/load-credential-refs.js +57 -0
- package/src/entities/offers/orchestrators/load-credential-types-map.js +44 -0
- package/src/entities/offers/orchestrators/prepare-offers.js +35 -0
- package/src/entities/offers/orchestrators/trigger-issued-credentials-webhook.js +63 -0
- package/src/entities/offers/repos/clean-pii-extension.js +85 -0
- package/src/entities/offers/repos/index.js +20 -0
- package/src/entities/offers/repos/issued-credential-projection.js +44 -0
- package/src/entities/offers/repos/repo.js +177 -0
- package/src/entities/presentations/domains/build-identity-doc.js +120 -0
- package/src/entities/presentations/domains/build-request-response-schema.js +46 -0
- package/src/entities/presentations/domains/build-vendor-data.js +31 -0
- package/src/entities/presentations/domains/check-payment-requirement.js +30 -0
- package/src/entities/presentations/domains/errors.js +28 -0
- package/src/entities/presentations/domains/extract-fields-from-id-credential.js +35 -0
- package/src/entities/presentations/domains/index.js +26 -0
- package/src/entities/presentations/domains/merge-credential-check-results.js +24 -0
- package/src/entities/presentations/domains/validate-presentation.js +128 -0
- package/src/entities/presentations/index.js +20 -0
- package/src/entities/presentations/orchestrators/create-presentation-request.js +148 -0
- package/src/entities/presentations/orchestrators/deduplicate-disclosure-exchange.js +52 -0
- package/src/entities/presentations/orchestrators/handle-presentation-submission.js +47 -0
- package/src/entities/presentations/orchestrators/index.js +20 -0
- package/src/entities/presentations/orchestrators/match-identity-on-exchange.js +114 -0
- package/src/entities/presentations/orchestrators/share-identification-credentials.js +110 -0
- package/src/entities/presentations/orchestrators/share-presentation.js +234 -0
- package/src/entities/push-delegate/get-push-delegate.js +37 -0
- package/src/entities/push-delegate/index.js +17 -0
- package/src/entities/redirect/index.js +3 -0
- package/src/entities/redirect/orchestrators/index.js +3 -0
- package/src/entities/redirect/orchestrators/load-org-info.js +40 -0
- package/src/entities/revocation-list-allocations/index.js +19 -0
- package/src/entities/revocation-list-allocations/repos/index.js +19 -0
- package/src/entities/revocation-list-allocations/repos/repo.js +40 -0
- package/src/entities/schemas/index.js +19 -0
- package/src/entities/schemas/orchestrators/index.js +19 -0
- package/src/entities/schemas/orchestrators/load-schema-validation.js +73 -0
- package/src/entities/tenants/domains/build-service-ids.js +27 -0
- package/src/entities/tenants/domains/extract-service.js +27 -0
- package/src/entities/tenants/domains/index.js +21 -0
- package/src/entities/tenants/domains/validate-service-ids.js +35 -0
- package/src/entities/tenants/factories/index.js +19 -0
- package/src/entities/tenants/factories/tenant-factory.js +37 -0
- package/src/entities/tenants/index.js +22 -0
- package/src/entities/tenants/orchestrators/add-primary-address-to-tenant.js +47 -0
- package/src/entities/tenants/orchestrators/create-tenant.js +91 -0
- package/src/entities/tenants/orchestrators/index.js +22 -0
- package/src/entities/tenants/orchestrators/refresh-tenant-dids.js +146 -0
- package/src/entities/tenants/orchestrators/set-tenant-default-issuing-disclosure.js +31 -0
- package/src/entities/tenants/repos/index.js +20 -0
- package/src/entities/tenants/repos/insert-tenant-extension.js +33 -0
- package/src/entities/tenants/repos/repo.js +52 -0
- package/src/entities/tenants/repos/tenant-default-projection.js +33 -0
- package/src/entities/tokens/adapters/access-token.js +49 -0
- package/src/entities/tokens/adapters/index.js +19 -0
- package/src/entities/tokens/index.js +19 -0
- package/src/entities/users/factories/index.js +19 -0
- package/src/entities/users/factories/user-factory.js +36 -0
- package/src/entities/users/index.js +20 -0
- package/src/entities/users/repos/add-anonymous-user-repo-extension.js +23 -0
- package/src/entities/users/repos/find-or-insert-vendor-user-repo-extension.js +30 -0
- package/src/entities/users/repos/index.js +19 -0
- package/src/entities/users/repos/repo.js +50 -0
- package/src/fetchers/index.js +20 -0
- package/src/fetchers/operator/identify-fetcher.js +36 -0
- package/src/fetchers/operator/index.js +21 -0
- package/src/fetchers/operator/inspection-fetcher.js +35 -0
- package/src/fetchers/operator/issuing-fetcher.js +50 -0
- package/src/fetchers/operator/webhook-auth-header.js +45 -0
- package/src/fetchers/push-gateway/generate-push-gateway-token.js +40 -0
- package/src/fetchers/push-gateway/index.js +19 -0
- package/src/fetchers/push-gateway/push-fetcher.js +39 -0
- package/src/index.js +19 -0
- package/src/init-holder-server.js +108 -0
- package/src/init-operator-server.js +101 -0
- package/src/init-server.js +120 -0
- package/src/main-holder.js +18 -0
- package/src/main-operator.js +19 -0
- package/src/main.js +18 -0
- package/src/plugins/autoload-repos.js +28 -0
- package/src/plugins/disclosure-loader-plugin.js +56 -0
- package/src/plugins/ensure-disclosure-active-plugin.js +30 -0
- package/src/plugins/ensure-disclosure-configuration-type-plugin.js +29 -0
- package/src/plugins/ensure-tenant-default-issuing-disclosure-id-plugin.js +60 -0
- package/src/plugins/ensure-tenant-primary-address-plugin.js +44 -0
- package/src/plugins/exchange-error-handler-plugin.js +51 -0
- package/src/plugins/exchange-loader-plugin.js +50 -0
- package/src/plugins/group-loader-plugin.js +51 -0
- package/src/plugins/index.js +32 -0
- package/src/plugins/kms-plugin.js +57 -0
- package/src/plugins/tenant-loader-plugin.js +91 -0
- package/src/plugins/validate-cao-plugin.js +81 -0
- package/src/plugins/vendor-routes-auth-plugin.js +24 -0
- package/src/plugins/verify-access-token-plugin.js +88 -0
- package/src/standalone.js +24 -0
- package/src/start-app-server.js +38 -0
- package/test/combined/app-redirect.test.js +199 -0
- package/test/combined/helpers/credentialagent-build-fastify.js +29 -0
- package/test/combined/helpers/index.js +22 -0
- package/test/combined/helpers/nock-registrar-app-schema-name.js +50 -0
- package/test/combined/helpers/nock-registrar-get-organization-diddoc.js +26 -0
- package/test/combined/helpers/nock-registrar-get-organization-verified-profile.js +33 -0
- package/test/combined/manifest.json.test.js +55 -0
- package/test/combined/root-controller.test.js +42 -0
- package/test/combined/schemas/education-degree.schema.json +166 -0
- package/test/combined/schemas/employment-current-v1.1.schema.json +253 -0
- package/test/combined/schemas/open-badge-credential.schema.json +1285 -0
- package/test/combined/schemas/past-employment-position-with-uri-id.schema.js +22 -0
- package/test/combined/schemas/past-employment-position.schema.json +148 -0
- package/test/combined/schemas/will-always-validate.json +10 -0
- package/test/combined/validate-cao-plugin.test.js +155 -0
- package/test/get-push-delegate.test.js +54 -0
- package/test/helpers/jwt-vc-expectation.js +109 -0
- package/test/holder/build-request-response-schema.test.js +55 -0
- package/test/holder/credential-manifest-controller.test.js +3192 -0
- package/test/holder/e2e-issuing-controller.test.js +425 -0
- package/test/holder/get-exchange-progress-controller.test.js +521 -0
- package/test/holder/get-presentation-request.test.js +906 -0
- package/test/holder/helpers/credential-type-metadata.js +98 -0
- package/test/holder/helpers/credentialagent-holder-build-fastify.js +32 -0
- package/test/holder/helpers/generate-presentation.js +441 -0
- package/test/holder/helpers/generate-test-access-token.js +54 -0
- package/test/holder/helpers/jwt-access-token-expectation.js +32 -0
- package/test/holder/helpers/jwt-vc-expectation.js +115 -0
- package/test/holder/issuing-controller.test.js +7076 -0
- package/test/holder/oauth-token-controller.test.js +412 -0
- package/test/holder/presentation-submission.test.js +2365 -0
- package/test/holder/submit-identification.test.js +4815 -0
- package/test/operator/check-credentials-controller-v0.8.test.js +832 -0
- package/test/operator/credentials-revoke.test.js +536 -0
- package/test/operator/disclosures-controller-v0.8.test.js +4157 -0
- package/test/operator/exchanges-controller-v0.8.test.js +414 -0
- package/test/operator/exchanges-id-controller-v0.8.test.js +162 -0
- package/test/operator/feeds-controller-v0.8.test.js +659 -0
- package/test/operator/generate-push-gateway-token.test.js +116 -0
- package/test/operator/groups-controller.test.js +145 -0
- package/test/operator/groups-id-controller.test.js +287 -0
- package/test/operator/helpers/create-test-org-doc.js +60 -0
- package/test/operator/helpers/credentialagent-operator-build-fastify.js +32 -0
- package/test/operator/helpers/find-kms-key.js +31 -0
- package/test/operator/helpers/generate-primary-and-add-operator-to-primary.js +63 -0
- package/test/operator/helpers/init-agent-kms.js +22 -0
- package/test/operator/issued-credentials-controller-v0.8.test.js +398 -0
- package/test/operator/keys-controller-v0.8.test.js +1130 -0
- package/test/operator/offer-data-controller-v0.8.test.js +253 -0
- package/test/operator/offers-controller-v0.8.test.js +3026 -0
- package/test/operator/set-configuration-type-modifier.test.js +75 -0
- package/test/operator/swagger.test.js +37 -0
- package/test/operator/tenant-controller-v0.8.test.js +730 -0
- package/test/operator/tenant-loader-plugin.test.js +96 -0
- package/test/operator/tenants-controller-v0.8.test.js +2093 -0
- package/test/operator/users-controller-v0.8.test.js +137 -0
- package/test/operator/vc-api-credentials.test.js +963 -0
- package/verification.env +28 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
module.exports = {
|
|
18
|
+
up: async (db) => {
|
|
19
|
+
await db.collection('offers').createIndexes(
|
|
20
|
+
[
|
|
21
|
+
{
|
|
22
|
+
key: { exchangeId: 1 },
|
|
23
|
+
name: 'exchangeIdIndex',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
key: { did: 1 },
|
|
27
|
+
name: 'didIndex',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
key: { 'issuer.id': 1 },
|
|
31
|
+
name: 'issuerIndex',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
key: { 'credentialSubject.vendorUserId': 1 },
|
|
35
|
+
name: 'credentialSubjectIndex',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
key: { offerId: 1 },
|
|
39
|
+
name: 'offerIdIndex',
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
{
|
|
43
|
+
sparse: true,
|
|
44
|
+
}
|
|
45
|
+
);
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
down: async (db) => {
|
|
49
|
+
db.collection('offers').dropIndexes({
|
|
50
|
+
exchangeIdIndex: 1,
|
|
51
|
+
issuerIndex: 1,
|
|
52
|
+
offerIdIndex: 1,
|
|
53
|
+
didIndex: 1,
|
|
54
|
+
credentialSubjectIndex: 1,
|
|
55
|
+
});
|
|
56
|
+
},
|
|
57
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
module.exports = {
|
|
18
|
+
up: async (db) => {
|
|
19
|
+
await db.collection('revocationLists').createIndex({ tenantId: 1 });
|
|
20
|
+
},
|
|
21
|
+
|
|
22
|
+
down: async (db) => {
|
|
23
|
+
db.collection('revocationLists').dropIndex({
|
|
24
|
+
tenantId: 1,
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const { each } = require('lodash/fp');
|
|
18
|
+
|
|
19
|
+
module.exports = {
|
|
20
|
+
up: async (db) => {
|
|
21
|
+
const tenantCollection = await db.collection('tenants');
|
|
22
|
+
const results = await tenantCollection.aggregate([
|
|
23
|
+
{ $group: { _id: '$did', count: { $sum: 1 } } },
|
|
24
|
+
{ $match: { _id: { $ne: null }, count: { $gt: 1 } } },
|
|
25
|
+
{ $project: { did: '$_id', _id: 0 } },
|
|
26
|
+
]);
|
|
27
|
+
const resultsArray = await results.toArray();
|
|
28
|
+
if (resultsArray.length > 0) {
|
|
29
|
+
// eslint-disable-next-line no-console
|
|
30
|
+
console.log(`${resultsArray.length} duplicates found.`);
|
|
31
|
+
// eslint-disable-next-line no-console
|
|
32
|
+
console.log(
|
|
33
|
+
'Please remove the following duplicate tenants before re-running the migration'
|
|
34
|
+
);
|
|
35
|
+
each((result) => {
|
|
36
|
+
// eslint-disable-next-line no-console
|
|
37
|
+
console.log(result);
|
|
38
|
+
}, resultsArray);
|
|
39
|
+
throw new Error('Found duplicate tenants');
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
await tenantCollection.createIndex({ did: 1 }, { unique: true });
|
|
43
|
+
},
|
|
44
|
+
down: async () => {},
|
|
45
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
module.exports = {
|
|
18
|
+
up: async (db) => {
|
|
19
|
+
await db.collection('vendorUserIdMappings').createIndexes([
|
|
20
|
+
{
|
|
21
|
+
key: { tenantId: 1, vendorUserId: 1 },
|
|
22
|
+
name: 'vendorUserIdIndex',
|
|
23
|
+
},
|
|
24
|
+
]);
|
|
25
|
+
},
|
|
26
|
+
|
|
27
|
+
down: async (db) => {
|
|
28
|
+
db.collection('vendorUserIdMappings').dropIndexes({
|
|
29
|
+
vendorUserIdIndex: 1,
|
|
30
|
+
});
|
|
31
|
+
},
|
|
32
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
module.exports = {
|
|
18
|
+
up: async (db) => {
|
|
19
|
+
await db.collection('disclosures').createIndexes([
|
|
20
|
+
{
|
|
21
|
+
key: { configurationType: 1 },
|
|
22
|
+
name: 'disclosureConfigurationTypeIndex',
|
|
23
|
+
},
|
|
24
|
+
]);
|
|
25
|
+
},
|
|
26
|
+
|
|
27
|
+
down: async (db) => {
|
|
28
|
+
db.collection('disclosures').dropIndexes({
|
|
29
|
+
disclosureConfigurationTypeIndex: 1,
|
|
30
|
+
});
|
|
31
|
+
},
|
|
32
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@verii/server-credentialagent",
|
|
3
|
+
"version": "1.0.0-pre.1752076816",
|
|
4
|
+
"description": "Credential Agent application",
|
|
5
|
+
"main": "src/index.js",
|
|
6
|
+
"repository": "https://github.com/LFDT-Verii/core",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=22.11.0"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"test": "jest ./test --config ./jest.config.js --runInBand --coverage",
|
|
12
|
+
"test:e2e": "jest ./e2e/org-registration-and-issuing.e2e.test.js --config ./jest.config.js --runInBand",
|
|
13
|
+
"start": "node src/main.js",
|
|
14
|
+
"start:dev": "node --throw-deprecation src/standalone.js",
|
|
15
|
+
"start-operator": "node src/main-operator.js",
|
|
16
|
+
"start-holder": "node src/main-holder.js",
|
|
17
|
+
"lint": "eslint . --format json >> eslint.json",
|
|
18
|
+
"lint:fix": "eslint --fix --ext .js .",
|
|
19
|
+
"migrate:status": "./node_modules/.bin/migrate-mongo status --file migrate-mongo.config.js",
|
|
20
|
+
"migrate:create": "./node_modules/.bin/migrate-mongo create --file migrate-mongo.config.js",
|
|
21
|
+
"migrate:up": "./node_modules/.bin/migrate-mongo up --file migrate-mongo.config.js",
|
|
22
|
+
"migrate:down": "./node_modules/.bin/migrate-mongo down --file migrate-mongo.config.js"
|
|
23
|
+
},
|
|
24
|
+
"author": "Yauheni Pozdnyakov",
|
|
25
|
+
"license": "Apache-2.0",
|
|
26
|
+
"publishConfig": {
|
|
27
|
+
"access": "public"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@fastify/autoload": "^6.0.0",
|
|
31
|
+
"@fastify/helmet": "^13.0.0",
|
|
32
|
+
"@fastify/routes": "^6.0.0",
|
|
33
|
+
"@fastify/sensible": "^6.0.0",
|
|
34
|
+
"@fastify/static": "^8.0.0",
|
|
35
|
+
"@fastify/swagger": "^9.0.0",
|
|
36
|
+
"@fastify/swagger-ui": "^5.0.0",
|
|
37
|
+
"@fastify/view": "^11.0.0",
|
|
38
|
+
"@spencejs/spence-factories": "^0.10.2",
|
|
39
|
+
"@spencejs/spence-mongo-repos": "^0.10.2",
|
|
40
|
+
"@verii/auth": "1.0.0-pre.1752076816",
|
|
41
|
+
"@verii/base-contract-io": "1.0.0-pre.1752076816",
|
|
42
|
+
"@verii/blockchain-functions": "1.0.0-pre.1752076816",
|
|
43
|
+
"@verii/common-fetchers": "1.0.0-pre.1752076816",
|
|
44
|
+
"@verii/common-functions": "1.0.0-pre.1752076816",
|
|
45
|
+
"@verii/common-schemas": "1.0.0-pre.1752076816",
|
|
46
|
+
"@verii/config": "1.0.0-pre.1752076816",
|
|
47
|
+
"@verii/contract-permissions": "1.0.0-pre.1752076816",
|
|
48
|
+
"@verii/crypto": "1.0.0-pre.1752076816",
|
|
49
|
+
"@verii/csv-parser": "1.0.0-pre.1752076816",
|
|
50
|
+
"@verii/db-kms": "1.0.0-pre.1752076816",
|
|
51
|
+
"@verii/did-doc": "1.0.0-pre.1752076816",
|
|
52
|
+
"@verii/fastify-plugins": "1.0.0-pre.1752076816",
|
|
53
|
+
"@verii/jwt": "1.0.0-pre.1752076816",
|
|
54
|
+
"@verii/metadata-registration": "1.0.0-pre.1752076816",
|
|
55
|
+
"@verii/organizations-registry": "1.0.0-pre.1752076816",
|
|
56
|
+
"@verii/request": "1.0.0-pre.1752076816",
|
|
57
|
+
"@verii/rest-queries": "1.0.0-pre.1752076816",
|
|
58
|
+
"@verii/server-provider": "1.0.0-pre.1752076816",
|
|
59
|
+
"@verii/spencer-mongo-extensions": "1.0.0-pre.1752076816",
|
|
60
|
+
"@verii/test-regexes": "1.0.0-pre.1752076816",
|
|
61
|
+
"@verii/validation": "1.0.0-pre.1752076816",
|
|
62
|
+
"@verii/vc-checks": "1.0.0-pre.1752076816",
|
|
63
|
+
"@verii/velocity-issuing": "1.0.0-pre.1752076816",
|
|
64
|
+
"@verii/verifiable-credentials": "1.0.0-pre.1752076816",
|
|
65
|
+
"ajv": "8.17.1",
|
|
66
|
+
"canonicalize": "^2.0.0",
|
|
67
|
+
"date-fns": "~3.6.0",
|
|
68
|
+
"env-var": "~7.5.0",
|
|
69
|
+
"eth-url-parser": "~1.0.3",
|
|
70
|
+
"fastify": "^5.0.0",
|
|
71
|
+
"fastify-plugin": "^5.0.0",
|
|
72
|
+
"handlebars": "^4.7.7",
|
|
73
|
+
"http-errors": "~2.0.0",
|
|
74
|
+
"jsonpath-plus": "^10.3.0",
|
|
75
|
+
"lodash": "^4.17.21",
|
|
76
|
+
"mongodb": "~6.16.0",
|
|
77
|
+
"nanoid": "~3.3.1",
|
|
78
|
+
"nock": "14.0.5",
|
|
79
|
+
"qr-image": "~3.2.0"
|
|
80
|
+
},
|
|
81
|
+
"devDependencies": {
|
|
82
|
+
"@spencejs/spence-config": "0.10.2",
|
|
83
|
+
"@verii/endpoints-organizations-registrar": "1.0.0-pre.1752076816",
|
|
84
|
+
"@verii/sample-data": "1.0.0-pre.1752076816",
|
|
85
|
+
"@verii/test-regexes": "0.5.0-build",
|
|
86
|
+
"@verii/tests-helpers": "1.0.0-pre.1752076816",
|
|
87
|
+
"cheerio": "1.1.0",
|
|
88
|
+
"dotenv": "16.5.0",
|
|
89
|
+
"eslint": "8.57.1",
|
|
90
|
+
"eslint-config-airbnb-base": "14.2.1",
|
|
91
|
+
"eslint-config-prettier": "8.10.0",
|
|
92
|
+
"eslint-plugin-autofix": "1.1.0",
|
|
93
|
+
"eslint-plugin-better-mutation": "1.7.0",
|
|
94
|
+
"eslint-plugin-import": "2.32.0",
|
|
95
|
+
"eslint-plugin-prefer-arrow-functions": "3.6.2",
|
|
96
|
+
"eslint-plugin-prettier": "4.2.1",
|
|
97
|
+
"eslint-watch": "7.0.0",
|
|
98
|
+
"jest": "29.7.0",
|
|
99
|
+
"jest-json-schema": "6.1.0",
|
|
100
|
+
"jose": "5.10.0",
|
|
101
|
+
"migrate-mongo": "12.1.3",
|
|
102
|
+
"nanoid-dictionary": "5.0.0",
|
|
103
|
+
"nodemon": "3.1.10",
|
|
104
|
+
"prettier": "2.8.8",
|
|
105
|
+
"qs": "6.14.0"
|
|
106
|
+
},
|
|
107
|
+
"gitHead": "5885ce94149cc0102b2bc9cde18834293174bfaf"
|
|
108
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"short_name": "Credential Agent",
|
|
3
|
+
"name": "Velocity Network Credential Agent",
|
|
4
|
+
"icons": [
|
|
5
|
+
{
|
|
6
|
+
"src": "public/favicon.ico",
|
|
7
|
+
"sizes": "64x64 32x32 24x24 16x16",
|
|
8
|
+
"type": "image/x-icon"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"src": "public/logo192.png",
|
|
12
|
+
"type": "image/png",
|
|
13
|
+
"sizes": "192x192"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"src": "public/logo512.png",
|
|
17
|
+
"type": "image/png",
|
|
18
|
+
"sizes": "512x512"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"prefer_related_applications": true,
|
|
22
|
+
"related_applications": [
|
|
23
|
+
{
|
|
24
|
+
"platform": "play",
|
|
25
|
+
"id": "io.velocitycareerlabs.holderapp"
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<title>App Redirect</title>
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
|
+
<meta name="robots" content="noindex">
|
|
8
|
+
<link rel="stylesheet" type="text/css" href="{{styleSheetUrl}}" crossorigin="anonymous" nonce="{{scriptNonce}}" />
|
|
9
|
+
</head>
|
|
10
|
+
|
|
11
|
+
<body>
|
|
12
|
+
<div id="vnf-wallet-selection" data-deeplink="{{deeplink}}" data-automode></div>
|
|
13
|
+
<script src="{{scriptUrl}}" nonce="{{scriptNonce}}"></script>
|
|
14
|
+
</body>
|
|
15
|
+
|
|
16
|
+
</html>
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const { mergeAll } = require('lodash/fp');
|
|
18
|
+
const { holderConfig } = require('./holder-config');
|
|
19
|
+
const { operatorConfig } = require('./operator-config');
|
|
20
|
+
|
|
21
|
+
const swaggerConfig = {
|
|
22
|
+
swaggerInfo: mergeAll([
|
|
23
|
+
holderConfig.swaggerInfo,
|
|
24
|
+
operatorConfig.swaggerInfo,
|
|
25
|
+
{
|
|
26
|
+
info: {
|
|
27
|
+
title: 'Credential Agent Combined Openapi',
|
|
28
|
+
description: 'Combined set of APIs for holders and operators',
|
|
29
|
+
},
|
|
30
|
+
tags: [
|
|
31
|
+
...holderConfig.swaggerInfo.tags,
|
|
32
|
+
...operatorConfig.swaggerInfo.tags,
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
]),
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const config = {
|
|
39
|
+
...operatorConfig,
|
|
40
|
+
...holderConfig,
|
|
41
|
+
...swaggerConfig,
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
module.exports = { config };
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const env = require('env-var');
|
|
18
|
+
const { genericConfig, abi } = require('@verii/config');
|
|
19
|
+
const packageJson = require('../../package.json');
|
|
20
|
+
|
|
21
|
+
const { isTest } = genericConfig;
|
|
22
|
+
|
|
23
|
+
const swaggerConfig = {
|
|
24
|
+
swaggerInfo: {
|
|
25
|
+
info: {
|
|
26
|
+
version: '0.8.9',
|
|
27
|
+
},
|
|
28
|
+
components: {
|
|
29
|
+
securitySchemes: {
|
|
30
|
+
bearerAuth: {
|
|
31
|
+
type: 'http',
|
|
32
|
+
scheme: 'bearer',
|
|
33
|
+
bearerFormat: 'JWT',
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
const coreConfig = {
|
|
40
|
+
...genericConfig,
|
|
41
|
+
...swaggerConfig,
|
|
42
|
+
customFastifyOptions: {
|
|
43
|
+
bodyLimit: 8388608,
|
|
44
|
+
},
|
|
45
|
+
contractAbi: abi,
|
|
46
|
+
enableHttp2: env.get('ENABLE_HTTP2').default('false').asBoolStrict(),
|
|
47
|
+
mongoSecret: env.get('MONGO_SECRET').required(!isTest).asString(),
|
|
48
|
+
oracleUrl: env.get('REGISTRAR_URL').required(!isTest).asString(),
|
|
49
|
+
libUrl: env.get('LIB_URL').required(!isTest).asString(),
|
|
50
|
+
metadataRegistryContractAddress: env
|
|
51
|
+
.get('METADATA_REGISTRY_CONTRACT_ADDRESS')
|
|
52
|
+
.required(!isTest)
|
|
53
|
+
.asString(),
|
|
54
|
+
permissionsContractAddress: env
|
|
55
|
+
.get('PERMISSIONS_CONTRACT_ADDRESS')
|
|
56
|
+
.required()
|
|
57
|
+
.asString(),
|
|
58
|
+
couponContractAddress: env
|
|
59
|
+
.get('COUPON_CONTRACT_ADDRESS')
|
|
60
|
+
.required(!isTest)
|
|
61
|
+
.asString(),
|
|
62
|
+
revocationContractAddress: env
|
|
63
|
+
.get('REVOCATION_CONTRACT_ADDRESS')
|
|
64
|
+
.required(!isTest)
|
|
65
|
+
.default('0xf755E1Ca66bE12F177178E7Ea696969E0A55Bb64')
|
|
66
|
+
.asString(),
|
|
67
|
+
rpcUrl: env
|
|
68
|
+
.get('RPC_NODE_URL')
|
|
69
|
+
.required()
|
|
70
|
+
.default('http://34.244.131.79:8547')
|
|
71
|
+
.asString(),
|
|
72
|
+
chainId: env.get('CHAIN_ID').default(2020).asInt(),
|
|
73
|
+
secret: env.get('SECRET').required(!isTest).asString(),
|
|
74
|
+
vnfClientId: env.get('VNF_OAUTH_CLIENT_ID').required(!isTest).asString(),
|
|
75
|
+
vnfClientSecret: env
|
|
76
|
+
.get('VNF_OAUTH_CLIENT_SECRET')
|
|
77
|
+
.required(!isTest)
|
|
78
|
+
.asString(),
|
|
79
|
+
vnfOAuthTokensEndpoint: env
|
|
80
|
+
.get('VNF_OAUTH_TOKENS_ENDPOINT')
|
|
81
|
+
.required(!isTest)
|
|
82
|
+
.asString(),
|
|
83
|
+
universalResolverUrl: env
|
|
84
|
+
.get('UNIVERSAL_RESOLVER_URL')
|
|
85
|
+
.default('https://dev.uniresolver.io/')
|
|
86
|
+
.asString(),
|
|
87
|
+
version: packageJson.version,
|
|
88
|
+
caoDid: env.get('CAO_DID').required(!isTest).asString(),
|
|
89
|
+
validateCaoDid: env.get('VALIDATE_CAO_DID').default('true').asBool(),
|
|
90
|
+
sentryDsn: env.get('SENTRY_DSN').default('').asString(),
|
|
91
|
+
enableProfiling: env.get('ENABLE_PROFILING').default('false').asBool(),
|
|
92
|
+
enableSentryDebug: env.get('ENABLE_SENTRY_DEBUG').default('false').asBool(),
|
|
93
|
+
deepLinkProtocol: env.get('DEEP_LINK_PROTOCOL').required().asString(),
|
|
94
|
+
oidcTokensExpireIn: env.get('OIDC_TOKENS_EXPIRE_IN').asInt(),
|
|
95
|
+
enableOfferValidation: env
|
|
96
|
+
.get('ENABLE_OFFER_VALIDATION')
|
|
97
|
+
.default('true')
|
|
98
|
+
.asBool(),
|
|
99
|
+
storeIssuerAsString: env
|
|
100
|
+
.get('STORE_ISSUER_AS_STRING')
|
|
101
|
+
.default('false')
|
|
102
|
+
.asBool(),
|
|
103
|
+
credentialExtensionsContextUrl: env
|
|
104
|
+
.get('CREDENTIAL_EXTENSIONS_CONTEXT_URL')
|
|
105
|
+
.required(!isTest)
|
|
106
|
+
.asString(),
|
|
107
|
+
presentationContextValue: env
|
|
108
|
+
.get('PRESENTATION_CONTEXT_VALUE')
|
|
109
|
+
.default('https://www.w3.org/2018/credentials/v1')
|
|
110
|
+
.asString(),
|
|
111
|
+
enablePresentationContextValidation: env
|
|
112
|
+
.get('ENABLE_PRESENTATION_CONTEXT_VALIDATION')
|
|
113
|
+
.default('false')
|
|
114
|
+
.asBool(),
|
|
115
|
+
trustedIssuerCheckMinDate: env
|
|
116
|
+
.get('TRUSTED_ISSUER_CHECK_MIN_DATE')
|
|
117
|
+
.default('2024-02-28T00:00:00Z')
|
|
118
|
+
.asString(),
|
|
119
|
+
enableDeactivatedDisclosure: env
|
|
120
|
+
.get('ENABLE_DEACTIVATED_DISCLOSURE')
|
|
121
|
+
.default('true')
|
|
122
|
+
.asBool(),
|
|
123
|
+
vnfDid: env.get('VNF_DID').required().asString(),
|
|
124
|
+
defaultWalletMobile: env
|
|
125
|
+
.get('DEFAULT_WALLET_MOBILE')
|
|
126
|
+
.required(!isTest)
|
|
127
|
+
.asString(),
|
|
128
|
+
defaultWalletDesktop: env
|
|
129
|
+
.get('DEFAULT_WALLET_DESKTOP')
|
|
130
|
+
.required(!isTest)
|
|
131
|
+
.asString(),
|
|
132
|
+
defaultCaWalletConfig: env
|
|
133
|
+
.get('DEFAULT_CA_WALLET_CONFIG')
|
|
134
|
+
.required(!isTest)
|
|
135
|
+
.asJsonObject(),
|
|
136
|
+
disclosureCredentialTypeRequired: env
|
|
137
|
+
.get('DISCLOSURE_CREDENTIAL_TYPE_REQUIRED')
|
|
138
|
+
.default('true')
|
|
139
|
+
.asBool(),
|
|
140
|
+
vendorUrl: env.get('VENDOR_URL').asString(),
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
module.exports = { coreConfig };
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const env = require('env-var');
|
|
18
|
+
const fs = require('fs');
|
|
19
|
+
const { isEmpty, merge, values } = require('lodash/fp');
|
|
20
|
+
const { OfferType } = require('../entities');
|
|
21
|
+
const { coreConfig } = require('./core-config');
|
|
22
|
+
|
|
23
|
+
const caCertificateFile = env.get('CA_CERTIFICATE_FILE').asString();
|
|
24
|
+
const clientCertificateFile = env.get('CLIENT_CERTIFICATE_FILE').asString();
|
|
25
|
+
|
|
26
|
+
const holderSwaggerConfig = {
|
|
27
|
+
swaggerInfo: merge(coreConfig.swaggerInfo, {
|
|
28
|
+
info: {
|
|
29
|
+
title: 'Credential Agent Holder APIs Openapi',
|
|
30
|
+
description: 'Set of APIs for holders to retrieve and share creds',
|
|
31
|
+
},
|
|
32
|
+
tags: [
|
|
33
|
+
{ name: 'issuing', description: 'Holder credential issuing' },
|
|
34
|
+
{
|
|
35
|
+
name: 'presentations',
|
|
36
|
+
description: 'Holder presentation sharing',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'common',
|
|
40
|
+
description: 'Holder common endpoints for issuing and presentations',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'utilities',
|
|
44
|
+
description: 'Healthcheck and testing utilities',
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
}),
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const holderConfig = {
|
|
51
|
+
...coreConfig,
|
|
52
|
+
...holderSwaggerConfig,
|
|
53
|
+
identifyWebhookVersion: env
|
|
54
|
+
.get('IDENTIFY_WEBHOOK_VERSION')
|
|
55
|
+
.default(2)
|
|
56
|
+
.asIntPositive(),
|
|
57
|
+
vendorVersion: env.get('VENDOR_VERSION').default(0.6).asFloat(),
|
|
58
|
+
autocleanFinalizedOfferPii: env
|
|
59
|
+
.get('AUTOCLEAN_FINALIZED_OFFER_PII')
|
|
60
|
+
.default('false')
|
|
61
|
+
.asBool(),
|
|
62
|
+
triggerOffersAcceptedWebhook: env
|
|
63
|
+
.get('TRIGGER_OFFERS_ACCEPTED_WEBHOOK')
|
|
64
|
+
.default('false')
|
|
65
|
+
.asBool(),
|
|
66
|
+
appRedirectLogoFallbackUrl: env
|
|
67
|
+
.get('APP_REDIRECT_LOGO_FALLBACK_URL')
|
|
68
|
+
.default('https://docs.velocitycareerlabs.io/Logos/velocity-white.png')
|
|
69
|
+
.asString(),
|
|
70
|
+
credentialSubjectContext: env
|
|
71
|
+
.get('CREDENTIAL_SUBJECT_CONTEXT')
|
|
72
|
+
.default('false')
|
|
73
|
+
.asBool(),
|
|
74
|
+
|
|
75
|
+
// vendor webhooks bearer (api) token auth
|
|
76
|
+
bearerToken: env.get('BEARER_TOKEN').asString(),
|
|
77
|
+
|
|
78
|
+
// vendor webhooks client certificate auth
|
|
79
|
+
caCertificate: isEmpty(caCertificateFile)
|
|
80
|
+
? env.get('CA_CERTIFICATE').asString()
|
|
81
|
+
: fs.readFileSync(caCertificateFile),
|
|
82
|
+
clientCertificate: isEmpty(clientCertificateFile)
|
|
83
|
+
? undefined
|
|
84
|
+
: fs.readFileSync(clientCertificateFile),
|
|
85
|
+
clientCertificatePassword: env.get('CLIENT_CERTIFICATE_PASS').asString(),
|
|
86
|
+
|
|
87
|
+
// vendor webhooks oauth
|
|
88
|
+
clientId: env.get('OAUTH_CLIENT_ID').default('').asString(),
|
|
89
|
+
clientSecret: env.get('OAUTH_CLIENT_SECRET').default('').asString(),
|
|
90
|
+
tokensEndpoint: env.get('OAUTH_TOKENS_ENDPOINT').default('').asString(),
|
|
91
|
+
scopes: env.get('OAUTH_SCOPES').default('').asString(),
|
|
92
|
+
offerType: env.get('OFFER_TYPE').default('LEGACY').asEnum(values(OfferType)),
|
|
93
|
+
autoIdentityCheck: env.get('AUTO_IDENTITY_CHECK').default('true').asBool(),
|
|
94
|
+
errorOnInvalidWebhookOffers: env
|
|
95
|
+
.get('ERROR_ON_INVALID_WEBHOOK_OFFERS')
|
|
96
|
+
.default('false')
|
|
97
|
+
.asBool(),
|
|
98
|
+
defaultOAuthTokenExpiration: env
|
|
99
|
+
.get('DEFAULT_OAUTH_TOKEN_EXPIRATION')
|
|
100
|
+
.default('10080m')
|
|
101
|
+
.asString(),
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
module.exports = { holderConfig };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
module.exports = {
|
|
18
|
+
...require('./config'),
|
|
19
|
+
...require('./core-config'),
|
|
20
|
+
...require('./holder-config'),
|
|
21
|
+
...require('./operator-config'),
|
|
22
|
+
};
|