diff --git a/frontend/index.html b/frontend/index.html index 9a855de..22eafa1 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -1683,7 +1683,18 @@
SCP80 (GSM 03.48, ETSI TS 102 225) OTA keysets — each with its own number and counter -
+ + + + + + + + + + + +
#KIcKIDKIc keyKID keyCounter

KIc and KID must carry the same keyset number (their high nibble) in the range 01-0F — TS 102 225 A.2; each keyset has its own counter on the card (Annex A.1).

@@ -11815,17 +11826,17 @@ function spKeysetOptionsHtml(preset, kicHex, kidHex) { let _cardsKeysetCount = 0; function cardsKeysetRowHtml(ks, i) { - const cls = 'border border-gray-300 dark:border-slate-600 text-sm rounded px-2 py-1.5 dark:bg-slate-800 font-mono'; + const cls = 'w-full border border-gray-300 dark:border-slate-600 text-sm rounded px-2 py-1.5 dark:bg-slate-800 font-mono'; const kvn = spKeysetKvnOf(ks.kic); - return '
' + - '' + (kvn === null ? '?' : kvn) + '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
'; + return '' + + '' + (kvn === null ? '?' : kvn) + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''; } function cardsKeysetRowsRender(keysets) { diff --git a/frontend/sw.js b/frontend/sw.js index 2e0a30f..e86e597 100644 --- a/frontend/sw.js +++ b/frontend/sw.js @@ -1,4 +1,4 @@ -const CACHE = 'simple-v365'; +const CACHE = 'simple-v366'; const URLS = [ 'index.html', 'help.html', diff --git a/frontend/tests/cards_form.test.js b/frontend/tests/cards_form.test.js index dd3777c..52c26b9 100644 --- a/frontend/tests/cards_form.test.js +++ b/frontend/tests/cards_form.test.js @@ -539,6 +539,16 @@ test('the TAR row values are left-aligned like the headers', () => { assert.match(out, //); + assert.match(scp80, //); + for (const h of ['KIc', 'KID', 'KIc key', 'KID key', 'Counter']) { + assert.match(scp80, new RegExp('>' + h + '')); + } assert.match(scp81, /id="cards-psk-id"/); assert.match(scp81, /id="cards-psk-key"/); // the PSK explanation lives inside the SCP81 group, not outside it