UNPKG

@sphereon/ssi-sdk.oid4vci-issuer

Version:

124 lines (109 loc) 4.43 kB
import { AccessTokenRequest, AccessTokenResponse, ClientMetadata, CredentialConfigurationSupported, CredentialDataSupplierInput, CredentialIssuerMetadataOpts, CredentialOfferMode, CredentialOfferSession, CredentialRequest, CredentialResponse, Grant, JsonLdIssuerCredentialDefinition, QRCodeOpts, StatusListOpts, } from '@sphereon/oid4vci-common' import { CredentialDataSupplier } from '@sphereon/oid4vci-issuer' import { IDIDOptions, ResolveOpts } from '@sphereon/ssi-sdk-ext.did-utils' import { IIdentifierResolution, ManagedIdentifierOptsOrResult } from '@sphereon/ssi-sdk-ext.identifier-resolution' import { IOID4VCIStore } from '@sphereon/ssi-sdk.oid4vci-issuer-store' import { ICredential } from '@sphereon/ssi-types' import { IAgentContext, ICredentialIssuer, IDIDManager, IKeyManager, IPluginMethodMap, IResolver } from '@veramo/core' import { IssuerInstance } from '../IssuerInstance' import { IJwtService } from '@sphereon/ssi-sdk-ext.jwt-service' export type IssuerCredentialDefinition = JsonLdIssuerCredentialDefinition export interface IOID4VCIIssuer extends IPluginMethodMap { oid4vciCreateOfferURI(createArgs: ICreateOfferArgs, context: IRequiredContext): Promise<ICreateCredentialOfferURIResult> oid4vciIssueCredential(issueArgs: IIssueCredentialArgs, context: IRequiredContext): Promise<CredentialResponse> oid4vciCreateAccessTokenResponse(accessTokenArgs: IAssertValidAccessTokenArgs, context: IRequiredContext): Promise<AccessTokenResponse> oid4vciGetInstance(args: IIssuerInstanceArgs, context: IRequiredContext): Promise<IssuerInstance> } export interface IOID4VCIIssuerOpts { defaultStoreId?: string defaultNamespace?: string resolveOpts?: ResolveOpts returnSessions?: boolean } export interface ICreateOfferArgs extends IIssuerInstanceArgs { grants?: Grant credentials?: Record<string, CredentialConfigurationSupported> credentialDefinition?: IssuerCredentialDefinition credentialOfferUri?: string credentialDataSupplierInput?: CredentialDataSupplierInput // Optional storage that can help the credential Data Supplier. For instance to store credential input data during offer creation, if no additional data can be supplied later on redirectUri?: string // auth_session?: string; Would be a nice extension to support, to allow external systems to determine what the auth_session value should be // @Deprecated use tx_code in the grant object correlationId?: string sessionLifeTimeInSec?: number qrCodeOpts?: QRCodeOpts client_id?: string statusListOpts?: Array<StatusListOpts> offerMode?: CredentialOfferMode baseUri?: string scheme?: string pinLength?: number } export interface IIssueCredentialArgs extends IIssuerInstanceArgs { credentialRequest: CredentialRequest credential?: ICredential credentialDataSupplier?: CredentialDataSupplier credentialDataSupplierInput?: CredentialDataSupplierInput newCNonce?: string cNonceExpiresIn?: number tokenExpiresIn?: number responseCNonce?: string } export interface IAssertValidAccessTokenArgs extends IIssuerInstanceArgs { request: AccessTokenRequest expirationDuration: number } export interface IIssuerInstanceArgs { credentialIssuer: string storeId?: string namespace?: string } export interface IIssuerInstanceOptions extends IMetadataOptions { issuerOpts?: IIssuerOptions metadataOpts?: CredentialIssuerMetadataOpts } export interface IIssuerOptions { asClientOpts?: ClientMetadata idOpts?: ManagedIdentifierOptsOrResult resolveOpts?: ResolveOpts /** * @deprecated: use idOpts */ didOpts?: IDIDOptions userPinRequired?: boolean cNonceExpiresIn?: number /** * Used in the callbacks for the first party flow */ // FIXME SPRIND-151 we need to start supporting a map with a definition id per credential, we can use the credential offer session to check which credential is being issued and then look it up in this map presentationDefinitionId?: string } export interface IMetadataOptions { credentialIssuer: string //The Credential Issuer's identifier. storeId?: string storeNamespace?: string } export type ICreateCredentialOfferURIResult = { uri: string session?: CredentialOfferSession userPin?: string userPinLength?: number } export type IRequiredContext = IAgentContext< IIdentifierResolution & IDIDManager & IResolver & IKeyManager & ICredentialIssuer & IOID4VCIStore & IJwtService >