UNPKG

@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.54 kB
{"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,AAAQ,YAAY,SAAqB;AACvC,OAAK,gBAAgB,QAAQ;AAE7B,OAAK,UAAU,QAAQ;AACvB,OAAK,SAAS,QAAQ;AACtB,OAAK,YAAY,QAAQ;;CAG3B,OAAc,kBAAkB,eAAuB;AACrD,MAAI,OAAO,kBAAkB,YAAY,CAAC,IAAI,OAAO,KAAK,cAAc,CACtE,OAAM,IAAI,WAAW,iBAAiB,cAAc,4BAA4B;EAGlF,MAAM,CAAC,QAAQ,SAAS,aAAa,cAAc,MAAM,IAAI;AAE7D,MAAI;AACF,UAAO,IAAI,IAAI;IACb,QAAQ,YAAY,cAAc,OAAO;IACzC,SAAS,WAAW,SAAS,YAAY,cAAc,QAAQ,CAAC;IAChE,WAAW,kBAAkB,cAAc,UAAU;IACrD;IACD,CAAC;WACK,OAAO;AACd,SAAM,IAAI,WACR,gBAAgB,iBAAiB,QAAQ,MAAM,UAAU,KAAK,UAAU,OAAO,aAAa,GAC7F;;;;IApCS,SAAS"}