Skip to content

Commit 81bf769

Browse files
committed
fix: hasher dependency and token request assert vci11/13
1 parent 0709859 commit 81bf769

2 files changed

Lines changed: 18 additions & 8 deletions

File tree

packages/issuer/lib/VcIssuer.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -343,12 +343,24 @@ export class VcIssuer<DIDDoc extends object> {
343343
credential.credentialSubject = Array.isArray(credential.credentialSubject) ? credentialSubjects : credentialSubjects[0]
344344
}
345345

346+
let issuer: string | undefined = undefined
347+
if (credential.iss) {
348+
issuer = credential.iss
349+
} else if (credential.issuer) {
350+
if (typeof credential.issuer === 'string') {
351+
issuer = credential.issuer
352+
} else if (typeof credential.issuer === 'object' && 'id' in credential.issuer && typeof credential.issuer.id === 'string') {
353+
issuer = credential.issuer.id
354+
}
355+
}
356+
346357
const verifiableCredential = await this.issueCredentialImpl(
347358
{
348359
credentialRequest: opts.credentialRequest,
349360
format,
350361
credential,
351362
jwtVerifyResult,
363+
issuer,
352364
},
353365
signerCallback,
354366
)
@@ -597,23 +609,22 @@ export class VcIssuer<DIDDoc extends object> {
597609
credential: CredentialIssuanceInput
598610
jwtVerifyResult: JwtVerifyResult<DIDDoc>
599611
format?: OID4VCICredentialFormat
612+
issuer?: string
600613
},
601614
issuerCallback?: CredentialSignerCallback<DIDDoc>,
602615
): Promise<W3CVerifiableCredential | CompactSdJwtVc> {
603616
if ((!opts.credential && !opts.credentialRequest) || !this._credentialSignerCallback) {
604617
throw new Error(ISSUER_CONFIG_ERROR)
605618
}
606619
const credential = issuerCallback ? await issuerCallback(opts) : await this._credentialSignerCallback(opts)
607-
const uniform = CredentialMapper.toUniformCredential(credential)
608-
const issuer = uniform.issuer ? (typeof uniform.issuer === 'string' ? uniform.issuer : uniform.issuer.id) : '<unknown>'
609620

610621
// TODO: Create builder
611622
EVENTS.emit(CredentialEventNames.OID4VCI_CREDENTIAL_ISSUED, {
612623
eventName: CredentialEventNames.OID4VCI_CREDENTIAL_ISSUED,
613624
id: v4(),
614625
data: credential,
615626
// TODO: Format, request etc
616-
initiator: issuer ?? '<unknown>',
627+
initiator: opts.issuer ?? '<unknown>',
617628
initiatorType: InitiatorType.EXTERNAL,
618629
system: System.OID4VCI,
619630
subsystem: SubSystem.VC_ISSUER,

packages/issuer/lib/tokens/index.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,19 +100,18 @@ export const assertValidAccessTokenRequest = async (
100100
invalid_request:
101101
the Authorization Server expects a PIN in the pre-authorized flow but the client does not provide a PIN
102102
*/
103-
if (
104-
credentialOfferSession.credentialOffer.credential_offer?.grants?.['urn:ietf:params:oauth:grant-type:pre-authorized_code']?.tx_code &&
105-
!request.user_pin
106-
) {
103+
const preAuthorizedGrant = credentialOfferSession.credentialOffer.credential_offer?.grants?.[GrantTypes.PRE_AUTHORIZED_CODE]
104+
if ((preAuthorizedGrant?.tx_code || preAuthorizedGrant?.user_pin_required) && !request.user_pin) {
107105
throw new TokenError(400, TokenErrorResponse.invalid_request, USER_PIN_REQUIRED_ERROR)
108106
}
109107
/*
110108
invalid_request:
111109
the Authorization Server does not expect a PIN in the pre-authorized flow but the client provides a PIN
112110
*/
113-
if (!credentialOfferSession.credentialOffer.credential_offer?.grants?.[GrantTypes.PRE_AUTHORIZED_CODE]?.user_pin_required && request.user_pin) {
111+
if (!preAuthorizedGrant?.user_pin_required && !preAuthorizedGrant?.tx_code && request.user_pin) {
114112
throw new TokenError(400, TokenErrorResponse.invalid_request, USER_PIN_NOT_REQUIRED_ERROR)
115113
}
114+
116115
/*
117116
invalid_grant:
118117
the Authorization Server expects a PIN in the pre-authorized flow but the client provides the wrong PIN

0 commit comments

Comments
 (0)