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

35 lines (34 loc) • 1.39 kB
import { CredoError } from "../../../error/CredoError.mjs"; import "../../../error/index.mjs"; import { TypedArrayEncoder } from "../../../utils/TypedArrayEncoder.mjs"; import { JsonEncoder } from "../../../utils/JsonEncoder.mjs"; import "../../../utils/index.mjs"; import { JwtPayload } from "./JwtPayload.mjs"; import { replaceError } from "../../../logger/replaceError.mjs"; //#region src/crypto/jose/jwt/Jwt.ts var Jwt = class Jwt { constructor(options) { this.serializedJwt = options.serializedJwt; this.payload = options.payload; this.header = options.header; this.signature = options.signature; } static fromSerializedJwt(serializedJwt) { if (typeof serializedJwt !== "string" || !Jwt.format.test(serializedJwt)) throw new CredoError(`Invalid JWT. '${serializedJwt}' does not match JWT regex`); const [header, payload, signature] = serializedJwt.split("."); try { return new Jwt({ header: JsonEncoder.fromBase64Url(header), payload: JwtPayload.fromJson(JsonEncoder.fromBase64Url(payload)), signature: TypedArrayEncoder.fromBase64Url(signature), serializedJwt }); } catch (error) { throw new CredoError(`Invalid JWT. ${error instanceof Error ? error.message : JSON.stringify(error, replaceError)}`); } } }; Jwt.format = /^[A-Za-z0-9-_=]+\.[A-Za-z0-9-_=]+\.?[A-Za-z0-9-_.+/=]*$/; //#endregion export { Jwt }; //# sourceMappingURL=Jwt.mjs.map