UNPKG

@sphereon/wellknown-dids-client

Version:

Well-known DID client allows to create and verify DID Domain configuration resources

141 lines (140 loc) 4.39 kB
import { DIDDocument, ServiceEndpoint } from 'did-resolver'; export interface IIssuerConfig { issueCallback: IssuanceCallback; } export interface IDomainLinkageCredential { '@context': string[]; issuer: string; credentialSubject: ICredentialSubject; type?: string[]; issuanceDate: string; expirationDate: string; } export interface CredentialProof { type: string; created: string; proofPurpose: string; verificationMethod: string; challenge?: string; domain?: string; proofValue?: string; jws?: string; nonce?: string; requiredRevealStatements?: string[]; [x: string]: string | string[] | undefined; } export interface ISignedDomainLinkageCredential extends IDomainLinkageCredential { proof: CredentialProof; } export interface ICredentialSubject { id: string; origin: string; } export interface IIssueDidConfigurationResourceArgs { issuances: Array<IIssueDomainLinkageCredentialArgs>; configuration?: IDidConfigurationResource; origin?: string; issueCallback?: IssuanceCallback; } export interface IIssueDomainLinkageCredentialArgs { did: string; origin: string; issuanceDate?: string; expirationDate: string; options: IIssueDomainLinkageCredentialOptions; issueCallback?: IssuanceCallback; } export declare enum ProofFormatTypesEnum { JSON_WEB_TOKEN = "jwt", JSON_LD = "jsonld" } export interface IIssueCallbackArgs { credential: IDomainLinkageCredential; proofFormat?: ProofFormatTypesEnum; } export interface IIssueDomainLinkageCredentialOptions { proofFormat?: ProofFormatTypesEnum; } export interface IDidConfigurationResource { '@context': string; linked_dids: Array<DomainLinkageCredential>; } export interface IVerifierConfig { verifySignatureCallback: VerifyCallback; onlyVerifyServiceDid?: boolean; } export interface IServiceEndpoint { origins: Array<string>; } export interface IJsonWebTokenProofHeader { kid: string; alg: string; } export interface IJsonWebTokenProofPayload { exp: number; iss: string; nbf: number; sub: string; vc: Omit<ISignedDomainLinkageCredential, 'proof'>; } export interface IVerifyCredentialResult { verified: boolean; } export interface IVerifyCallbackArgs { credential: DomainLinkageCredential; proofFormat?: ProofFormatTypesEnum; } export interface IVerifyDomainLinkageArgs { didDocument: DIDDocument; verifySignatureCallback?: VerifyCallback; onlyVerifyServiceDid?: boolean; } export interface IVerifyEndpointDescriptorArgs { descriptor: ServiceEndpoint; verifySignatureCallback?: VerifyCallback; onlyVerifyServiceDid?: boolean; } export interface IVerifyResourceArgs { configuration?: IDidConfigurationResource; origin?: string; did?: string; verifySignatureCallback?: VerifyCallback; } export interface IVerifyDomainLinkageCredentialArgs { credential: DomainLinkageCredential; verifySignatureCallback?: VerifyCallback; } export declare type StrictPropertyCheck<T, TExpected, TError> = Exclude<keyof T, keyof TExpected> extends never ? unknown : TError; export interface ICredentialValidation { status: ValidationStatusEnum; message?: string; } export interface IResourceValidation { status: ValidationStatusEnum; credentials?: Array<ICredentialValidation>; message?: string; } export interface IDescriptorValidation { status: ValidationStatusEnum; resources?: Array<IResourceValidation>; message?: string; } export interface IDomainLinkageValidation { status: ValidationStatusEnum; endpointDescriptors?: Array<IDescriptorValidation>; message?: string; } export declare enum ValidationStatusEnum { VALID = "valid", INVALID = "invalid" } export declare enum ServiceTypesEnum { LINKED_DOMAINS = "LinkedDomains" } export declare enum PromiseStatusEnum { REJECTED = "rejected", FULFILLED = "fulfilled" } export declare type DomainLinkageCredential = ISignedDomainLinkageCredential | string; export declare type IssuanceCallback = (args: IIssueCallbackArgs) => Promise<DomainLinkageCredential>; export declare type VerifyCallback = (args: IVerifyCallbackArgs) => Promise<IVerifyCredentialResult>;