# Towards a Catalogue of Self-Sovereign Identity Design Patterns
## 3 Self-Sovereign Identity Design Patterns and Their Classification
### Patterns and Their Classification  
In this section we present an extended SSI pattern collection consisting of 35 design patterns, whereby each is summarised in Tables 1-6. Additionally, we also analysed and classified the synthesised patterns into six representative categories, namely, (1) _Trusted Registries_, (2) _Onboarding_, (3) _Verifiable Credentials and Presentations_, (4) _Decentralised Identifiers and Cryptographic Keys_, (5) _Qualified Electronic Certificates_, and (6) _Wallet and Off-Chain Storage_. The objective of the categorisation was to generalise the patterns and group them in order to enable a better understanding of patterns, i.e., how these complement each other, or how these are connected to each other. In the context of research, each pattern was defined according to the [PERSON] template [17]. Due to the length of our output, only summaries of the patterns are presented below, with the complete documentation available at [30]. Moreover, to present and visualise better where the summarised patterns come into play and can be applied, we also connected these with the life-cycle states and transitions of main SSI objects depicted in Figure 4.  
The category _Trusted Registries_ (Table 1) combines patterns that enable the establishment of trust between different entities, i.e., holder, issuer and verifier, in a decentralised identity ecosystem, which is crucial in digital interactions. It represents one of the key elements for removing centralised intermediaries (i.e., identity providers, certification authorities, etc.) in the verification process, as it allows verifiers to verify the received proofs, i.e., verifiable presentations, without the involvement of credential issuers. It includes patterns that address various aspects of building trust, namely, (1.1) _Public Institution Registry_, (1.2) _Trusted Schemas Registry_, (1.3) _Status Registry_, (1.4) _DID Registry or Identifier Registry_, (1.5) _Identifier-Attribute Registry_, (1.6) _Blockchain Anchor_. Figure 3: The steps we followed in the SSI design pattern identification, definition, and classification process. (1.1) The _Public Institution Registry_ maintains a publicly accessible list of (public) institutions/organisations/businesses and their information. It allows verification of their identity, accreditations, and authorisations. It enables verifiers to verify the credential issuer and its publicly available data, to ensure that the issuer has the required accreditations for the issuance of a particular type of credential at the time of issuance. This is crucial, especially when dealing with unknown issuers, as verifiers have to trust issuers to be able to trust the credibility of the data. (1.2) The _Trusted Schemas Registry_ pattern is paramount for ensuring semantic interoperability between various systems, alignment with domain-specific requirements, and providing quality data objects. It provides a publicly available registry containing data schemas of data objects, and facilitates digital interactions and data exchange between different systems. We refer to data objects as any type of VCs or DIDs, e.g., a verifiable attestation as a subtype of VC, which attest that an individual has a formal higher education (HE) diploma, whereby this diploma is defined with a VC through the official schema for HE diplomas. The schema is, thus, based on the official template for defining formal diplomas, whereby there could be several different HE diploma schemas, depending on the regulation, legislation, country, membership, etc. To establish trust, entities must be able to verify that data objects are structured correctly and approved by relevant authorities. Moreover, without predefined schemas, an unregulated explosion of data objects may occur. (1.3) The _Status Registry_ contains a status list with information on credential's validity. Most credentials require the possibility of revocation, suspension, or other means for terminating the validity before the credential's expiration date for various reasons.