Skip to content

Commit aa98150

Browse files
committed
feat: added dynamicRegistrationClientMetadata to issuer locale branding
1 parent 3d1d370 commit aa98150

File tree

6 files changed

+36
-12
lines changed

6 files changed

+36
-12
lines changed

packages/oid4vci-holder/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
"xstate": "^4.38.3"
4444
},
4545
"devDependencies": {
46+
"@sphereon/oid4vc-common": "0.16.1-next.187",
4647
"@sphereon/ssi-sdk-ext.did-resolver-jwk": "0.25.0",
4748
"@types/i18n-js": "^3.8.9",
4849
"@types/lodash.memoize": "^4.1.9",

packages/oid4vci-holder/src/agent/OID4VCIHolder.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -752,6 +752,7 @@ export class OID4VCIHolder implements IAgentPlugin {
752752

753753
return getBasicIssuerLocaleBranding({
754754
display: serverMetadata.credentialIssuerMetadata?.display ?? [],
755+
dynamicRegistrationClientMetadata: serverMetadata.credentialIssuerMetadata,
755756
context,
756757
})
757758
}

packages/oid4vci-holder/src/agent/OID4VCIHolderService.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,8 @@ export const getCredentialBranding = async (args: GetCredentialBrandingArgs): Pr
9292
export const getBasicIssuerLocaleBranding = async (args: GetBasicIssuerLocaleBrandingArgs): Promise<Array<IBasicIssuerLocaleBranding>> => { //IBasicIssuerLocaleBranding
9393
const { display, context } = args
9494
return await Promise.all(
95-
display.map(async (metadataDisplay: MetadataDisplay): Promise<IBasicIssuerLocaleBranding> => {
96-
const branding = await issuerLocaleBrandingFrom({ issuerDisplay: metadataDisplay })
95+
display.map(async (issuerDisplay: MetadataDisplay): Promise<IBasicIssuerLocaleBranding> => {
96+
const branding = await issuerLocaleBrandingFrom({ issuerDisplay })
9797
return context.agent.ibIssuerLocaleBrandingFrom({ localeBranding: branding })
9898
}),
9999
)

packages/oid4vci-holder/src/agent/OIDC4VCIBrandingMapper.ts

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,22 +63,29 @@ export const credentialLocaleBrandingFrom = async (args: CredentialLocaleBrandin
6363
}
6464
}
6565

66+
// TODO since dynamicRegistrationClientMetadata can also be on a RP, we should start using this mapper in a more general way
6667
export const issuerLocaleBrandingFrom = async (args: IssuerLocaleBrandingFromArgs): Promise<IBasicIssuerLocaleBranding> => {
67-
const { issuerDisplay } = args
68+
const { issuerDisplay, dynamicRegistrationClientMetadata } = args
6869

6970
return {
71+
...(dynamicRegistrationClientMetadata?.client_name && {
72+
alias: dynamicRegistrationClientMetadata?.client_name
73+
}),
7074
...(issuerDisplay.name && {
7175
alias: issuerDisplay.name,
7276
}),
7377
...(issuerDisplay.locale && {
7478
locale: issuerDisplay.locale,
7579
}),
76-
...(issuerDisplay.logo && {
80+
...((issuerDisplay.logo || dynamicRegistrationClientMetadata?.logo_uri) && {
7781
logo: {
78-
...((issuerDisplay.logo.url || <string>issuerDisplay.logo.uri) && {
79-
uri: issuerDisplay.logo?.url ?? <string>issuerDisplay.logo.uri,
82+
...(dynamicRegistrationClientMetadata?.logo_uri && {
83+
uri: dynamicRegistrationClientMetadata?.logo_uri
84+
}),
85+
...((issuerDisplay.logo?.url || <string>issuerDisplay.logo?.uri) && {
86+
uri: issuerDisplay.logo?.url ?? <string>issuerDisplay.logo?.uri,
8087
}),
81-
...(issuerDisplay.logo.alt_text && {
88+
...(issuerDisplay.logo?.alt_text && {
8289
alt: issuerDisplay.logo?.alt_text,
8390
}),
8491
},
@@ -91,6 +98,18 @@ export const issuerLocaleBrandingFrom = async (args: IssuerLocaleBrandingFromArg
9198
color: issuerDisplay.text_color,
9299
},
93100
}),
101+
...(dynamicRegistrationClientMetadata?.client_uri && {
102+
clientUri: dynamicRegistrationClientMetadata?.client_uri
103+
}),
104+
...(dynamicRegistrationClientMetadata?.tos_uri && {
105+
tosUri: dynamicRegistrationClientMetadata?.tos_uri
106+
}),
107+
...(dynamicRegistrationClientMetadata?.policy_uri && {
108+
policyUri: dynamicRegistrationClientMetadata?.policy_uri
109+
}),
110+
...(dynamicRegistrationClientMetadata?.contacts && {
111+
contacts: dynamicRegistrationClientMetadata?.contacts
112+
}),
94113
}
95114
}
96115

packages/oid4vci-holder/src/types/IOID4VCIHolder.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
CredentialsSupportedDisplay,
1515
IssuerCredentialSubject,
1616
} from '@sphereon/oid4vci-common'
17+
import { DynamicRegistrationClientMetadata } from '@sphereon/oid4vc-common'
1718
import {
1819
CreateOrGetIdentifierOpts,
1920
IdentifierProviderOpts,
@@ -518,6 +519,7 @@ export type GetCredentialBrandingArgs = {
518519

519520
export type GetBasicIssuerLocaleBrandingArgs = {
520521
display: MetadataDisplay[]
522+
dynamicRegistrationClientMetadata?: DynamicRegistrationClientMetadataDisplay
521523
context: RequiredContext
522524
}
523525

@@ -672,13 +674,9 @@ export type CredentialLocaleBrandingFromArgs = {
672674
credentialDisplay: CredentialsSupportedDisplay
673675
}
674676

675-
export type IssuerCredentialSubjectLocaleBrandingFromArgs = {
676-
issuerCredentialSubject: IssuerCredentialSubject
677-
locale?: string
678-
}
679-
680677
export type IssuerLocaleBrandingFromArgs = {
681678
issuerDisplay: MetadataDisplay
679+
dynamicRegistrationClientMetadata?: DynamicRegistrationClientMetadataDisplay
682680
}
683681

684682
export type CredentialBrandingFromArgs = {
@@ -699,4 +697,6 @@ export type CombineLocalesFromArgs = {
699697
issuerCredentialSubjectLocales?: Map<string, Array<IBasicCredentialClaim>>
700698
}
701699

700+
export type DynamicRegistrationClientMetadataDisplay = Pick<DynamicRegistrationClientMetadata, 'client_name' | 'client_uri' | 'contacts' | 'tos_uri' | 'policy_uri' | 'logo_uri'>
701+
702702
export type DidAgents = TAgent<IResolver & IDIDManager>

pnpm-lock.yaml

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)