@browsercore/testing 0.2.6 → 0.2.8
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/dist/fingerprint/ja4-reader.d.ts +4 -0
- package/dist/fingerprint/ja4-reader.d.ts.map +1 -1
- package/dist/fingerprint/ja4-reader.js +4 -0
- package/dist/fingerprint/ja4-reader.js.map +1 -1
- package/dist/fingerprint/ja4.d.ts +5 -3
- package/dist/fingerprint/ja4.d.ts.map +1 -1
- package/dist/fingerprint/ja4.js +68 -24
- package/dist/fingerprint/ja4.js.map +1 -1
- package/dist/reference/dump.js +1 -1
- package/dist/reference/node-crypto-provider.d.ts +3 -0
- package/dist/reference/node-crypto-provider.d.ts.map +1 -1
- package/dist/reference/node-crypto-provider.js +21 -1
- package/dist/reference/node-crypto-provider.js.map +1 -1
- package/package.json +10 -12
|
@@ -13,6 +13,10 @@ export declare const EXT_SNI = 0;
|
|
|
13
13
|
export declare const EXT_SUPPORTED_GROUPS = 10;
|
|
14
14
|
export declare const EXT_EC_POINT_FORMATS = 11;
|
|
15
15
|
export declare const EXT_ALPN = 16;
|
|
16
|
+
/** padding — counted in JA4_a but excluded from the JA4_c hash (oracle-verified). */
|
|
17
|
+
export declare const EXT_PADDING = 21;
|
|
18
|
+
/** signature_algorithms — part of the JA4_c hash input. */
|
|
19
|
+
export declare const EXT_SIGNATURE_ALGORITHMS = 13;
|
|
16
20
|
export declare const EXT_SUPPORTED_VERSIONS = 43;
|
|
17
21
|
/** TLS protocol-version codes → human-readable version string. */
|
|
18
22
|
export declare const TLS_VERSIONS: ReadonlyMap<number, string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ja4-reader.d.ts","sourceRoot":"","sources":["../../src/fingerprint/ja4-reader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,2EAA2E;AAC3E,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,MAAM,CAG5C,CAAC;AAEH,+DAA+D;AAC/D,eAAO,MAAM,OAAO,IAAS,CAAC;AAC9B,eAAO,MAAM,oBAAoB,KAAS,CAAC;AAC3C,eAAO,MAAM,oBAAoB,KAAS,CAAC;AAC3C,eAAO,MAAM,QAAQ,KAAS,CAAC;AAC/B,eAAO,MAAM,sBAAsB,KAAS,CAAC;AAE7C,kEAAkE;AAClE,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAMnD,CAAC;AAEH,iFAAiF;AACjF,wBAAgB,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAO9D;AAED,6DAA6D;AAC7D,wBAAgB,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ9D;AAED,8EAA8E;AAC9E,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAUlF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAcjF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAe9E"}
|
|
1
|
+
{"version":3,"file":"ja4-reader.d.ts","sourceRoot":"","sources":["../../src/fingerprint/ja4-reader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,2EAA2E;AAC3E,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,MAAM,CAG5C,CAAC;AAEH,+DAA+D;AAC/D,eAAO,MAAM,OAAO,IAAS,CAAC;AAC9B,eAAO,MAAM,oBAAoB,KAAS,CAAC;AAC3C,eAAO,MAAM,oBAAoB,KAAS,CAAC;AAC3C,eAAO,MAAM,QAAQ,KAAS,CAAC;AAC/B,qFAAqF;AACrF,eAAO,MAAM,WAAW,KAAS,CAAC;AAClC,2DAA2D;AAC3D,eAAO,MAAM,wBAAwB,KAAS,CAAC;AAC/C,eAAO,MAAM,sBAAsB,KAAS,CAAC;AAE7C,kEAAkE;AAClE,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAMnD,CAAC;AAEH,iFAAiF;AACjF,wBAAgB,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAO9D;AAED,6DAA6D;AAC7D,wBAAgB,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ9D;AAED,8EAA8E;AAC9E,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAUlF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAcjF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAe9E"}
|
|
@@ -17,6 +17,10 @@ export const EXT_SNI = 0x0000;
|
|
|
17
17
|
export const EXT_SUPPORTED_GROUPS = 0x000a;
|
|
18
18
|
export const EXT_EC_POINT_FORMATS = 0x000b;
|
|
19
19
|
export const EXT_ALPN = 0x0010;
|
|
20
|
+
/** padding — counted in JA4_a but excluded from the JA4_c hash (oracle-verified). */
|
|
21
|
+
export const EXT_PADDING = 0x0015;
|
|
22
|
+
/** signature_algorithms — part of the JA4_c hash input. */
|
|
23
|
+
export const EXT_SIGNATURE_ALGORITHMS = 0x000d;
|
|
20
24
|
export const EXT_SUPPORTED_VERSIONS = 0x002b;
|
|
21
25
|
/** TLS protocol-version codes → human-readable version string. */
|
|
22
26
|
export const TLS_VERSIONS = new Map([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ja4-reader.js","sourceRoot":"","sources":["../../src/fingerprint/ja4-reader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ja4-reader.js","sourceRoot":"","sources":["../../src/fingerprint/ja4-reader.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* JA4_f raw-fields hash — TLS version, ciphers, extensions, supported
|
|
14
14
|
* groups, EC point formats, SHA-256, first 12 hex.
|
|
15
15
|
*
|
|
16
|
-
* The concatenated `
|
|
16
|
+
* The concatenated `JA4_a_JA4_b_JA4_c` string is the canonical JA4 tag.
|
|
17
17
|
*
|
|
18
18
|
* JA4H (the HTTP-layer sibling) is computed separately in {@link ./ja4h.ts}.
|
|
19
19
|
*
|
|
@@ -41,6 +41,8 @@ export interface Ja4ClientHello {
|
|
|
41
41
|
readonly supportedGroups: readonly number[];
|
|
42
42
|
readonly ecPointFormats: readonly number[];
|
|
43
43
|
readonly alpnRaw: string;
|
|
44
|
+
/** Non-GREASE signature_algorithms (ext 13), as offered. */
|
|
45
|
+
readonly signatureAlgorithms: readonly number[];
|
|
44
46
|
}
|
|
45
47
|
/** The four computed JA4 parts. */
|
|
46
48
|
export interface Ja4Fingerprint {
|
|
@@ -48,7 +50,7 @@ export interface Ja4Fingerprint {
|
|
|
48
50
|
readonly b: string;
|
|
49
51
|
readonly c: string;
|
|
50
52
|
readonly f: string;
|
|
51
|
-
/** Canonical `
|
|
53
|
+
/** Canonical `JA4_a_JA4_b_JA4_c` tag (the public/oracle form). */
|
|
52
54
|
readonly tag: string;
|
|
53
55
|
}
|
|
54
56
|
export { Ja4ParseError };
|
|
@@ -60,7 +62,7 @@ export declare function sha256First12(input: string): string;
|
|
|
60
62
|
*/
|
|
61
63
|
export declare function parseJa4ClientHello(clientHello: Uint8Array): Ja4ClientHello;
|
|
62
64
|
/**
|
|
63
|
-
* Compute the canonical JA4 tag (`
|
|
65
|
+
* Compute the canonical JA4 tag (`JA4_a_JA4_b_JA4_c`) from a ClientHello.
|
|
64
66
|
*
|
|
65
67
|
* This is the string form used by the public API (index.ts) and the reference
|
|
66
68
|
* provider. Use {@link computeJa4Fingerprint} when you need the parts.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ja4.d.ts","sourceRoot":"","sources":["../../src/fingerprint/ja4.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ja4.d.ts","sourceRoot":"","sources":["../../src/fingerprint/ja4.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAmBhD;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;CACnD;AAED,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACxB;AAID,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAoBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,UAAU,GAAG,cAAc,CAqL3E;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,UAAU,GAAG,MAAM,CAE1D;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,UAAU,GAAG,cAAc,CA8C7E"}
|
package/dist/fingerprint/ja4.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* JA4_f raw-fields hash — TLS version, ciphers, extensions, supported
|
|
14
14
|
* groups, EC point formats, SHA-256, first 12 hex.
|
|
15
15
|
*
|
|
16
|
-
* The concatenated `
|
|
16
|
+
* The concatenated `JA4_a_JA4_b_JA4_c` string is the canonical JA4 tag.
|
|
17
17
|
*
|
|
18
18
|
* JA4H (the HTTP-layer sibling) is computed separately in {@link ./ja4h.ts}.
|
|
19
19
|
*
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
*/
|
|
22
22
|
import { createHash } from "node:crypto";
|
|
23
23
|
import { Ja4ParseError } from "./ja4-errors.js";
|
|
24
|
-
import { EXT_ALPN, EXT_EC_POINT_FORMATS, EXT_SNI, EXT_SUPPORTED_GROUPS, GREASE_VALUES, hex4, readAlpnProtocols, readEcPointFormats, readSupportedGroups, tlsVersionLabel, uint16, uint24, } from "./ja4-reader.js";
|
|
24
|
+
import { EXT_ALPN, EXT_EC_POINT_FORMATS, EXT_SNI, EXT_SUPPORTED_GROUPS, GREASE_VALUES, hex4, readAlpnProtocols, readEcPointFormats, readSupportedGroups, tlsVersionLabel, EXT_SUPPORTED_VERSIONS, EXT_SIGNATURE_ALGORITHMS, EXT_PADDING, uint16, uint24, } from "./ja4-reader.js";
|
|
25
25
|
// Re-export the parse error so existing import sites (`from "./ja4.js"`) keep
|
|
26
26
|
// resolving after the type moved to `ja4-errors.ts`.
|
|
27
27
|
export { Ja4ParseError };
|
|
@@ -29,16 +29,21 @@ export { Ja4ParseError };
|
|
|
29
29
|
export function sha256First12(input) {
|
|
30
30
|
return createHash("sha256").update(input).digest("hex").slice(0, 12);
|
|
31
31
|
}
|
|
32
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* ALPN code per the FoxIO JA4 spec: the FIRST offered protocol, first and
|
|
34
|
+
* last character ("h2" -> "h2"). Using the first char of the LAST protocol
|
|
35
|
+
* made "h2,http/1.1" hash as "hh" — no oracle reports that.
|
|
36
|
+
*/
|
|
33
37
|
function alpnCode(alpnRaw) {
|
|
34
38
|
if (alpnRaw.length === 0) {
|
|
35
39
|
return "00";
|
|
36
40
|
}
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const
|
|
41
|
+
const first = alpnRaw.split(",")[0] ?? "";
|
|
42
|
+
if (first.length === 0) {
|
|
43
|
+
return "00";
|
|
44
|
+
}
|
|
45
|
+
const a = first[0] ?? "0";
|
|
46
|
+
const b = first[first.length - 1] ?? "0";
|
|
42
47
|
return `${a}${b}`.toLowerCase();
|
|
43
48
|
}
|
|
44
49
|
/**
|
|
@@ -126,10 +131,13 @@ export function parseJa4ClientHello(clientHello) {
|
|
|
126
131
|
throw new Ja4ParseError("ClientHello truncated at compression methods length");
|
|
127
132
|
}
|
|
128
133
|
pos += 1 + compLen;
|
|
134
|
+
// Highest version from supported_versions (43); 0 = extension absent.
|
|
135
|
+
let maxSupportedVersion = 0;
|
|
136
|
+
const signatureAlgorithms = [];
|
|
129
137
|
if (pos + 2 > end) {
|
|
130
138
|
// No extensions present.
|
|
131
139
|
return {
|
|
132
|
-
tlsVersion: tlsVersionLabel(versionCode),
|
|
140
|
+
tlsVersion: tlsVersionLabel(maxSupportedVersion > 0 ? maxSupportedVersion : versionCode),
|
|
133
141
|
versionCode,
|
|
134
142
|
sniPresent: false,
|
|
135
143
|
cipherSuites,
|
|
@@ -137,6 +145,7 @@ export function parseJa4ClientHello(clientHello) {
|
|
|
137
145
|
supportedGroups: [],
|
|
138
146
|
ecPointFormats: [],
|
|
139
147
|
alpnRaw: "",
|
|
148
|
+
signatureAlgorithms,
|
|
140
149
|
};
|
|
141
150
|
}
|
|
142
151
|
// extensions(variable)
|
|
@@ -171,12 +180,37 @@ export function parseJa4ClientHello(clientHello) {
|
|
|
171
180
|
else if (extType === EXT_ALPN && extLen >= 2) {
|
|
172
181
|
alpnRaw = readAlpnProtocols(clientHello, pos);
|
|
173
182
|
}
|
|
174
|
-
|
|
175
|
-
|
|
183
|
+
else if (extType === EXT_SIGNATURE_ALGORITHMS && extLen >= 2) {
|
|
184
|
+
// JA4_c hashes the signature algorithms too (after '_').
|
|
185
|
+
const listLen = uint16(clientHello, pos);
|
|
186
|
+
const usable = Math.min(listLen, extLen - 2, clientHello.length - pos - 2);
|
|
187
|
+
for (let i = 0; i + 1 < usable; i += 2) {
|
|
188
|
+
const alg = uint16(clientHello, pos + 2 + i);
|
|
189
|
+
if (!GREASE_VALUES.has(alg)) {
|
|
190
|
+
signatureAlgorithms.push(alg);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
else if (extType === EXT_SUPPORTED_VERSIONS && extLen >= 1) {
|
|
195
|
+
// JA4_a uses the HIGHEST version from supported_versions (43),
|
|
196
|
+
// NOT the legacy client_version (0x0303 labels "12" and would
|
|
197
|
+
// make every TLS 1.3 hello read as "12"). Body: 1-byte count of
|
|
198
|
+
// 2-byte versions; GREASE values ignored.
|
|
199
|
+
const count = clientHello[pos];
|
|
200
|
+
if (count !== undefined) {
|
|
201
|
+
const usable = Math.min(count * 2, extLen - 1, clientHello.length - pos - 1);
|
|
202
|
+
for (let i = 0; i + 1 < usable; i += 2) {
|
|
203
|
+
const v = uint16(clientHello, pos + 1 + i);
|
|
204
|
+
if (!GREASE_VALUES.has(v) && v > maxSupportedVersion) {
|
|
205
|
+
maxSupportedVersion = v;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
176
210
|
pos += extLen;
|
|
177
211
|
}
|
|
178
212
|
return {
|
|
179
|
-
tlsVersion: tlsVersionLabel(versionCode),
|
|
213
|
+
tlsVersion: tlsVersionLabel(maxSupportedVersion > 0 ? maxSupportedVersion : versionCode),
|
|
180
214
|
versionCode,
|
|
181
215
|
sniPresent,
|
|
182
216
|
cipherSuites,
|
|
@@ -184,10 +218,11 @@ export function parseJa4ClientHello(clientHello) {
|
|
|
184
218
|
supportedGroups,
|
|
185
219
|
ecPointFormats,
|
|
186
220
|
alpnRaw,
|
|
221
|
+
signatureAlgorithms,
|
|
187
222
|
};
|
|
188
223
|
}
|
|
189
224
|
/**
|
|
190
|
-
* Compute the canonical JA4 tag (`
|
|
225
|
+
* Compute the canonical JA4 tag (`JA4_a_JA4_b_JA4_c`) from a ClientHello.
|
|
191
226
|
*
|
|
192
227
|
* This is the string form used by the public API (index.ts) and the reference
|
|
193
228
|
* provider. Use {@link computeJa4Fingerprint} when you need the parts.
|
|
@@ -204,21 +239,29 @@ export function computeJa4(clientHello) {
|
|
|
204
239
|
*/
|
|
205
240
|
export function computeJa4Fingerprint(clientHello) {
|
|
206
241
|
const hello = parseJa4ClientHello(clientHello);
|
|
207
|
-
// JA4_a: t{ciphers:02d}{exts:02d}{
|
|
242
|
+
// JA4_a (FoxIO spec order): t{version}{sni_flag}{ciphers:02d}{exts:02d}{alpn}
|
|
208
243
|
const sniFlag = hello.sniPresent ? "d" : "i";
|
|
209
|
-
const a = `t${hello.
|
|
244
|
+
const a = `t${hello.tlsVersion}${sniFlag}${hello.cipherSuites.length
|
|
210
245
|
.toString()
|
|
211
|
-
.padStart(2, "0")}${
|
|
212
|
-
// JA4_b: sorted cipher suites, 4-char hex,
|
|
213
|
-
|
|
246
|
+
.padStart(2, "0")}${hello.extensions.length.toString().padStart(2, "0")}${alpnCode(hello.alpnRaw)}`;
|
|
247
|
+
// JA4_b: sorted non-GREASE cipher suites, 4-char hex codes, COMMA-joined
|
|
248
|
+
// (the comma-join is load-bearing: the bare concatenation hashes
|
|
249
|
+
// differently from every oracle).
|
|
250
|
+
const sortedCiphers = [...hello.cipherSuites].sort((x, y) => x - y).map((s) => hex4(s)).join(",");
|
|
214
251
|
const b = sortedCiphers.length > 0 ? sha256First12(sortedCiphers) : "000000000000";
|
|
215
|
-
// JA4_c: sorted extensions (excluding SNI=0, ALPN=16
|
|
216
|
-
|
|
217
|
-
|
|
252
|
+
// JA4_c: sorted extensions (excluding SNI=0, ALPN=16, GREASE already
|
|
253
|
+
// filtered), 4-char hex, comma-joined, then '_' and the comma-joined
|
|
254
|
+
// signature algorithms — the full spec input.
|
|
255
|
+
const extCodes = hello.extensions
|
|
256
|
+
.filter((e) => e !== EXT_SNI && e !== EXT_ALPN && e !== EXT_PADDING)
|
|
218
257
|
.sort((x, y) => x - y)
|
|
219
258
|
.map((e) => hex4(e))
|
|
220
|
-
.join("");
|
|
221
|
-
|
|
259
|
+
.join(",");
|
|
260
|
+
// Signature algorithms hash in WIRE ORDER (FoxIO spec) — verified
|
|
261
|
+
// against three oracle golds; sorting them changes the digest.
|
|
262
|
+
const sigCodes = [...hello.signatureAlgorithms].map((e) => hex4(e)).join(",");
|
|
263
|
+
const cInput = sigCodes.length > 0 ? `${extCodes}_${sigCodes}` : extCodes;
|
|
264
|
+
const c = cInput.length > 0 ? sha256First12(cInput) : "000000000000";
|
|
222
265
|
// JA4_f: raw fields — version, ciphers, extensions, supported groups, ec.
|
|
223
266
|
// Use the parsed client_version (`hello.versionCode`), NOT the first two
|
|
224
267
|
// bytes of the buffer: those are the TLS record header (0x16 0x03) for a
|
|
@@ -233,6 +276,7 @@ export function computeJa4Fingerprint(clientHello) {
|
|
|
233
276
|
hello.ecPointFormats.map(hex4).join(""),
|
|
234
277
|
].join("");
|
|
235
278
|
const f = sha256First12(raw);
|
|
236
|
-
|
|
279
|
+
// Public/oracle form is a_b_c; f (raw-field hash) stays on the object.
|
|
280
|
+
return { a, b, c, f, tag: `${a}_${b}_${c}` };
|
|
237
281
|
}
|
|
238
282
|
//# sourceMappingURL=ja4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ja4.js","sourceRoot":"","sources":["../../src/fingerprint/ja4.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACH,QAAQ,EACR,oBAAoB,EACpB,OAAO,EACP,oBAAoB,EACpB,aAAa,EACb,IAAI,EACJ,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,MAAM,EACN,MAAM,GACT,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ja4.js","sourceRoot":"","sources":["../../src/fingerprint/ja4.ts"],"names":[],"mappings":"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"}
|
package/dist/reference/dump.js
CHANGED
|
@@ -81,7 +81,7 @@ export function fingerprintFromTlsCapture(capture) {
|
|
|
81
81
|
ja4: ja4.tag,
|
|
82
82
|
alpn,
|
|
83
83
|
cipherSuite: cipherSuiteName(ja4.tag),
|
|
84
|
-
protocolVersion: ja4.tag.slice(
|
|
84
|
+
protocolVersion: ja4.tag.slice(1, 3) || "unknown",
|
|
85
85
|
signatureAlgorithms,
|
|
86
86
|
ellipticCurves,
|
|
87
87
|
};
|
|
@@ -13,6 +13,9 @@
|
|
|
13
13
|
* - HMAC via node:crypto.createHmac
|
|
14
14
|
* - AEAD via node:crypto.createCipheriv/createDecipheriv (GCM, CCM, ChaCha20)
|
|
15
15
|
* - X25519 via NobleX25519Backend (pure JS, no native binding)
|
|
16
|
+
* - ML-KEM-768 via NobleMlKem768Backend (pure JS, FIPS 203 — added for the
|
|
17
|
+
* X25519MLKEM768 hybrid key-share group in @browsercore/crypto 0.2.5 /
|
|
18
|
+
* @browsercore/tls 0.4.13)
|
|
16
19
|
* - ECDH via node:crypto.ECDH
|
|
17
20
|
* - Signatures via node:crypto.createVerify
|
|
18
21
|
* - Random bytes via node:crypto.randomBytes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-crypto-provider.d.ts","sourceRoot":"","sources":["../../src/reference/node-crypto-provider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"node-crypto-provider.d.ts","sourceRoot":"","sources":["../../src/reference/node-crypto-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAYH,OAAO,KAAK,EACR,cAAc,EAMjB,MAAM,qBAAqB,CAAC;AAiC7B;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,cA8KhC,CAAC"}
|
|
@@ -13,6 +13,9 @@
|
|
|
13
13
|
* - HMAC via node:crypto.createHmac
|
|
14
14
|
* - AEAD via node:crypto.createCipheriv/createDecipheriv (GCM, CCM, ChaCha20)
|
|
15
15
|
* - X25519 via NobleX25519Backend (pure JS, no native binding)
|
|
16
|
+
* - ML-KEM-768 via NobleMlKem768Backend (pure JS, FIPS 203 — added for the
|
|
17
|
+
* X25519MLKEM768 hybrid key-share group in @browsercore/crypto 0.2.5 /
|
|
18
|
+
* @browsercore/tls 0.4.13)
|
|
16
19
|
* - ECDH via node:crypto.ECDH
|
|
17
20
|
* - Signatures via node:crypto.createVerify
|
|
18
21
|
* - Random bytes via node:crypto.randomBytes
|
|
@@ -21,8 +24,9 @@
|
|
|
21
24
|
* because the package boundary moved the implementation to a higher layer.
|
|
22
25
|
*/
|
|
23
26
|
import { createCipheriv, createDecipheriv, createECDH, createHash, createHmac, createVerify, hkdfSync, randomBytes, } from "node:crypto";
|
|
24
|
-
import { NobleX25519Backend } from "@browsercore/crypto";
|
|
27
|
+
import { NobleMlKem768Backend, NobleX25519Backend } from "@browsercore/crypto";
|
|
25
28
|
const noble = new NobleX25519Backend();
|
|
29
|
+
const mlkem = new NobleMlKem768Backend();
|
|
26
30
|
/** Curve → node:crypto named curve + expected coordinate length. */
|
|
27
31
|
const ECDH_CURVE_PARAMS = {
|
|
28
32
|
secp256r1: { nodeCurve: "prime256v1", coordLen: 32 },
|
|
@@ -148,6 +152,22 @@ export const nodeCryptoProvider = {
|
|
|
148
152
|
x25519SharedSecret(secretKey, peerPublicKey) {
|
|
149
153
|
return noble.sharedSecret(secretKey, peerPublicKey);
|
|
150
154
|
},
|
|
155
|
+
mlkem768GenerateKeyPair() {
|
|
156
|
+
return mlkem.generateKeyPair();
|
|
157
|
+
},
|
|
158
|
+
mlkem768Decapsulate(secretKey, ciphertext) {
|
|
159
|
+
return mlkem.decapsulate(secretKey, ciphertext);
|
|
160
|
+
},
|
|
161
|
+
x25519MLKEM768SharedSecret(x25519SecretKey, x25519PeerPublicKey, mlkemSecretKey, mlkemCiphertext) {
|
|
162
|
+
// draft-ietf-tls-ecdhe-mlkem: mlkem_shared_secret || x25519_shared_secret
|
|
163
|
+
// (post-quantum first) — order verified against OpenSSL's X25519MLKEM768.
|
|
164
|
+
const mlkemShared = mlkem.decapsulate(mlkemSecretKey, mlkemCiphertext);
|
|
165
|
+
const x25519Shared = noble.sharedSecret(x25519SecretKey, x25519PeerPublicKey);
|
|
166
|
+
const hybrid = new Uint8Array(mlkemShared.length + x25519Shared.length);
|
|
167
|
+
hybrid.set(mlkemShared, 0);
|
|
168
|
+
hybrid.set(x25519Shared, mlkemShared.length);
|
|
169
|
+
return hybrid;
|
|
170
|
+
},
|
|
151
171
|
ecdhGenerateKeyPair(curve) {
|
|
152
172
|
const params = ECDH_CURVE_PARAMS[curve];
|
|
153
173
|
const ecdh = createECDH(params.nodeCurve);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-crypto-provider.js","sourceRoot":"","sources":["../../src/reference/node-crypto-provider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"node-crypto-provider.js","sourceRoot":"","sources":["../../src/reference/node-crypto-provider.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@browsercore/testing",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.8",
|
|
4
4
|
"description": "Protocol verification \u2014 RFC compliance tests, browser golden packet captures, integration tests, and benchmarking.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"coverage-md": "./bin/coverage-md.mjs"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@browsercore/dev": "
|
|
50
|
+
"@browsercore/dev": "0.2.0",
|
|
51
51
|
"@types/node": "^26.1.2",
|
|
52
52
|
"@vitest/coverage-v8": "^4.1.10",
|
|
53
53
|
"oxlint": "^1.76.0",
|
|
@@ -60,16 +60,14 @@
|
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
62
|
"@browsercore/compression": "0.2.1",
|
|
63
|
+
"@browsercore/contracts": "0.2.4",
|
|
63
64
|
"@browsercore/cookies": "0.2.0",
|
|
64
|
-
"@browsercore/crypto": "0.2.
|
|
65
|
-
"@browsercore/fetch": "0.2.
|
|
66
|
-
"@browsercore/http1": "0.2.
|
|
67
|
-
"@browsercore/http2": "0.2.
|
|
68
|
-
"@browsercore/profiles": "0.2.
|
|
69
|
-
"@browsercore/tls": "0.4.
|
|
70
|
-
"@browsercore/transport": "0.2.
|
|
71
|
-
},
|
|
72
|
-
"overrides": {
|
|
73
|
-
"@browsercore/tls": "0.4.9"
|
|
65
|
+
"@browsercore/crypto": "0.2.5",
|
|
66
|
+
"@browsercore/fetch": "0.2.16",
|
|
67
|
+
"@browsercore/http1": "0.2.2",
|
|
68
|
+
"@browsercore/http2": "0.2.9",
|
|
69
|
+
"@browsercore/profiles": "0.2.3",
|
|
70
|
+
"@browsercore/tls": "0.4.13",
|
|
71
|
+
"@browsercore/transport": "0.2.7"
|
|
74
72
|
}
|
|
75
73
|
}
|