@credo-ts/core
Version:
<p align="center"> <br /> <img alt="Credo Logo" src="https://github.com/openwallet-foundation/credo-ts/blob/c7886cb8377ceb8ee4efe8d264211e561a75072d/images/credo-logo.png" height="250px" /> </p> <h1 align="center"><b>Credo - Core</b></h1
1 lines • 2.56 kB
Source Map (JSON)
{"version":3,"file":"Jwt.mjs","names":[],"sources":["../../../../src/crypto/jose/jwt/Jwt.ts"],"sourcesContent":["import { CredoError } from '../../../error'\nimport { replaceError } from '../../../logger/replaceError'\nimport type { Jwk } from '../../../modules/kms'\nimport { JsonEncoder, TypedArrayEncoder } from '../../../utils'\nimport { JwtPayload } from './JwtPayload'\n\n// TODO: JWT Header typing\ninterface JwtHeader {\n alg: string\n kid?: string\n jwk?: Jwk\n x5c?: string[]\n [key: string]: unknown\n}\n\ninterface JwtOptions {\n payload: JwtPayload\n header: JwtHeader\n signature: Uint8Array\n\n serializedJwt: string\n}\n\nexport class Jwt {\n public static format = /^[A-Za-z0-9-_=]+\\.[A-Za-z0-9-_=]+\\.?[A-Za-z0-9-_.+/=]*$/\n\n public readonly payload: JwtPayload\n public readonly header: JwtHeader\n public readonly signature: Uint8Array\n\n /**\n * Compact serialization of the JWT. Contains the payload, header, and signature.\n */\n public readonly serializedJwt: string\n\n private constructor(options: JwtOptions) {\n this.serializedJwt = options.serializedJwt\n\n this.payload = options.payload\n this.header = options.header\n this.signature = options.signature\n }\n\n public static fromSerializedJwt(serializedJwt: string) {\n if (typeof serializedJwt !== 'string' || !Jwt.format.test(serializedJwt)) {\n throw new CredoError(`Invalid JWT. '${serializedJwt}' does not match JWT regex`)\n }\n\n const [header, payload, signature] = serializedJwt.split('.')\n\n try {\n return new Jwt({\n header: JsonEncoder.fromBase64Url(header),\n payload: JwtPayload.fromJson(JsonEncoder.fromBase64Url(payload)),\n signature: TypedArrayEncoder.fromBase64Url(signature),\n serializedJwt,\n })\n } catch (error) {\n throw new CredoError(\n `Invalid JWT. ${error instanceof Error ? error.message : JSON.stringify(error, replaceError)}`\n )\n }\n }\n}\n"],"mappings":";;;;;;;;AAuBA,IAAa,MAAb,MAAa,IAAI;CAYf,YAAoB,SAAqB;EACvC,KAAK,gBAAgB,QAAQ;EAE7B,KAAK,UAAU,QAAQ;EACvB,KAAK,SAAS,QAAQ;EACtB,KAAK,YAAY,QAAQ;CAC3B;CAEA,OAAc,kBAAkB,eAAuB;EACrD,IAAI,OAAO,kBAAkB,YAAY,CAAC,IAAI,OAAO,KAAK,aAAa,GACrE,MAAM,IAAI,WAAW,iBAAiB,cAAc,2BAA2B;EAGjF,MAAM,CAAC,QAAQ,SAAS,aAAa,cAAc,MAAM,GAAG;EAE5D,IAAI;GACF,OAAO,IAAI,IAAI;IACb,QAAQ,YAAY,cAAc,MAAM;IACxC,SAAS,WAAW,SAAS,YAAY,cAAc,OAAO,CAAC;IAC/D,WAAW,kBAAkB,cAAc,SAAS;IACpD;GACF,CAAC;EACH,SAAS,OAAO;GACd,MAAM,IAAI,WACR,gBAAgB,iBAAiB,QAAQ,MAAM,UAAU,KAAK,UAAU,OAAO,YAAY,GAC7F;EACF;CACF;AACF;AAvCE,IAAc,SAAS"}