Skip to content

Commit 1ff4e40

Browse files
committed
fix: Make sure we use 'JWT' as typ instead of the lower case version as suggested in the JWT RFC.
1 parent 2759750 commit 1ff4e40

17 files changed

Lines changed: 68 additions & 62 deletions

packages/callback-example/lib/__tests__/issuerCallback.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ describe('issuerCallback', () => {
264264
// format: 'jwt_vc_json',
265265
proof: {
266266
jwt: expect.stringContaining('eyJhbGciOiJFUzI1NiIsImtpZCI6ImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFj'),
267-
proof_type: 'jwt',
267+
proof_type: 'JWT',
268268
},
269269
credential_identifier: 'VerifiableCredential',
270270
})

packages/client/lib/AccessTokenClient.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export class AccessTokenClient {
5050
redirectUri,
5151
pin,
5252
pinMetadata,
53+
credentialIssuer: issuer,
5354
}),
5455
pinMetadata,
5556
metadata,
@@ -95,7 +96,8 @@ export class AccessTokenClient {
9596
if (asOpts?.clientOpts?.clientId) {
9697
request.client_id = asOpts.clientOpts.clientId;
9798
}
98-
await createJwtBearerClientAssertion(request, opts);
99+
const credentialIssuer = opts.credentialIssuer ?? credentialOfferRequest?.credential_offer?.credential_issuer;
100+
await createJwtBearerClientAssertion(request, { ...opts, credentialIssuer });
99101

100102
if (credentialOfferRequest?.supportedFlows.includes(AuthzFlowType.PRE_AUTHORIZED_CODE_FLOW)) {
101103
this.assertAlphanumericPin(opts.pinMetadata, pin);

packages/client/lib/AccessTokenClientV1_0_11.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,12 @@ export class AccessTokenClientV1_0_11 {
9595
? await toUniformCredentialOfferRequest(opts.credentialOffer as CredentialOfferV1_0_11 | CredentialOfferV1_0_13)
9696
: undefined;
9797
const request: Partial<AccessTokenRequest> = { ...opts.additionalParams };
98+
const credentialIssuer = opts.credentialIssuer ?? credentialOfferRequest?.credential_offer?.credential_issuer;
9899

99100
if (asOpts?.clientOpts?.clientId) {
100101
request.client_id = asOpts.clientOpts.clientId;
101102
}
102-
await createJwtBearerClientAssertion(request, { ...opts, version: OpenId4VCIVersion.VER_1_0_11 });
103+
await createJwtBearerClientAssertion(request, { ...opts, version: OpenId4VCIVersion.VER_1_0_11, credentialIssuer });
103104

104105
if (credentialOfferRequest?.supportedFlows.includes(AuthzFlowType.PRE_AUTHORIZED_CODE_FLOW)) {
105106
this.assertNumericPin(this.isPinRequiredValue(credentialOfferRequest.credential_offer), pin);

packages/client/lib/AuthorizationCodeClient.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,14 @@ export async function createSignedAuthRequestWhenNeeded(requestObject: Record<st
5252
const iss = requestObject.iss ?? opts.iss ?? requestObject.client_id;
5353

5454
const jwt: Jwt = {
55-
header: { alg: 'ES256', kid: opts.kid, typ: 'jwt' },
55+
header: { alg: 'ES256', kid: opts.kid, typ: 'JWT' },
5656
payload: { ...requestObject, iss, authorization_details, ...(client_metadata && { client_metadata }) },
5757
};
5858
const pop = await ProofOfPossessionBuilder.fromJwt({
5959
jwt,
6060
callbacks: opts.signCallbacks,
6161
version: OpenId4VCIVersion.VER_1_0_11,
62-
mode: 'jwt',
62+
mode: 'JWT',
6363
}).build();
6464
requestObject['request'] = pop.jwt;
6565
}

packages/client/lib/ProofOfPossessionBuilder.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export class ProofOfPossessionBuilder<DIDDoc> {
5353
if (jwt) {
5454
this.withJwt(jwt);
5555
} else {
56-
this.withTyp(version < OpenId4VCIVersion.VER_1_0_11 || mode === 'jwt' ? 'jwt' : 'openid4vci-proof+jwt');
56+
this.withTyp(version < OpenId4VCIVersion.VER_1_0_11 || mode === 'JWT' ? 'JWT' : 'openid4vci-proof+jwt');
5757
}
5858
if (accessTokenResponse) {
5959
this.withAccessTokenResponse(accessTokenResponse);
@@ -64,7 +64,7 @@ export class ProofOfPossessionBuilder<DIDDoc> {
6464
jwt,
6565
callbacks,
6666
version,
67-
mode = 'jwt',
67+
mode = 'JWT',
6868
}: {
6969
jwt?: Jwt;
7070
callbacks: ProofOfPossessionCallbacks<DIDDoc>;
@@ -144,11 +144,11 @@ export class ProofOfPossessionBuilder<DIDDoc> {
144144
withTyp(typ: Typ): this {
145145
if (this.mode === 'pop' && this.version >= OpenId4VCIVersion.VER_1_0_11) {
146146
if (!!typ && typ !== 'openid4vci-proof+jwt') {
147-
throw Error('typ must be openid4vci-proof+jwt for version 1.0.11 and up');
147+
throw Error(`typ must be openid4vci-proof+jwt for version 1.0.11 and up. Provided: ${typ}`);
148148
}
149149
} else {
150-
if (!!typ && typ !== 'jwt') {
151-
throw Error('typ must be jwt for version 1.0.10 and below');
150+
if (!!typ && typ !== 'JWT') {
151+
throw Error(`typ must be jwt for version 1.0.10 and below. Provided: ${typ}`);
152152
}
153153
}
154154
this.typ = typ;
@@ -216,7 +216,7 @@ export class ProofOfPossessionBuilder<DIDDoc> {
216216
this.mode,
217217
this.callbacks,
218218
{
219-
typ: this.typ ?? (this.version < OpenId4VCIVersion.VER_1_0_11 || this.mode === 'jwt' ? 'jwt' : 'openid4vci-proof+jwt'),
219+
typ: this.typ ?? (this.version < OpenId4VCIVersion.VER_1_0_11 || this.mode === 'JWT' ? 'JWT' : 'openid4vci-proof+jwt'),
220220
kid: this.kid,
221221
jwk: this.jwk,
222222
jti: this.jti,

packages/client/lib/__tests__/CredentialRequestClient.spec.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import { getMockData } from './data/VciDataFixtures';
2929
const partialJWT = 'eyJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJkaWQ6ZXhhbXBsZTplYmZlYjFmN';
3030

3131
const jwt1_0_08: Jwt = {
32-
header: { alg: Alg.ES256, kid: 'did:example:ebfeb1f712ebc6f1c276e12ec21/keys/1', typ: 'jwt' },
32+
header: { alg: Alg.ES256, kid: 'did:example:ebfeb1f712ebc6f1c276e12ec21/keys/1', typ: 'JWT' },
3333
payload: { iss: 'sphereon:wallet', nonce: 'tZignsnFbp', jti: 'tZignsnFbp223', aud: IDENTIPROOF_ISSUER_URL },
3434
};
3535

@@ -184,7 +184,7 @@ describe('Credential Request Client with different issuers ', () => {
184184
.build()
185185
.createCredentialRequest({
186186
proofInput: {
187-
proof_type: 'jwt',
187+
proof_type: 'JWT',
188188
jwt: getMockData('spruce')?.credential.request.proof.jwt as string,
189189
},
190190
credentialTypes: 'OpenBadgeCredential',
@@ -208,7 +208,7 @@ describe('Credential Request Client with different issuers ', () => {
208208
.build()
209209
.createCredentialRequest({
210210
proofInput: {
211-
proof_type: 'jwt',
211+
proof_type: 'JWT',
212212
jwt: getMockData('walt')?.credential.request.proof.jwt as string,
213213
},
214214
credentialTypes: ['OpenBadgeCredential'],
@@ -231,7 +231,7 @@ describe('Credential Request Client with different issuers ', () => {
231231
.build()
232232
.createCredentialRequest({
233233
proofInput: {
234-
proof_type: 'jwt',
234+
proof_type: 'JWT',
235235
jwt: getMockData('uniissuer')?.credential.request.proof.jwt as string,
236236
},
237237
credentialIdentifier: 'OpenBadgeCredential',
@@ -253,7 +253,7 @@ describe('Credential Request Client with different issuers ', () => {
253253
.build()
254254
.createCredentialRequest({
255255
proofInput: {
256-
proof_type: 'jwt',
256+
proof_type: 'JWT',
257257
jwt: getMockData('mattr')?.credential.request.proof.jwt as string,
258258
},
259259
credentialTypes: ['OpenBadgeCredential'],
@@ -276,7 +276,7 @@ describe('Credential Request Client with different issuers ', () => {
276276
.build()
277277
.createCredentialRequest({
278278
proofInput: {
279-
proof_type: 'jwt',
279+
proof_type: 'JWT',
280280
jwt: getMockData('diwala')?.credential.request.proof.jwt as string,
281281
},
282282
credentialTypes: ['OpenBadgeCredential'],
@@ -318,7 +318,7 @@ describe('Credential Request Client with different issuers ', () => {
318318
.build()
319319
.createCredentialRequest({
320320
proofInput: {
321-
proof_type: 'jwt',
321+
proof_type: 'JWT',
322322
jwt: getMockData('diwala')?.credential.request.proof.jwt as string,
323323
},
324324
credentialIdentifier: 'BevoegdheidUittreksel_jwt_vc_json',
@@ -337,7 +337,7 @@ describe('Credential Request Client with different issuers ', () => {
337337
expect(credentialRequest.credential_identifier).toEqual('BevoegdheidUittreksel_jwt_vc_json');
338338
expect(credentialRequest.proof).toEqual({
339339
jwt: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa3AxM3N6QUFMVFN0cDV1OGtMcnl5YW5vYWtrVWtFUGZXazdvOHY3dms0RW1KI3o2TWtwMTNzekFBTFRTdHA1dThrTHJ5eWFub2Fra1VrRVBmV2s3bzh2N3ZrNEVtSiJ9.eyJhdWQiOiJodHRwczovL29pZGM0dmMuZGl3YWxhLmlvIiwiaWF0IjoxNjgxOTE1MDk1LjIwMiwiZXhwIjoxNjgxOTE1NzU1LjIwMiwiaXNzIjoic3BoZXJlb246c3NpLXdhbGxldCIsImp0aSI6IjYxN2MwM2EzLTM3MTUtNGJlMy1hYjkxNzM4MTlmYzYxNTYzIn0.KA-cHjecaYp9FSaWHkz5cqtNyhBIVT_0I7cJnpHn03T4UWFvdhjhn8Hpe-BU247enFyWOWJ6v3NQZyZgle7xBA',
340-
proof_type: 'jwt',
340+
proof_type: 'JWT',
341341
});
342342
});
343343
});

packages/client/lib/__tests__/CredentialRequestClientBuilder.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ const partialJWT = 'eyJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJkaWQ6ZXhhbXBsZTplYmZlYjFmN';
2020
const partialJWT_withoutDid = 'eyJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJlYmZlYjFmNzEyZWJjNmYxYzI3N';
2121

2222
/*const jwtv1_0_08: Jwt = {
23-
header: { alg: Alg.ES256, kid: 'did:example:ebfeb1f712ebc6f1c276e12ec21/keys/1', typ: 'jwt' },
23+
header: { alg: Alg.ES256, kid: 'did:example:ebfeb1f712ebc6f1c276e12ec21/keys/1', typ: 'JWT' },
2424
payload: { iss: 'sphereon:wallet', nonce: 'tZignsnFbp', jti: 'tZignsnFbp223', aud: IDENTIPROOF_ISSUER_URL },
2525
};*/
2626

packages/client/lib/__tests__/CredentialRequestClientV1_0_11.spec.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@ const partialJWT = 'eyJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJkaWQ6ZXhhbXBsZTplYmZlYjFmN';
3131
const partialJWT_withoutDid = 'eyJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJlYmZlYjFmNzEyZWJjNmYxYzI3N';
3232

3333
const jwt: Jwt = {
34-
header: { alg: Alg.ES256, kid: 'did:example:ebfeb1f712ebc6f1c276e12ec21/keys/1', typ: 'jwt' },
34+
header: { alg: Alg.ES256, kid: 'did:example:ebfeb1f712ebc6f1c276e12ec21/keys/1', typ: 'JWT' },
3535
payload: { iss: 'sphereon:wallet', nonce: 'tZignsnFbp', jti: 'tZignsnFbp223', aud: IDENTIPROOF_ISSUER_URL },
3636
};
3737

3838
const jwt_withoutDid: Jwt = {
39-
header: { alg: Alg.ES256, kid: 'ebfeb1f712ebc6f1c276e12ec21/keys/1', typ: 'jwt' },
39+
header: { alg: Alg.ES256, kid: 'ebfeb1f712ebc6f1c276e12ec21/keys/1', typ: 'JWT' },
4040
payload: { iss: 'sphereon:wallet', nonce: 'tZignsnFbp', jti: 'tZignsnFbp223', aud: IDENTIPROOF_ISSUER_URL },
4141
};
4242

@@ -305,7 +305,7 @@ describe('Credential Request Client with different issuers ', () => {
305305
.build()
306306
.createCredentialRequest({
307307
proofInput: {
308-
proof_type: 'jwt',
308+
proof_type: 'JWT',
309309
jwt: getMockData('spruce')?.credential.request.proof.jwt as string,
310310
},
311311
credentialTypes: ['OpenBadgeCredential'],
@@ -329,7 +329,7 @@ describe('Credential Request Client with different issuers ', () => {
329329
.build()
330330
.createCredentialRequest({
331331
proofInput: {
332-
proof_type: 'jwt',
332+
proof_type: 'JWT',
333333
jwt: getMockData('walt')?.credential.request.proof.jwt as string,
334334
},
335335
credentialTypes: ['OpenBadgeCredential'],
@@ -352,7 +352,7 @@ describe('Credential Request Client with different issuers ', () => {
352352
.build()
353353
.createCredentialRequest({
354354
proofInput: {
355-
proof_type: 'jwt',
355+
proof_type: 'JWT',
356356
jwt: getMockData('uniissuer')?.credential.request.proof.jwt as string,
357357
},
358358
credentialTypes: ['OpenBadgeCredential'],
@@ -374,7 +374,7 @@ describe('Credential Request Client with different issuers ', () => {
374374
.build()
375375
.createCredentialRequest({
376376
proofInput: {
377-
proof_type: 'jwt',
377+
proof_type: 'JWT',
378378
jwt: getMockData('mattr')?.credential.request.proof.jwt as string,
379379
},
380380
credentialTypes: ['OpenBadgeCredential'],
@@ -397,7 +397,7 @@ describe('Credential Request Client with different issuers ', () => {
397397
.build()
398398
.createCredentialRequest({
399399
proofInput: {
400-
proof_type: 'jwt',
400+
proof_type: 'JWT',
401401
jwt: getMockData('diwala')?.credential.request.proof.jwt as string,
402402
},
403403
credentialTypes: ['OpenBadgeCredential'],

packages/client/lib/__tests__/ProofOfPossessionBuilder.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ import { ProofOfPossessionBuilder } from '..';
88
import { IDENTIPROOF_ISSUER_URL } from './MetadataMocks';
99

1010
const jwt: Jwt = {
11-
header: { alg: Alg.ES256, kid: 'did:example:ebfeb1f712ebc6f1c276e12ec21/keys/1', typ: 'jwt' },
11+
header: { alg: Alg.ES256, kid: 'did:example:ebfeb1f712ebc6f1c276e12ec21/keys/1', typ: 'JWT' },
1212
payload: { iss: 'sphereon:wallet', nonce: 'tZignsnFbp', jti: 'tZignsnFbp223', aud: IDENTIPROOF_ISSUER_URL, iat: Date.now() / 1000 },
1313
};
1414

1515
const jwt_withoutDid: Jwt = {
16-
header: { alg: Alg.ES256, kid: 'ebfeb1f712ebc6f1c276e12ec21/keys/1', typ: 'jwt' },
16+
header: { alg: Alg.ES256, kid: 'ebfeb1f712ebc6f1c276e12ec21/keys/1', typ: 'JWT' },
1717
payload: { iss: 'sphereon:wallet', nonce: 'tZignsnFbp', jti: 'tZignsnFbp223', aud: IDENTIPROOF_ISSUER_URL, iat: Date.now() / 1000 },
1818
};
1919

packages/client/lib/__tests__/data/VciDataFixtures.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export interface IssuerMockData {
5151
type?: string;
5252
format: 'jwt_vc' | 'ldp_vc' | 'jwt_vc_json-ld' | string;
5353
proof: {
54-
proof_type: 'jwt' | string;
54+
proof_type: 'JWT' | string;
5555
jwt: string;
5656
};
5757
};
@@ -119,7 +119,7 @@ const mockData: VciMockDataStructure = {
119119
type: 'OpenBadgeCredential',
120120
format: 'jwt_vc',
121121
proof: {
122-
proof_type: 'jwt',
122+
proof_type: 'JWT',
123123
jwt: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksiLCJraWQiOiJkaWQ6andrOmV5SmhiR2NpT2lKRlV6STFOa3NpTENKMWMyVWlPaUp6YVdjaUxDSnJkSGtpT2lKRlF5SXNJbU55ZGlJNkluTmxZM0F5TlRack1TSXNJbmdpT2lKclpuVmpTa0V0VEhKck9VWjBPRmx5TFVkMlQzSmpia3N3YjNkc2RqUlhNblUwU3pJeFNHZHZTVlIzSWl3aWVTSTZJalozY0ZCUE1rOUNRVXBTU0ZFMVRXdEtXVlJaV0dsQlJFUXdOMU5OTlV0amVXcDNYMkUzVUUxWmVGa2lmUSMwIn0.eyJhdWQiOiJodHRwczovL25naS1vaWRjNHZjaS10ZXN0LnNwcnVjZWlkLnh5eiIsImlhdCI6MTY4MTkxMTA2MC45NDIsImV4cCI6MTY4MTkxMTcyMC45NDIsImlzcyI6InNwaGVyZW9uOnNzaS13YWxsZXQiLCJqdGkiOiJhNjA4MzMxZi02ZmE0LTQ0ZjAtYWNkZWY5NmFjMjdmNmQ3MCJ9.NwF3_41gwnlIdd_6Uk9CczeQHzIQt6UcvTT5Cxv72j9S1vNwiY9annA2kLsjsTiR5-WMBdUhJCO7wYCtZ15mxw',
124124
},
125125
},
@@ -365,7 +365,7 @@ const mockData: VciMockDataStructure = {
365365
types: ['OpenBadgeCredential'],
366366
format: 'jwt_vc',
367367
proof: {
368-
proof_type: 'jwt',
368+
proof_type: 'JWT',
369369
jwt: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksiLCJraWQiOiJkaWQ6andrOmV5SmhiR2NpT2lKRlV6STFOa3NpTENKMWMyVWlPaUp6YVdjaUxDSnJkSGtpT2lKRlF5SXNJbU55ZGlJNkluTmxZM0F5TlRack1TSXNJbmdpT2lKclpuVmpTa0V0VEhKck9VWjBPRmx5TFVkMlQzSmpia3N3YjNkc2RqUlhNblUwU3pJeFNHZHZTVlIzSWl3aWVTSTZJalozY0ZCUE1rOUNRVXBTU0ZFMVRXdEtXVlJaV0dsQlJFUXdOMU5OTlV0amVXcDNYMkUzVUUxWmVGa2lmUSMwIn0.eyJhdWQiOiJodHRwczovL2pmZi53YWx0LmlkL2lzc3Vlci1hcGkvZGVmYXVsdC9vaWRjLyIsImlhdCI6MTY4MTkxMTk0Mi4yMzgsImV4cCI6MTY4MTkxMjYwMi4yMzgsIm5vbmNlIjoiZjA2YTMxMDUtYTJlZC00NGZjLTk1NGItNGEyNTk3MDM0OTNiIiwiaXNzIjoic3BoZXJlb246c3NpLXdhbGxldCIsImp0aSI6IjA1OWM3ODA5LTlmOGYtNGE3ZS1hZDI4YTNhMTNhMGIzNmViIn0.RfiWyybxpe3nkx3b0yIsqDHQtvB1WwhDW4t0X-kijy2dsSfv2cYhSEmAzs1shg7OV4EW8fSzt_Te79xiVl6jCw',
370370
},
371371
},
@@ -483,7 +483,7 @@ const mockData: VciMockDataStructure = {
483483
types: ['OpenBadgeCredential'],
484484
format: 'jwt_vc',
485485
proof: {
486-
proof_type: 'jwt',
486+
proof_type: 'JWT',
487487
jwt: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksiLCJraWQiOiJkaWQ6andrOmV5SmhiR2NpT2lKRlV6STFOa3NpTENKMWMyVWlPaUp6YVdjaUxDSnJkSGtpT2lKRlF5SXNJbU55ZGlJNkluTmxZM0F5TlRack1TSXNJbmdpT2lKclpuVmpTa0V0VEhKck9VWjBPRmx5TFVkMlQzSmpia3N3YjNkc2RqUlhNblUwU3pJeFNHZHZTVlIzSWl3aWVTSTZJalozY0ZCUE1rOUNRVXBTU0ZFMVRXdEtXVlJaV0dsQlJFUXdOMU5OTlV0amVXcDNYMkUzVUUxWmVGa2lmUSMwIn0.eyJhdWQiOiJodHRwczovL29pZGM0dmMudW5paXNzdWVyLmlvLyIsImlhdCI6MTY4MTkxMjgzNy40MTQsImV4cCI6MTY4MTkxMzQ5Ny40MTQsIm5vbmNlIjoiMzhkMzZmM2ItNzJlMy00ODg2LWI2MGMtMzZiNzcwZDBlNGVhIiwiaXNzIjoic3BoZXJlb246c3NpLXdhbGxldCIsImp0aSI6ImIzYWEyMmFkLWExZTItNDJjOC1iMGI4ZTdjNDgzZDg4M2U4In0.awwIJ0422HSdOsCIe8k7zjxqY6RVaHK2ItUFqbmVjqLXxWt-Mp7cXF84n9HGgC8fgGOKmjlgXdNLr_Jiio_e3g',
488488
},
489489
},
@@ -582,7 +582,7 @@ const mockData: VciMockDataStructure = {
582582
type: 'OpenBadgeCredential',
583583
format: 'ldp_vc',
584584
proof: {
585-
proof_type: 'jwt',
585+
proof_type: 'JWT',
586586
jwt: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa3AxM3N6QUFMVFN0cDV1OGtMcnl5YW5vYWtrVWtFUGZXazdvOHY3dms0RW1KI3o2TWtwMTNzekFBTFRTdHA1dThrTHJ5eWFub2Fra1VrRVBmV2s3bzh2N3ZrNEVtSiJ9.eyJhdWQiOiJodHRwczovL2xhdW5jaHBhZC5tYXR0cmxhYnMuY29tIiwiaWF0IjoxNjgxOTE0NDgyLjUxOSwiZXhwIjoxNjgxOTE1MTQyLjUxOSwiaXNzIjoic3BoZXJlb246c3NpLXdhbGxldCIsImp0aSI6ImI5NDY1ZGE5LTY4OGYtNDdjNi04MjUwNDA0ZGNiOWI5Y2E5In0.uQ8ewOfIjy_1p_Gk6PjeEWccBJnjOca1pwbTWiCAFMQX9wlIsfeUdGtXUoHjH5_PQtpwytodx7WU456_CT9iBQ',
587587
},
588588
},
@@ -696,7 +696,7 @@ const mockData: VciMockDataStructure = {
696696
type: 'OpenBadgeCredential',
697697
format: 'ldp_vc',
698698
proof: {
699-
proof_type: 'jwt',
699+
proof_type: 'JWT',
700700
jwt: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa3AxM3N6QUFMVFN0cDV1OGtMcnl5YW5vYWtrVWtFUGZXazdvOHY3dms0RW1KI3o2TWtwMTNzekFBTFRTdHA1dThrTHJ5eWFub2Fra1VrRVBmV2s3bzh2N3ZrNEVtSiJ9.eyJhdWQiOiJodHRwczovL29pZGM0dmMuZGl3YWxhLmlvIiwiaWF0IjoxNjgxOTE1MDk1LjIwMiwiZXhwIjoxNjgxOTE1NzU1LjIwMiwiaXNzIjoic3BoZXJlb246c3NpLXdhbGxldCIsImp0aSI6IjYxN2MwM2EzLTM3MTUtNGJlMy1hYjkxNzM4MTlmYzYxNTYzIn0.KA-cHjecaYp9FSaWHkz5cqtNyhBIVT_0I7cJnpHn03T4UWFvdhjhn8Hpe-BU247enFyWOWJ6v3NQZyZgle7xBA',
701701
},
702702
},

0 commit comments

Comments
 (0)