Skip to content

Latest commit

 

History

History
executable file
·
107 lines (98 loc) · 2.46 KB

didjwt-class-diagram.md

File metadata and controls

executable file
·
107 lines (98 loc) · 2.46 KB
classDiagram
class DidResolutionOptions {
    <<interface>>
    accept?: string
}
class Resolvable {
    <<service>>
    resolve(didUrl: string, options: DidResolutionOptions) Promise(DidResolutionResult)
}
DidResolutionOptions --> Resolvable
DIDResolutionResult <-- Resolvable

class  DIDResolutionResult {
  <<interface>>
  didResolutionMetadata: DIDResolutionMetadata
  didDocument: DIDDocument | null
  didDocumentMetadata: DIDDocumentMetadata
}
DIDDocumentMetadata <-- DIDResolutionResult
DIDDocument <-- DIDResolutionResult

class DIDDocumentMetadata {
  <<interface>>
  created?: string
  updated?: string
  deactivated?: boolean
  versionId?: string
  nextUpdate?: string
  nextVersionId?: string
  equivalentId?: string
  canonicalId?: string
}

class DIDDocument {
    <<interface>>
    '@context'?: 'https://www.w3.org/ns/did/v1' | string | string[]
    id: string
    alsoKnownAs?: string[]
    controller?: string | string[]
    verificationMethod?: VerificationMethod[]
    authentication?: (string | VerificationMethod)[]
    assertionMethod?: (string | VerificationMethod)[]
    keyAgreement?: (string | VerificationMethod)[]
    capabilityInvocation?: (string | VerificationMethod)[]
    capabilityDelegation?: (string | VerificationMethod)[]
    service?: ServiceEndpoint[]
}
VerificationMethod <-- DIDDocument

class VerificationMethod {
    <<interface>>
    id: string
    type: string
    controller: string
    publicKeyBase58?: string
    publicKeyJwk?: JsonWebKey
    publicKeyHex?: string
    blockchainAccountId?: string
    ethereumAddress?: string
}

class JWTPayload {
    <<interface>>
    iss: string
    sub?: string
    aud?: string | string[]
    iat?: number
    nbf?: number
    exp?: number
    rexp?: number
}
class JWTHeader { // This is a standard JWT header
    <<interface>>
    typ: 'JWT'
    alg: string   // The JWT signing algorithm to use. Supports: [ES256K, ES256K-R, Ed25519, EdDSA], Defaults to: ES256K
    [x: string]: any
}

JsonWebKey <|-- VerificationMethod
class JsonWebKey {
  <<interface>>
  alg?: string
  crv?: string
  e?: string
  ext?: boolean
  key_ops?: string[]
  kid?: string
  kty: string
  n?: string
  use?: string
  x?: string
  y?: string
}


class DidJWT {
    <<service>>
    createDidJWT(payload: JWTPayload, options: JWTOptions, header: JWTJHeader) Promise(string)
    verifyDidJWT(JWT: string, resolver: Resolvable) Promise(boolean)
}
JWTPayload --> DidJWT
JWTOptions --> DidJWT
JWTHeader --> DidJWT
Resolvable <-- DidJWT