@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
JavaScript
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