UNPKG

@sphereon/gx-compliance-client

Version:

<!--suppress HtmlDeprecatedAttribute --> <h1 align="center"> <br> <a href="https://www.sphereon.com"><img src="https://sphereon.com/content/themes/sphereon/assets/img/logo.svg" alt="Sphereon" width="400"></a> <br>Gaia-X Compliance client (Typescript

263 lines (213 loc) 7.68 kB
import { CredentialPayload, DIDDocument, IAgentContext, ICredentialIssuer, IDataStore, IDataStoreORM, IDIDManager, IIdentifier, IKeyManager, IPluginMethodMap, IResolver, IService, UniqueVerifiableCredential, UniqueVerifiablePresentation, VerifiableCredential, VerifiablePresentation, } from '@veramo/core' import { ICredentialHandlerLDLocal } from '@sphereon/ssi-sdk-vc-handler-ld-local' import { purposes } from '@digitalcredentials/jsonld-signatures' import { _ExtendedIKey } from '@veramo/utils' export interface IGXComplianceClient extends IPluginMethodMap { submitComplianceCredential(args: IAcquireComplianceCredentialArgs, context: GXRequiredContext): Promise<VerifiableCredential> acquireComplianceCredentialFromExistingParticipant( args: IAcquireComplianceCredentialFromExistingParticipantArgs, context: GXRequiredContext ): Promise<VerifiableCredentialResponse> acquireComplianceCredentialFromUnsignedParticipant( args: IAcquireComplianceCredentialFromUnsignedParticipantArgs, context: GXRequiredContext ): Promise<VerifiableCredentialResponse> submitServiceOffering(args: IAddServiceOfferingArgs, context: GXRequiredContext): Promise<IGaiaxOnboardingResult> createAndSubmitServiceOffering(args: IAddServiceOfferingUnsignedArgs, context: GXRequiredContext): Promise<IGaiaxOnboardingResult> createDIDFromX509(args: IImportDIDArg, context: GXRequiredContext): Promise<IIdentifier> exportDIDDocument({ domain, services }: { domain: string; services?: IService[] }, context: GXRequiredContext): Promise<DIDDocument> exportDIDToPath( { domain, services, path }: { domain: string; path?: string; services?: IService[] }, context: GXRequiredContext ): Promise<ExportFileResult[]> issueVerifiableCredential(args: IIssueVerifiableCredentialArgs, context: GXRequiredContext): Promise<UniqueVerifiableCredential> issueVerifiablePresentation(args: IIssueVerifiablePresentationArgs, context: GXRequiredContext): Promise<UniqueVerifiablePresentation> checkVerifiableCredential(args: ICheckVerifiableCredentialArgs, context: GXRequiredContext): Promise<boolean> checkVerifiablePresentation(args: ICheckVerifiablePresentationArgs, context: GXRequiredContext): Promise<boolean> onboardParticipantWithCredential(args: IOnboardParticipantWithCredentialArgs, context: GXRequiredContext): Promise<VerifiableCredential> onboardParticipantWithCredentialIds(args: IOnboardParticipantWithCredentialIdsArgs, context: GXRequiredContext): Promise<VerifiableCredential> verifySelfDescription(args: IVerifySelfDescribedCredential, context: GXRequiredContext): Promise<CredentialValidationResult> } /** * Plugin method map interface * @public */ export enum MethodNames { acquireComplianceCredential = 'acquireComplianceCredential', acquireComplianceCredentialFromUnsignedParticipant = 'acquireComplianceCredentialFromUnsignedParticipant', acquireComplianceCredentialFromExistingParticipant = 'acquireComplianceCredentialFromExistingParticipant', addServiceOfferingUnsigned = 'addServiceOfferingUnsigned', addServiceOffering = 'addServiceOffering', createDIDFromX509 = 'createDIDFromX509', issueVerifiableCredential = 'issueVerifiableCredential', issueVerifiablePresentation = 'issueVerifiablePresentation', onboardParticipantWithCredential = 'onboardParticipantWithCredential', onboardParticipantWithCredentialIds = 'onboardParticipantWithCredentialIds', verifyUnsignedSelfDescribedCredential = 'verifyUnsignedSelfDescribedCredential', } export interface IGaiaxComplianceConfig { kmsName?: string complianceServiceUrl: string complianceServiceVersion: string } export interface IGaiaxConformityResult { conforms: boolean results: unknown[] } export interface IGaiaxOnboardingResult { conforms: boolean isValidSignature: boolean shape: IGaiaxConformityResult content: IGaiaxConformityResult } export enum IGaiaxCredentialType { ServiceOffering = 'ServiceOffering', LegalPerson = 'LegalPerson', NaturalPerson = 'NaturalPerson', } export interface IIssueVerifiableCredentialArgs { credential: CredentialPayload domain?: string keyRef?: string persist?: boolean } export interface IIssueVerifiablePresentationArgs { challenge?: string keyRef?: string verifiableCredentials: VerifiableCredential[] domain: string persist?: boolean } export interface ICheckVerifiablePresentationArgs { verifiablePresentation: VerifiablePresentation challenge?: string } export interface ICheckVerifiableCredentialArgs { verifiableCredential: VerifiableCredential } export interface IAcquireComplianceCredentialArgs { selfDescriptionVP: VerifiablePresentation } export interface IAcquireComplianceCredentialFromExistingParticipantArgs { participantSDId: string } export interface IOnboardParticipantWithCredentialArgs { domain?: string selfDescriptionVC: VerifiableCredential complianceVC: VerifiableCredential // purpose?: typeof purposes challenge?: string keyRef?: string } export interface IOnboardParticipantWithCredentialIdsArgs { selfDescriptionId: string complianceId: string } export interface IAcquireComplianceCredentialFromUnsignedParticipantArgs { credential: CredentialPayload } export interface IAddServiceOfferingUnsignedArgs { challenge?: string serviceOfferingCredential: CredentialPayload complianceId?: string complianceVC?: VerifiableCredential keyRef?: string domain?: string } export interface IAddServiceOfferingArgs { serviceOfferingVP: VerifiablePresentation } export interface IIssueAndSaveVerifiablePresentationArgs { challenge: string keyRef: string purpose?: typeof purposes verifiableCredentials: VerifiableCredential[] verificationMethodId: string } export interface VerifiableCredentialResponse { verifiableCredential: VerifiableCredential hash: string } export interface IImportDIDArg { domain: string privateKeyPEM: string certificatePEM: string certificateChainPEM: string certificateChainURL?: string kms?: string // The Key Management System to use. Will default to 'local' when not supplied. kid?: string // The requested KID. A default will be generated when not supplied } export interface ISignInfo { keyRef: string keys: _ExtendedIKey[] key: _ExtendedIKey participantDID: string participantDomain: string verificationRelationship: string } export interface IVerifySelfDescribedCredential { verifiableCredential?: VerifiableCredential id?: string } export interface CredentialValidationResult { /** * The data conforms with the given rules and shape and has a valid signature */ conforms: boolean /** * The SHACL Shape validation results */ shape: ValidationResult /** * Content validation results */ content: ValidationResult } export interface ValidationResult { /** * The data conforms with the given rules or shape */ conforms: boolean /** * Error messages */ results: string[] } export interface ExportFileResult { file: string path: string } export type GXPluginMethodMap = IResolver & IKeyManager & IDIDManager & ICredentialHandlerLDLocal & ICredentialIssuer & IGXComplianceClient & IDataStore & IDataStoreORM export type GXRequiredContext = IAgentContext<GXPluginMethodMap> export interface JWK extends JsonWebKey { x5c?: string x5u?: string } export const ProofPurpose = purposes.ProofPurpose export const ControllerProofPurpose = purposes.ControllerProofPurpose export const AssertionProofPurpose = purposes.AssertionProofPurpose export const AuthenticationProofPurpose = purposes.AuthenticationProofPurpose