{"id":13566764,"url":"https://github.com/Sphereon-Opensource/SSI-SDK","last_synced_at":"2025-04-04T00:32:17.839Z","repository":{"id":37459861,"uuid":"430623498","full_name":"Sphereon-Opensource/SSI-SDK","owner":"Sphereon-Opensource","description":"Self Sovereign Identity SDK","archived":false,"fork":false,"pushed_at":"2025-03-14T20:40:19.000Z","size":24977,"stargazers_count":66,"open_issues_count":15,"forks_count":18,"subscribers_count":11,"default_branch":"develop","last_synced_at":"2025-03-29T23:36:15.273Z","etag":null,"topics":["did","did-comm","oid4vc","oid4vci","oid4vp","oidc4vp","openid","openid4vc","sdk","siopv2","ssi","veramo","verifiable-credentials"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Sphereon-Opensource.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-22T08:30:41.000Z","updated_at":"2025-03-15T20:45:22.000Z","dependencies_parsed_at":"2024-01-14T00:29:42.626Z","dependency_job_id":"e4b27592-4d63-4c6a-94e1-a72bb43f1ce9","html_url":"https://github.com/Sphereon-Opensource/SSI-SDK","commit_stats":{"total_commits":2241,"total_committers":20,"mean_commits":112.05,"dds":0.607764390896921,"last_synced_commit":"76d2414031a2823b7643af0cfea07a5f8265d9b8"},"previous_names":[],"tags_count":51,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sphereon-Opensource%2FSSI-SDK","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sphereon-Opensource%2FSSI-SDK/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sphereon-Opensource%2FSSI-SDK/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sphereon-Opensource%2FSSI-SDK/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sphereon-Opensource","download_url":"https://codeload.github.com/Sphereon-Opensource/SSI-SDK/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247103290,"owners_count":20884023,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["did","did-comm","oid4vc","oid4vci","oid4vp","oidc4vp","openid","openid4vc","sdk","siopv2","ssi","veramo","verifiable-credentials"],"created_at":"2024-08-01T13:02:16.258Z","updated_at":"2025-04-04T00:32:13.293Z","avatar_url":"https://github.com/Sphereon-Opensource.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","eIDAS and Digital Identity"],"sub_categories":[],"readme":"\u003c!--suppress HtmlDeprecatedAttribute --\u003e\n\u003ch1 align=\"center\"\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://www.sphereon.com\"\u003e\u003cimg src=\"https://sphereon.com/content/themes/sphereon/assets/img/logo.svg\" alt=\"Sphereon\" width=\"400\"\u003e\u003c/a\u003e\n  \u003cbr\u003eSSI SDK \n  \u003cbr\u003e\n\u003c/h1\u003e\n\n# SSI SDK with OID4VC, Presentation Exchange, MS Entra support\n\nThis mono repository, contains packages that add support for Presentation Exchange and OpenID4VC (SIOPv2, OID4VCI,\nOID4VP) and other functionalities to SSI-SDK and [Veramo](https://veramo.io) based agents.\n\nWe also have additional DID methods and BBS+, RSA key support in\nour [SSI-SDK crypto extensions](https://github.com/Sphereon-Opensource/ssi-sdk) project, that are compatible with this\nSSI-SDK and [Veramo](https://veramo.io).\n\nThe modules can be integrated in agents running on the issuer, holder and verifier sides, both directly into\ntypescript/javascript projects using NodeJS, mobile projects using React-Native, your browser, or other programming\nlanguages using\nthe REST APIs.\n\n## OpenID for Verifiable Credentials (OID4VC)\n\nThis is a new [set of specifications](https://openid.net/openid4vc/) by the [OpenID Foundation](https://openid.net/), that enable peer to peer authentication ([SIOPv2](https://openid.net/specs/openid-connect-self-issued-v2-1_0.html)),\nCredential Issuance ([OID4VCI](https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html)) and Credential Presentation/Verification ([OID4VP](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html)). The SSI-SDK modules offer\nhigher-level and more tight integrations for these specification than our lower level libraries,\nlike [OID4VCI](https://github.com/Sphereon-OpenSource/OID4VCI), [SIOPv2 \u0026 OID4VP](https://github.com/Sphereon-Opensource/SIOP-OID4VP) and [Well-known DIDs](https://github.com/Sphereon-Opensource/wellknown-did-client).\n\nThese low-level libraries are typically not too opinionated and require an implementor to do some more work like providing\nsignature/key callback functions. Contrary this\nSSI-SDK is more opinionated and requires you to use other modules of the SSI-SDK or Veramo to provide certain\nfunctionalities, like DID and key management. The benefit however is that it provides a fully working agent solution\nwith a low amount of\nconfiguration and/or additional coding in your solution, and a rich ecosystem of plugins.\n\nIf you want to test out some of these plugins, we highly recommend using\nour [Open-Source wallet](https://github.com/Sphereon-Opensource/ssi-mobile-wallet)\nand/or [SIOPv2-OID4VP demo](https://github.com/Sphereon-Opensource/SIOPv2-OpenID4VP-example) deployed\nat https://ssi.sphereon.com, which are using the plugins below.\n\n| Plugin                                                                             | Description                                                                                                                                                                                                                                                                                                                                                                                                                                     |\n|------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [Presentation Exchange](./packages/presentation-exchange)                          | Allows to persist and manage v1 and v2 Presentation Definitions, as well as Verify Presentation Definitions, create Verifiable Presentations with Submission Data, select and match Credentials and DIDs all stored in the agent. Can be used in both Relying Party/Verifier contexts as holder contexts                                                                                                                                        |\n| [OID4VCI Issuer storage](./packages/oid4vci-issuer-store)                          | Allows to persist and manage OpenID4VCI Metadata and options in the agent database                                                                                                                                                                                                                                                                                                                                                              |\n| [OID4VCI Issuer](./packages/oid4vci-issuer)                                        | OpenID for Verifiable Credentials Issuer core logic and functions. This is the integration of the agent with the low-level OID4VCI client library                                                                                                                                                                                                                                                                                               |\n| [OID4VCI Issuer REST API](./packages/oid4vci-issuer-rest-api)                      | OpenID for Verifiable Credentials Issuer REST API. Exposes both OID4VCI endpoints, as well as status/management endpoints.                                                                                                                                                                                                                                                                                                                      |\n| [OID4VCI Issuer REST client](./packages/oid4vci-issuer-rest-client)                | OpenID for Verifiable Credentials Issuer REST client, allowing for easy integration and communication from a webapp with the REST API of the agent.                                                                                                                                                                                                                                                                                             |\n| [SIOPv2 Authenticator with OID4VP support](./packages/siopv2-oid4vp-op-auth)       | OpenID Provider for a wallet/holder context, that allows the agent to authenticate with SIOPv2 against the Relying Party and optionally use OpenID4VP to transport Verifiable Credentials. It is integrated into Key Management system, DID providers and VC modules. Supports JWT and JSON-LD VCs and has support for the [JWT VC Presentation Profile](https://identity.foundation/jwt-vc-presentation-profile/)                              |\n| [SIOPv2 Relying Party logic with OID4VP support](./packages/siopv2-oid4vp-rp-auth) | Plugin for a Relying Party agent context, containing the core logic to create Authorization Requests, verify Authorization Responses, as well as handle/manage Presentation Definitions and verifications (OID4VP). It is integrated into the Key Management system, DID providers and VC modules. Supports JWT and JSON-LD VCs and has support for the [JWT VC Presentation Profile](https://identity.foundation/jwt-vc-presentation-profile/) |\n| [SIOPv2 Relying Party REST API](./packages/siopv2-oid4vp-rp-rest-api)              | Plugin for a Relying Party agent context, it exposes a REST API which allows to integrate into webapps/websites. Support sessions and multiple presentation definitions. You typically run this as a separate agent to your application, but it could be integrated if you want.                                                                                                                                                                |\n| [SIOPv2 Relying Party REST client](./packages/siopv2-oid4vp-rp-rest-client)        | Plugin for a Relying Party webapp, it exposes a REST client, allowing for easy integration and communication from the Webapp with the REST API of the Agent. Support creating QR codes for different Presentation Definitions as well as Session Handling.                                                                                                                                                                                      |\n\n## Microsoft:registered: Entra Verified ID\n\nThe below packages add direct support for Microsoft:registered: Entra Verified ID. These plugins are using Microsoft\nlibraries and REST APIs.\nPlease note that you do not have to use these plugins to be able to support Microsoft:registered: Authenticator, have\nyour agent\nverify Verifiable Credentials issued by Entra Verified ID, or have your agent communicate with Microsoft Entra Verified\nID SIOPv2/OID4VP. The above OID4VC plugins can do these tasks without requiring a direct integration with Microsoft:\nregistered: Entra\nVerified ID as they conform to the same standards. The biggest exception is issuing VCs using Microsoft:registered:\nEntra Verified ID. Entra Verified ID will soon have\nsupport for OID4VCI, until that time you will have to use their Request API to issue credentials from Entra Verified ID\n\n| Plugin                                                                                 | Description                                                                                                                              |\n|----------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|\n| [Microsoft:registered: Azure :registered: Authenticator](./packages/ms-authenticator) | Plugin to authenticate using the Microsoft:registered: Authentication Library (MSAL) against Microsoft:registered: Azure :registered:. |\n| [Entra Verified ID Request API](./packages/ms-request-api)                             | Plugin to use Microsoft:registered: Entra Verified ID's Request API (REST) to issue/verify Verifiable Credentials                       |\n\n## Well-known DIDs\n\nWell-known DIDs allow you to bind domain names to DIDs, by making clever use of Verifiable Credentials signed by the\nrespective DIDs, hosting the result in a well-known location, and then linking to this location from the DIDs itself\nusing service endpoints.\nWe have a [low-level library](https://github.com/Sphereon-Opensource/wellknown-did-client) for managing well-known DIDs.\nThe packages in the SSI-SDK provide an integration into DIDs managed by agents using the SDK or Veramo.\n\n| Plugin                                                       | Description                                                                             |\n|--------------------------------------------------------------|-----------------------------------------------------------------------------------------|\n| [well-known DID issuer](./packages/wellknown-did-issuer)     | Supports managing well-known DIDs and configurations. Allows to store them in the agent |\n| [well-known DID verifier](./packages/wellknown-did-verifier) | Verified DIDs and domains to conform to the well-known DID specification                |\n\n## Contacts and storage\n\nThe contact-manager plugin allows you to persist external agent systems like issuers and verifiers. It supports multiple\nidentifiers per contact in the form of correlationIDs, which are URIs as well as assign roles like issuers, holders,\nverifiers. Typically on a first encounter you would provide a UI to the user asking to provide a name if the protocol\ncannot already prefill a name. Then the contact gets stored, so simple names can be used instead of DIDs in a UI for\ninstance. It can also be used to manage trust when encountering a certain contact in the future.\n\n| Plugin                                        | Description                                                                       |\n|-----------------------------------------------|-----------------------------------------------------------------------------------|\n| [data-store](./packages/data-store)           | TypeORM based contact store to persist and query entities (contacts, identities)  |\n| [contact-manager](./packages/contact-manager) | Manage contacts and their related identities                                      |\n\n## Issuance branding and storage\n\nThe issuance-branding plugin allows you to persist branding for issuers and credentials. This allows for these entities to be styled even when there \nis no active connection possible to the external parties. It supports logo's, background attributes like an image and or color, text color and \nadditional branding information per locale.\n\n| Plugin                                            | Description                                                                              |\n|---------------------------------------------------|------------------------------------------------------------------------------------------|\n| [data-store](./packages/data-store)               | TypeORM based issuance branding store to persist and query branding (issuer, credential) |\n| [issuance-branding](./packages/issuance-branding) | Manage issuer and credential branding                                                    |\n\n## Generic SSI plugins\n\nNext to the below plugins, we suggest to check out the excelent work done by the Veramo team on\nthe [Veramo](https://veramo.io) website. All these SSI-SDK plugins are compatible with Veramo (4.X). Hence you can mix\nand match the plugins from the SSI-SDK with Veramo plugins. The below plugins add additional functionalities or replace\nfunctionalities in Veramo.\n\n| Plugin                                                                                    | Description                                                                                                                                                                                   |\n|-------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [SSI Types](./packages/ssi-types)                                                         | Generic interfaces for Verifiable Credentials (JWT and JSON-LD) and DIDs. Also supports creating a uniform representation of Credentials, no matter whether they are in JWT or JSON-LD format |\n| [SSI Core](./packages/ssi-sdk-core)                                                       | Adds generic functions used by other plugins, like signing, encoding/decoding                                                                                                                 |\n| [DID Utils \u0026 Key Utils](https://github.com/Sphereon-Opensource/SSI-SDK-crypto-extensions) | Generic key and DID utils can be found in our [SSI SDK Crypto Extensions repo](https://github.com/Sphereon-Opensource/SSI-SDK-crypto-extensions)                                              |\n| [JSON LD issuer/verified](./packages/vc-handler-ld-local)                                 | Adds JSON-LD issuance and verification for Verifiable Credentials. Integrates seamlessly with Veramo's W3C VC plugin                                                                          |\n| [QR code generator](./packages/qr-code-generator)                                         | Create generic, SIOPv2/OID4VP, OID4VCI and WACI PEX QR codes. This package specifically targets React and React-Native                                                                        |\n\n# DID resolution\n\n---\n**Note:**\nDID resolution is not part of this SDK. We do provide a Universal DID client you can use in Veramo, simply by using the\nbelow code when setting up the Agent:\n\nUsing the Universal resolver for all DID methods:\n\n````typescript\nexport const agent = createAgent\u003cIDIDManager \u0026 CredentialIssuerLD \u0026 IKeyManager \u0026 IDataStore \u0026 IDataStoreORM \u0026 IResolver\u003e({\n  plugins: [\n    // Other plugins\n    new DIDResolverPlugin({\n      resolver: new UniResolver({ resolveURL: 'https://dev.uniresolver.io/1.0/identifiers' })\n    })\n  ]\n})\n````\n\nUsing the Universal resolver for specific DID methods and DID-key:\n\n````typescript\nexport const agent = createAgent\u003cIDIDManager \u0026 CredentialIssuerLD \u0026 IKeyManager \u0026 IDataStore \u0026 IDataStoreORM \u0026 IResolver\u003e({\n  plugins: [\n    // Other plugins\n    new DIDResolverPlugin({\n      resolver: new Resolver({\n        ...getDidKeyResolver(),\n        ...getUniResolver('lto', { resolveUrl: 'https://uniresolver.test.sphereon.io/1.0/identifiers' }),\n        ...getUniResolver('factom', { resolveUrl: 'https://dev.uniresolver.io/1.0/identifiers' }),\n      }),\n    }),\n  ]\n})\n````\n\n# Building and testing\n\n## Lerna\n\nThe SSI-SDK makes use of Lerna for managing multiple packages. Lerna is a tool that optimizes the workflow around\nmanaging multi-package repositories with git and npm / yarn.\n\n## Build\n\nThe below command builds all packages for you using lerna\n\n```shell\nyarn build\n```\n\n## Test\n\nThe test command runs:\n\n* `jest`\n* `coverage`\n\nYou can also run only a single section of these tests, using for example `yarn test:watch`.\n\n```shell\nyarn test\n```\n\n## Utility scripts\n\nThere are other utility scripts that help with development.\n\n* `yarn prettier` - runs `prettier` to fix code style.\n\n## Publish\n\nThere are scripts that can publish the following versions:\n\n* `latest`\n* `next`\n* `unstable`\n\n```shell\nyarn publish:[version]\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSphereon-Opensource%2FSSI-SDK","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSphereon-Opensource%2FSSI-SDK","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSphereon-Opensource%2FSSI-SDK/lists"}