diff --git a/src/lib/session.test.ts b/src/lib/session.test.ts index 183fdd1..8512fa9 100644 --- a/src/lib/session.test.ts +++ b/src/lib/session.test.ts @@ -70,8 +70,14 @@ describe("Session-Token", () => { role: "KUNDE", sessionVersion: 0, }); - // Letztes Zeichen der Signatur veraendern. - const tampered = token.slice(0, -1) + (token.endsWith("A") ? "B" : "A"); + // Ein Zeichen MITTEN in der Signatur veraendern. Das letzte Zeichen taugt + // nicht: bei 32 Signaturbytes traegt es in Base64url teils nur Fuellbits, + // die der Decoder ignoriert — der Test schlug dann zufaellig fehl, obwohl + // die Signatur korrekt geprueft wurde. + const signatureStart = token.lastIndexOf(".") + 1; + const position = signatureStart + 10; + const replacement = token[position] === "A" ? "B" : "A"; + const tampered = token.slice(0, position) + replacement + token.slice(position + 1); await expect(verifySessionToken(tampered)).resolves.toBeNull(); });