mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-11-13 15:51:00 +00:00
chore: bump version to 5.1.4 [skip ci]
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
apiVersion: v2
|
||||
name: trek
|
||||
version: 5.1.3
|
||||
version: 5.1.4
|
||||
description: Minimal Helm chart for TREK app
|
||||
appVersion: "5.1.3"
|
||||
appVersion: "5.1.4"
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@trek/client",
|
||||
"version": "5.1.3",
|
||||
"version": "5.1.4",
|
||||
"engines": {
|
||||
"node": "^22.22.2 || ^24.15.0 || >=26.0.0"
|
||||
},
|
||||
|
||||
Generated
+5
-5
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@trek/root",
|
||||
"version": "5.1.3",
|
||||
"version": "5.1.4",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@trek/root",
|
||||
"version": "5.1.3",
|
||||
"version": "5.1.4",
|
||||
"workspaces": [
|
||||
"client",
|
||||
"server",
|
||||
@@ -29,7 +29,7 @@
|
||||
},
|
||||
"client": {
|
||||
"name": "@trek/client",
|
||||
"version": "5.1.3",
|
||||
"version": "5.1.4",
|
||||
"dependencies": {
|
||||
"@assistant-ui/react": "0.15.32",
|
||||
"@capacitor/action-sheet": "^8.1.1",
|
||||
@@ -25676,7 +25676,7 @@
|
||||
},
|
||||
"server": {
|
||||
"name": "@trek/server",
|
||||
"version": "5.1.3",
|
||||
"version": "5.1.4",
|
||||
"dependencies": {
|
||||
"@aws-lite/client": "^0.24.1",
|
||||
"@aws-lite/s3": "^0.2.7",
|
||||
@@ -26076,7 +26076,7 @@
|
||||
},
|
||||
"shared": {
|
||||
"name": "@trek/shared",
|
||||
"version": "5.1.3",
|
||||
"version": "5.1.4",
|
||||
"dependencies": {
|
||||
"isomorphic-dompurify": "^3.23.0",
|
||||
"zod": "^4.6.7"
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@trek/root",
|
||||
"private": true,
|
||||
"version": "5.1.3",
|
||||
"version": "5.1.4",
|
||||
"engines": {
|
||||
"node": "^22.22.2 || ^24.15.0 || >=26.0.0"
|
||||
},
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@trek/server",
|
||||
"version": "5.1.3",
|
||||
"version": "5.1.4",
|
||||
"engines": {
|
||||
"node": "^22.22.2 || ^24.15.0 || >=26.0.0"
|
||||
},
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* How TREK 5.1.3 registers with the TREK services.
|
||||
* How TREK 5.1.4 registers with the TREK services.
|
||||
*
|
||||
* The issuer writes this file for each release and the release pipeline
|
||||
* commits it with the version bump. It is not edited by hand, and its layout
|
||||
@@ -8,86 +8,101 @@
|
||||
*/
|
||||
import type { DialectSelfCheck, RegistrationDialect } from './registration-dialect.types';
|
||||
|
||||
import { createHash, pbkdf2Sync } from 'node:crypto';
|
||||
import { createHash, createHmac, hkdfSync } from 'node:crypto';
|
||||
|
||||
const DIALECT = 'qDlOapZrw47x';
|
||||
const POND_HILL = Buffer.from('53ee01dfb2711f0b4b7cb1b5d7cd644801289dabda654bf6f53ba0f4727d5d26', 'hex');
|
||||
const DIALECT = '8546tJZpbjQb';
|
||||
const ARROW_BARLEY = Buffer.from('95fd08ded3ef3e32af04cf42290d5a6d1ad24d88827f9c745ba46b810962cd8e', 'hex');
|
||||
|
||||
function saddle(alg: string, data: Buffer): Buffer {
|
||||
return createHash(alg).update(data).digest();
|
||||
function mill(a: Buffer, b: Buffer): Buffer {
|
||||
const parts: Buffer[] = [];
|
||||
for (let i = 0; i < Math.max(a.length, b.length); i++) parts.push(a.subarray(i, i + 1), b.subarray(i, i + 1));
|
||||
return Buffer.concat(parts);
|
||||
}
|
||||
|
||||
function frost(value: number): Buffer {
|
||||
const out = Buffer.alloc(8);
|
||||
out.writeBigUInt64BE(BigInt(value));
|
||||
return out;
|
||||
}
|
||||
|
||||
function hollow(input: Buffer, size: number): Buffer {
|
||||
function moss(input: Buffer, size: number): Buffer {
|
||||
const out = Buffer.alloc(size);
|
||||
input.forEach((byte, i) => out.writeUInt8(out.readUInt8(i % size) ^ byte, i % size));
|
||||
return out;
|
||||
}
|
||||
|
||||
function zephyr(value: number): Buffer {
|
||||
const out: number[] = [];
|
||||
let rest = value;
|
||||
do {
|
||||
const low = rest % 128;
|
||||
rest = Math.floor(rest / 128);
|
||||
out.push(low | (Math.sign(rest) << 7));
|
||||
} while (rest > 0);
|
||||
return Buffer.from(out);
|
||||
function meadow(alg: string, key: Buffer, data: Buffer): Buffer {
|
||||
return createHmac(alg, key).update(data).digest();
|
||||
}
|
||||
|
||||
function barrel(input: Buffer, width: number): Buffer {
|
||||
const out = Buffer.from(input);
|
||||
for (let i = 0; i + width <= out.length; i += width) out.subarray(i, i + width).reverse();
|
||||
function rapids(part: Buffer): Buffer {
|
||||
const head = Buffer.alloc(4);
|
||||
head.writeUInt32LE(part.length);
|
||||
return Buffer.concat([head, part]);
|
||||
}
|
||||
|
||||
function hollow(value: number): Buffer {
|
||||
const out = Buffer.alloc(8);
|
||||
out.writeBigUInt64BE(BigInt(value));
|
||||
return out;
|
||||
}
|
||||
|
||||
function apple(part: Buffer): Buffer {
|
||||
const head = Buffer.alloc(2);
|
||||
head.writeUInt16LE(part.length);
|
||||
return Buffer.concat([head, part]);
|
||||
}
|
||||
|
||||
function blossom(value: number): Buffer {
|
||||
const out = Buffer.alloc(4);
|
||||
out.writeUInt32BE(value >>> 0);
|
||||
return out;
|
||||
}
|
||||
|
||||
export const registrationDialect: RegistrationDialect = {
|
||||
id: DIALECT,
|
||||
releasedFor: '5.1.3',
|
||||
createdAt: '2026-11-10',
|
||||
releasedFor: '5.1.4',
|
||||
createdAt: '2026-11-12',
|
||||
challengePath: `/v1/register/${DIALECT}/challenge`,
|
||||
registerPath: `/v1/register/${DIALECT}`,
|
||||
begin({ challenge, version, random }) {
|
||||
const garnet = Buffer.from(challenge.c, 'utf8');
|
||||
const glade = Buffer.from(version, 'utf8');
|
||||
const banner = createHash('sha256').update(garnet).digest();
|
||||
const kettle = Buffer.from([0x5a]);
|
||||
const river = Buffer.concat([random, kettle, POND_HILL, kettle, banner, kettle, glade]);
|
||||
const robin = createHash('shake128', { outputLength: 31 }).update(river).digest();
|
||||
const larch = barrel(robin, 8);
|
||||
const ocean = createHash('sha3-512').update(larch).digest();
|
||||
begin({ challenge, version, random, nowSeconds }) {
|
||||
const chapel = Buffer.from(challenge.c, 'utf8');
|
||||
const fjord = Buffer.from(version, 'utf8');
|
||||
const cliff = createHash('sha256').update(chapel).digest();
|
||||
const horizon = Buffer.concat([cliff].map(apple));
|
||||
const pasture = Buffer.concat([cliff.subarray(0x10, 20), Buffer.from([0x8c]), horizon]);
|
||||
const sorrel = Buffer.from(pasture.toString('hex'));
|
||||
const bell = meadow('sha256', sorrel, chapel);
|
||||
return {
|
||||
work(nonce) {
|
||||
const wren = Buffer.concat([banner.subarray(0xa, 16), garnet, frost(nonce), glade, random]);
|
||||
const crystal = pbkdf2Sync(wren, banner, 10, 0x32, 'sha256');
|
||||
const seal = hollow(crystal, 20);
|
||||
const mist = Buffer.from([...seal.subarray(0x1b % seal.length), ...seal.subarray(0, 0x1b % seal.length)]);
|
||||
const coast = barrel(mist, 4);
|
||||
const dawn = saddle('sha512', coast);
|
||||
const yarrow = barrel(dawn, 8);
|
||||
return { password: yarrow, salt: ocean };
|
||||
const cinder = Buffer.concat([
|
||||
rapids(random), rapids(fjord), rapids(hollow(nonce)), rapids(blossom(nowSeconds)), rapids(chapel),
|
||||
]);
|
||||
const tide = Buffer.from([
|
||||
0, 0xa, 9, 0xb, 1, 15, 3, 16, 13, 6, 8, 4, 0xc, 14, 0x11, 2, 5, 7,
|
||||
].map((from) => cinder.readUInt8(from)));
|
||||
const cottage = Buffer.concat([tide, cinder.subarray(18)]);
|
||||
const sapling = Buffer.from(hkdfSync(
|
||||
'sha256', cottage, chapel.subarray(8, 0xc), Buffer.from('9b25443bf88e4cbf', 'hex'), 43,
|
||||
));
|
||||
const rowan = Buffer.from(Array.from(sapling, (byte) => (byte * 0xc7 + 0xe2) % 256));
|
||||
const linden = mill(rowan, ARROW_BARLEY);
|
||||
const swan = Buffer.from(linden.subarray(2, 41));
|
||||
return { password: swan, salt: bell };
|
||||
},
|
||||
request(nonce) {
|
||||
const pilgrim = Buffer.concat([
|
||||
garnet, Buffer.from([7]), glade, Buffer.from([7]), banner, Buffer.from([7]), zephyr(nonce), Buffer.from([7]),
|
||||
random,
|
||||
const falcon = Buffer.concat([
|
||||
Buffer.from(nonce.toString(16), 'utf8'), Buffer.from([0x4b]), cliff.subarray(24, 28), Buffer.from([0x4b]),
|
||||
chapel, Buffer.from([0x4b]), ARROW_BARLEY, Buffer.from([0x4b]), random.subarray(3, 9), Buffer.from([0x4b]),
|
||||
fjord, Buffer.from([0x4b]), blossom(nowSeconds),
|
||||
]);
|
||||
const pepper = Buffer.from(Array.from(pilgrim, (byte) => (byte * 203 + 60) % 256));
|
||||
const mesa = createHash('blake2b512').update(pepper).digest();
|
||||
const pelican = moss(falcon, 0x14);
|
||||
const kelp = meadow('sha512', pelican, fjord);
|
||||
return {
|
||||
body: {
|
||||
brookCactus: mesa.toString('base64'),
|
||||
tundra: random.toString('hex'),
|
||||
ivoryCape: version,
|
||||
mill: nonce,
|
||||
jadeBadge: challenge.c,
|
||||
willow_jetty: {
|
||||
echo: nonce,
|
||||
banner: version,
|
||||
lava_breeze: random.toString('hex'),
|
||||
flint_lava: challenge.c,
|
||||
sage_frost: String(nowSeconds),
|
||||
},
|
||||
},
|
||||
headers: {},
|
||||
headers: { 'X-TREK-Fossil-Vessel': kelp.toString('base64url') },
|
||||
};
|
||||
},
|
||||
};
|
||||
@@ -96,13 +111,13 @@ export const registrationDialect: RegistrationDialect = {
|
||||
|
||||
/** Fixed inputs and what this module must make of them; TREK's tests and release job run it. */
|
||||
export const SELF_CHECK: DialectSelfCheck = {
|
||||
challenge: { c: 'v1.selfcheck.qDlOapZrw47x', alg: 'scrypt', N: 16, r: 1, p: 1, bits: 0, expires_at: 1 },
|
||||
version: '5.1.3',
|
||||
challenge: { c: 'v1.selfcheck.8546tJZpbjQb', alg: 'scrypt', N: 16, r: 1, p: 1, bits: 0, expires_at: 1 },
|
||||
version: '5.1.4',
|
||||
random: '000102030405060708090a0b0c0d0e0f',
|
||||
nowSeconds: 1800000000,
|
||||
nonce: 41,
|
||||
inputSha256: 'd0459dd032ca32758d4960be87026844ca0e5f2ccc0cd087838c7cc9f1f054d6',
|
||||
saltSha256: 'e6beeb65b892a5f7e68977ceb33e0193bcf284904db6b55884823b5b2a948787',
|
||||
scrypt: 'cb5f7842c312c4442f9d750305c31d2ea2df36556dbf80e17b56df859d2bc1e9',
|
||||
requestSha256: '53bc1ae4f560b17631848e100dd2469040bbadc8ae61c881263a489bd14842ed',
|
||||
inputSha256: '35bde8e3256e05441ac19c8b6b22f9d4e4adb59b5564f101078aa597e70ece99',
|
||||
saltSha256: '8730a0377647a045a6fceade4a2c8c7dd3854e56cc6a87cd20ef94e87107493b',
|
||||
scrypt: '884c7cf0406e20ccbba3372999d07d80b3cfc13eb9a464510b68942868840189',
|
||||
requestSha256: '49848ec61f040261e65627b276eb996a83ed3d096b5a0216e8ba00a75a90cf70',
|
||||
};
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@trek/shared",
|
||||
"version": "5.1.3",
|
||||
"version": "5.1.4",
|
||||
"engines": {
|
||||
"node": "^22.22.2 || ^24.15.0 || >=26.0.0"
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user