@operstack/audit 0.15.1 → 0.15.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/test-agency.mjs +10 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@operstack/audit",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.2",
|
|
4
4
|
"description": "SEO, AEO and GEO audit generator: collect public signals from a site into audit.json, let an analyst or an agent fill the narrative, render the OperStack report as HTML and PDF.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
package/src/test-agency.mjs
CHANGED
|
@@ -26,7 +26,16 @@ const makeKey = (data) => {
|
|
|
26
26
|
// Проверка подписи
|
|
27
27
|
ok('правильный ключ принимается', verifyKey(makeKey({ email: 'a@b.co', plan: 'agency' }), pub).ok);
|
|
28
28
|
ok('мусор отвергается', !verifyKey('OSK1.aaa.bbb', pub).ok);
|
|
29
|
-
|
|
29
|
+
// Портить надо байты, а не символы. В base64url последний символ кодирует не все шесть бит,
|
|
30
|
+
// поэтому несколько разных символов дают одни и те же байты, и подпись оставалась верной
|
|
31
|
+
// примерно в каждом пятом прогоне. Летучий тест хуже, чем никакого.
|
|
32
|
+
const tampered = (k) => {
|
|
33
|
+
const [p, payload, sig] = k.split('.');
|
|
34
|
+
const bytes = Buffer.from(sig, 'base64url');
|
|
35
|
+
bytes[0] ^= 0xff;
|
|
36
|
+
return `${p}.${payload}.${bytes.toString('base64url')}`;
|
|
37
|
+
};
|
|
38
|
+
ok('чужая подпись отвергается', !verifyKey(tampered(makeKey({ plan: 'agency' })), pub).ok);
|
|
30
39
|
ok('просроченный план отвергается', !verifyKey(makeKey({ plan: 'agency', expires: '2020-01-01' }), pub).ok);
|
|
31
40
|
ok('ключ другого продукта отвергается', !verifyKey(makeKey({ plan: 'site-kit' }), pub).ok);
|
|
32
41
|
ok('срок в будущем проходит', verifyKey(makeKey({ plan: 'agency', expires: '2999-01-01' }), pub).ok);
|