This is page 2 of 2. Use http://codebase.md/0xfreysa/trusted-mcp-server?lines=false&page={x} to view the full context.
# Directory Structure
```
├── Dockerfile
├── gmail_mcp
│ ├── pyproject.toml
│ └── server.py
├── gvproxy.sh
├── Makefile
├── README.md
├── run-enclave.sh
├── setup.sh
├── start.sh
└── verifier
├── mcp
│ └── react-ts-webpack
│ ├── index.ejs
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── postcss.config.js
│ ├── README.md
│ ├── src
│ │ ├── app.css
│ │ ├── app.tsx
│ │ ├── components
│ │ │ ├── alert.tsx
│ │ │ ├── button.tsx
│ │ │ ├── shadcn.tsx
│ │ │ ├── verify-mcp.tsx
│ │ │ └── verify-tee.tsx
│ │ └── utils
│ │ ├── misc.ts
│ │ ├── requests.ts
│ │ └── worker.ts
│ ├── tailwind.config.js
│ ├── tsconfig.json
│ └── webpack.js
├── package.json
├── pnpm-lock.yaml
├── rust-toolchain
├── serve.json
├── src
│ ├── lib.ts
│ ├── types.ts
│ └── utils.ts
├── test
│ ├── assets
│ │ ├── notary.pem
│ │ ├── simple_proof_expected.json
│ │ └── simple_proof_redacted.json
│ ├── specs
│ │ ├── full-integration-swapi.spec.ts
│ │ └── simple-verify.spec.ts
│ ├── test.ejs
│ ├── testRunner.ts
│ ├── utils.ts
│ └── worker.ts
├── tsconfig.compile.json
├── tsconfig.json
├── utils
│ ├── build-tlsn-binaries.sh
│ └── check-wasm.sh
├── wasm
│ ├── pkg
│ │ ├── package.json
│ │ ├── README.md
│ │ ├── snippets
│ │ │ ├── wasm-bindgen-futures-a509390b5b548b61
│ │ │ │ └── src
│ │ │ │ └── task
│ │ │ │ └── worker.js
│ │ │ └── wasm-bindgen-rayon-3e04391371ad0a8e
│ │ │ └── src
│ │ │ ├── workerHelpers.js
│ │ │ └── workerHelpers.worker.js
│ │ ├── tlsn_wasm_bg.wasm
│ │ ├── tlsn_wasm_bg.wasm.d.ts
│ │ ├── tlsn_wasm.d.ts
│ │ └── tlsn_wasm.js
│ └── remote-attestation-verifier
│ ├── package.json
│ ├── remote_attestation_verifier_bg.wasm
│ ├── remote_attestation_verifier_bg.wasm.d.ts
│ ├── remote_attestation_verifier.d.ts
│ └── remote_attestation_verifier.js
├── webpack.build.config.js
└── webpack.web.dev.config.js
```
# Files
--------------------------------------------------------------------------------
/verifier/wasm/pkg/tlsn_wasm.js:
--------------------------------------------------------------------------------
```javascript
import { startWorkers } from './snippets/wasm-bindgen-rayon-3e04391371ad0a8e/src/workerHelpers.js';
let wasm;
const heap = new Array(128).fill(undefined);
heap.push(undefined, null, true, false);
function getObject(idx) { return heap[idx]; }
let heap_next = heap.length;
function dropObject(idx) {
if (idx < 132) return;
heap[idx] = heap_next;
heap_next = idx;
}
function takeObject(idx) {
const ret = getObject(idx);
dropObject(idx);
return ret;
}
function addHeapObject(obj) {
if (heap_next === heap.length) heap.push(heap.length + 1);
const idx = heap_next;
heap_next = heap[idx];
heap[idx] = obj;
return idx;
}
let WASM_VECTOR_LEN = 0;
let cachedUint8ArrayMemory0 = null;
function getUint8ArrayMemory0() {
if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.buffer !== wasm.memory.buffer) {
cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);
}
return cachedUint8ArrayMemory0;
}
const cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );
const encodeString = function (arg, view) {
const buf = cachedTextEncoder.encode(arg);
view.set(buf);
return {
read: arg.length,
written: buf.length
};
};
function passStringToWasm0(arg, malloc, realloc) {
if (realloc === undefined) {
const buf = cachedTextEncoder.encode(arg);
const ptr = malloc(buf.length, 1) >>> 0;
getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);
WASM_VECTOR_LEN = buf.length;
return ptr;
}
let len = arg.length;
let ptr = malloc(len, 1) >>> 0;
const mem = getUint8ArrayMemory0();
let offset = 0;
for (; offset < len; offset++) {
const code = arg.charCodeAt(offset);
if (code > 0x7F) break;
mem[ptr + offset] = code;
}
if (offset !== len) {
if (offset !== 0) {
arg = arg.slice(offset);
}
ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;
const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);
const ret = encodeString(arg, view);
offset += ret.written;
ptr = realloc(ptr, len, offset, 1) >>> 0;
}
WASM_VECTOR_LEN = offset;
return ptr;
}
function isLikeNone(x) {
return x === undefined || x === null;
}
let cachedDataViewMemory0 = null;
function getDataViewMemory0() {
if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer !== wasm.memory.buffer) {
cachedDataViewMemory0 = new DataView(wasm.memory.buffer);
}
return cachedDataViewMemory0;
}
const cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );
if (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };
function getStringFromWasm0(ptr, len) {
ptr = ptr >>> 0;
return cachedTextDecoder.decode(getUint8ArrayMemory0().slice(ptr, ptr + len));
}
function debugString(val) {
// primitive types
const type = typeof val;
if (type == 'number' || type == 'boolean' || val == null) {
return `${val}`;
}
if (type == 'string') {
return `"${val}"`;
}
if (type == 'symbol') {
const description = val.description;
if (description == null) {
return 'Symbol';
} else {
return `Symbol(${description})`;
}
}
if (type == 'function') {
const name = val.name;
if (typeof name == 'string' && name.length > 0) {
return `Function(${name})`;
} else {
return 'Function';
}
}
// objects
if (Array.isArray(val)) {
const length = val.length;
let debug = '[';
if (length > 0) {
debug += debugString(val[0]);
}
for(let i = 1; i < length; i++) {
debug += ', ' + debugString(val[i]);
}
debug += ']';
return debug;
}
// Test for built-in
const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val));
let className;
if (builtInMatches.length > 1) {
className = builtInMatches[1];
} else {
// Failed to match the standard '[object ClassName]'
return toString.call(val);
}
if (className == 'Object') {
// we're a user defined class or Object
// JSON.stringify avoids problems with cycles, and is generally much
// easier than looping through ownProperties of `val`.
try {
return 'Object(' + JSON.stringify(val) + ')';
} catch (_) {
return 'Object';
}
}
// errors
if (val instanceof Error) {
return `${val.name}: ${val.message}\n${val.stack}`;
}
// TODO we could test for more things here, like `Set`s and `Map`s.
return className;
}
const CLOSURE_DTORS = (typeof FinalizationRegistry === 'undefined')
? { register: () => {}, unregister: () => {} }
: new FinalizationRegistry(state => {
wasm.__wbindgen_export_3.get(state.dtor)(state.a, state.b)
});
function makeMutClosure(arg0, arg1, dtor, f) {
const state = { a: arg0, b: arg1, cnt: 1, dtor };
const real = (...args) => {
// First up with a closure we increment the internal reference
// count. This ensures that the Rust closure environment won't
// be deallocated while we're invoking it.
state.cnt++;
const a = state.a;
state.a = 0;
try {
return f(a, state.b, ...args);
} finally {
if (--state.cnt === 0) {
wasm.__wbindgen_export_3.get(state.dtor)(a, state.b);
CLOSURE_DTORS.unregister(state);
} else {
state.a = a;
}
}
};
real.original = state;
CLOSURE_DTORS.register(real, state, state);
return real;
}
function __wbg_adapter_54(arg0, arg1, arg2) {
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h2e88a253da201d98(arg0, arg1, addHeapObject(arg2));
}
function __wbg_adapter_57(arg0, arg1) {
wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h33fdce4698adb901(arg0, arg1);
}
function __wbg_adapter_60(arg0, arg1, arg2) {
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h5c02e8a12b71e39b(arg0, arg1, addHeapObject(arg2));
}
function __wbg_adapter_63(arg0, arg1, arg2) {
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h036d37595979be07(arg0, arg1, addHeapObject(arg2));
}
/**
* Initializes logging.
* @param {LoggingConfig | undefined} [config]
*/
export function init_logging(config) {
wasm.init_logging(isLikeNone(config) ? 0 : addHeapObject(config));
}
/**
* @param {string} attestation_document
* @param {string} nonce_expected
* @param {string} pcr_expected
* @param {bigint} timestamp
* @returns {boolean}
*/
export function verify_attestation_document(attestation_document, nonce_expected, pcr_expected, timestamp) {
const ptr0 = passStringToWasm0(attestation_document, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
const len0 = WASM_VECTOR_LEN;
const ptr1 = passStringToWasm0(nonce_expected, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
const len1 = WASM_VECTOR_LEN;
const ptr2 = passStringToWasm0(pcr_expected, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
const len2 = WASM_VECTOR_LEN;
const ret = wasm.verify_attestation_document(ptr0, len0, ptr1, len1, ptr2, len2, timestamp);
return ret !== 0;
}
/**
* @param {string} hex_application_data
* @param {string} hex_raw_signature
* @param {string} hex_raw_public_key
* @param {boolean} hash_appdata
* @returns {boolean}
*/
export function verify_attestation_signature(hex_application_data, hex_raw_signature, hex_raw_public_key, hash_appdata) {
const ptr0 = passStringToWasm0(hex_application_data, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
const len0 = WASM_VECTOR_LEN;
const ptr1 = passStringToWasm0(hex_raw_signature, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
const len1 = WASM_VECTOR_LEN;
const ptr2 = passStringToWasm0(hex_raw_public_key, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
const len2 = WASM_VECTOR_LEN;
const ret = wasm.verify_attestation_signature(ptr0, len0, ptr1, len1, ptr2, len2, hash_appdata);
return ret !== 0;
}
function getArrayU8FromWasm0(ptr, len) {
ptr = ptr >>> 0;
return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
}
function passArray8ToWasm0(arg, malloc) {
const ptr = malloc(arg.length * 1, 1) >>> 0;
getUint8ArrayMemory0().set(arg, ptr / 1);
WASM_VECTOR_LEN = arg.length;
return ptr;
}
function handleError(f, args) {
try {
return f.apply(this, args);
} catch (e) {
wasm.__wbindgen_exn_store(addHeapObject(e));
}
}
function __wbg_adapter_230(arg0, arg1, arg2, arg3) {
wasm.wasm_bindgen__convert__closures__invoke2_mut__h134b145bfce1dc02(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
}
/**
* @param {number} num_threads
* @returns {Promise<any>}
*/
export function initThreadPool(num_threads) {
const ret = wasm.initThreadPool(num_threads);
return takeObject(ret);
}
/**
* @param {number} receiver
*/
export function wbg_rayon_start_worker(receiver) {
wasm.wbg_rayon_start_worker(receiver);
}
const ProverFinalization = (typeof FinalizationRegistry === 'undefined')
? { register: () => {}, unregister: () => {} }
: new FinalizationRegistry(ptr => wasm.__wbg_prover_free(ptr >>> 0, 1));
/**
*/
export class Prover {
__destroy_into_raw() {
const ptr = this.__wbg_ptr;
this.__wbg_ptr = 0;
ProverFinalization.unregister(this);
return ptr;
}
free() {
const ptr = this.__destroy_into_raw();
wasm.__wbg_prover_free(ptr, 0);
}
/**
* @param {ProverConfig} config
*/
constructor(config) {
const ret = wasm.prover_new(addHeapObject(config));
this.__wbg_ptr = ret >>> 0;
ProverFinalization.register(this, this.__wbg_ptr, this);
return this;
}
/**
* Set up the prover.
*
* This performs all Tee setup prior to establishing the connection to the
* application server.
* @param {string} verifier_url
* @returns {Promise<void>}
*/
setup(verifier_url) {
const ptr0 = passStringToWasm0(verifier_url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
const len0 = WASM_VECTOR_LEN;
const ret = wasm.prover_setup(this.__wbg_ptr, ptr0, len0);
return takeObject(ret);
}
/**
* Send the HTTP request to the server.
* @param {string} ws_proxy_url
* @param {HttpRequest} request
* @returns {Promise<HttpResponse>}
*/
send_request(ws_proxy_url, request) {
const ptr0 = passStringToWasm0(ws_proxy_url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
const len0 = WASM_VECTOR_LEN;
const ret = wasm.prover_send_request(this.__wbg_ptr, ptr0, len0, addHeapObject(request));
return takeObject(ret);
}
/**
* Runs the notarization protocol.
* @returns {Promise<string>}
*/
notarize() {
const ret = wasm.prover_notarize(this.__wbg_ptr);
return takeObject(ret);
}
}
const SignedSessionFinalization = (typeof FinalizationRegistry === 'undefined')
? { register: () => {}, unregister: () => {} }
: new FinalizationRegistry(ptr => wasm.__wbg_signedsession_free(ptr >>> 0, 1));
/**
*/
export class SignedSession {
static __wrap(ptr) {
ptr = ptr >>> 0;
const obj = Object.create(SignedSession.prototype);
obj.__wbg_ptr = ptr;
SignedSessionFinalization.register(obj, obj.__wbg_ptr, obj);
return obj;
}
__destroy_into_raw() {
const ptr = this.__wbg_ptr;
this.__wbg_ptr = 0;
SignedSessionFinalization.unregister(this);
return ptr;
}
free() {
const ptr = this.__destroy_into_raw();
wasm.__wbg_signedsession_free(ptr, 0);
}
/**
* Serializes to a byte array.
* @returns {Uint8Array}
*/
serialize() {
try {
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
wasm.signedsession_serialize(retptr, this.__wbg_ptr);
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
var v1 = getArrayU8FromWasm0(r0, r1).slice();
wasm.__wbindgen_free(r0, r1 * 1, 1);
return v1;
} finally {
wasm.__wbindgen_add_to_stack_pointer(16);
}
}
/**
* Deserializes from a byte array.
* @param {Uint8Array} bytes
* @returns {SignedSession}
*/
static deserialize(bytes) {
try {
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
const len0 = WASM_VECTOR_LEN;
wasm.signedsession_deserialize(retptr, ptr0, len0);
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
if (r2) {
throw takeObject(r1);
}
return SignedSession.__wrap(r0);
} finally {
wasm.__wbindgen_add_to_stack_pointer(16);
}
}
}
const VerifierFinalization = (typeof FinalizationRegistry === 'undefined')
? { register: () => {}, unregister: () => {} }
: new FinalizationRegistry(ptr => wasm.__wbg_verifier_free(ptr >>> 0, 1));
/**
*/
export class Verifier {
__destroy_into_raw() {
const ptr = this.__wbg_ptr;
this.__wbg_ptr = 0;
VerifierFinalization.unregister(this);
return ptr;
}
free() {
const ptr = this.__destroy_into_raw();
wasm.__wbg_verifier_free(ptr, 0);
}
/**
* @param {VerifierConfig} config
*/
constructor(config) {
const ret = wasm.verifier_new(addHeapObject(config));
this.__wbg_ptr = ret >>> 0;
VerifierFinalization.register(this, this.__wbg_ptr, this);
return this;
}
/**
* Connect to the prover.
* @param {string} prover_url
* @returns {Promise<void>}
*/
connect(prover_url) {
const ptr0 = passStringToWasm0(prover_url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
const len0 = WASM_VECTOR_LEN;
const ret = wasm.verifier_connect(this.__wbg_ptr, ptr0, len0);
return takeObject(ret);
}
/**
* Verifies the connection and finalizes the protocol.
* @returns {Promise<void>}
*/
verify() {
const ret = wasm.verifier_verify(this.__wbg_ptr);
return takeObject(ret);
}
}
const wbg_rayon_PoolBuilderFinalization = (typeof FinalizationRegistry === 'undefined')
? { register: () => {}, unregister: () => {} }
: new FinalizationRegistry(ptr => wasm.__wbg_wbg_rayon_poolbuilder_free(ptr >>> 0, 1));
/**
*/
export class wbg_rayon_PoolBuilder {
static __wrap(ptr) {
ptr = ptr >>> 0;
const obj = Object.create(wbg_rayon_PoolBuilder.prototype);
obj.__wbg_ptr = ptr;
wbg_rayon_PoolBuilderFinalization.register(obj, obj.__wbg_ptr, obj);
return obj;
}
__destroy_into_raw() {
const ptr = this.__wbg_ptr;
this.__wbg_ptr = 0;
wbg_rayon_PoolBuilderFinalization.unregister(this);
return ptr;
}
free() {
const ptr = this.__destroy_into_raw();
wasm.__wbg_wbg_rayon_poolbuilder_free(ptr, 0);
}
/**
* @returns {number}
*/
numThreads() {
const ret = wasm.wbg_rayon_poolbuilder_numThreads(this.__wbg_ptr);
return ret >>> 0;
}
/**
* @returns {number}
*/
receiver() {
const ret = wasm.wbg_rayon_poolbuilder_receiver(this.__wbg_ptr);
return ret >>> 0;
}
/**
*/
build() {
wasm.wbg_rayon_poolbuilder_build(this.__wbg_ptr);
}
}
async function __wbg_load(module, imports) {
if (typeof Response === 'function' && module instanceof Response) {
if (typeof WebAssembly.instantiateStreaming === 'function') {
try {
return await WebAssembly.instantiateStreaming(module, imports);
} catch (e) {
if (module.headers.get('Content-Type') != 'application/wasm') {
console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e);
} else {
throw e;
}
}
}
const bytes = await module.arrayBuffer();
return await WebAssembly.instantiate(bytes, imports);
} else {
const instance = await WebAssembly.instantiate(module, imports);
if (instance instanceof WebAssembly.Instance) {
return { instance, module };
} else {
return instance;
}
}
}
function __wbg_get_imports() {
const imports = {};
imports.wbg = {};
imports.wbg.__wbindgen_object_drop_ref = function(arg0) {
takeObject(arg0);
};
imports.wbg.__wbindgen_object_clone_ref = function(arg0) {
const ret = getObject(arg0);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_cb_drop = function(arg0) {
const obj = takeObject(arg0).original;
if (obj.cnt-- == 1) {
obj.a = 0;
return true;
}
const ret = false;
return ret;
};
imports.wbg.__wbindgen_string_get = function(arg0, arg1) {
const obj = getObject(arg1);
const ret = typeof(obj) === 'string' ? obj : undefined;
var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
var len1 = WASM_VECTOR_LEN;
getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
};
imports.wbg.__wbindgen_error_new = function(arg0, arg1) {
const ret = new Error(getStringFromWasm0(arg0, arg1));
return addHeapObject(ret);
};
imports.wbg.__wbindgen_string_new = function(arg0, arg1) {
const ret = getStringFromWasm0(arg0, arg1);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_boolean_get = function(arg0) {
const v = getObject(arg0);
const ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2;
return ret;
};
imports.wbg.__wbindgen_is_bigint = function(arg0) {
const ret = typeof(getObject(arg0)) === 'bigint';
return ret;
};
imports.wbg.__wbindgen_number_get = function(arg0, arg1) {
const obj = getObject(arg1);
const ret = typeof(obj) === 'number' ? obj : undefined;
getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);
getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);
};
imports.wbg.__wbindgen_is_object = function(arg0) {
const val = getObject(arg0);
const ret = typeof(val) === 'object' && val !== null;
return ret;
};
imports.wbg.__wbindgen_in = function(arg0, arg1) {
const ret = getObject(arg0) in getObject(arg1);
return ret;
};
imports.wbg.__wbindgen_bigint_from_i64 = function(arg0) {
const ret = arg0;
return addHeapObject(ret);
};
imports.wbg.__wbindgen_jsval_eq = function(arg0, arg1) {
const ret = getObject(arg0) === getObject(arg1);
return ret;
};
imports.wbg.__wbindgen_bigint_from_u64 = function(arg0) {
const ret = BigInt.asUintN(64, arg0);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_is_string = function(arg0) {
const ret = typeof(getObject(arg0)) === 'string';
return ret;
};
imports.wbg.__wbindgen_is_undefined = function(arg0) {
const ret = getObject(arg0) === undefined;
return ret;
};
imports.wbg.__wbg_new_abda76e883ba8a5f = function() {
const ret = new Error();
return addHeapObject(ret);
};
imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) {
const ret = getObject(arg1).stack;
const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
const len1 = WASM_VECTOR_LEN;
getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
};
imports.wbg.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) {
let deferred0_0;
let deferred0_1;
try {
deferred0_0 = arg0;
deferred0_1 = arg1;
console.error(getStringFromWasm0(arg0, arg1));
} finally {
wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);
}
};
imports.wbg.__wbg_performance_a1b8bde2ee512264 = function(arg0) {
const ret = getObject(arg0).performance;
return addHeapObject(ret);
};
imports.wbg.__wbg_timeOrigin_5c8b9e35719de799 = function(arg0) {
const ret = getObject(arg0).timeOrigin;
return ret;
};
imports.wbg.__wbg_now_abd80e969af37148 = function(arg0) {
const ret = getObject(arg0).now();
return ret;
};
imports.wbg.__wbg_waitAsync_cd62c81646382b45 = function() {
const ret = Atomics.waitAsync;
return addHeapObject(ret);
};
imports.wbg.__wbg_waitAsync_3ed212d5e9450545 = function(arg0, arg1, arg2) {
const ret = Atomics.waitAsync(getObject(arg0), arg1 >>> 0, arg2);
return addHeapObject(ret);
};
imports.wbg.__wbg_async_49a1efd7e3e4bd73 = function(arg0) {
const ret = getObject(arg0).async;
return ret;
};
imports.wbg.__wbg_value_96cb463707ad2f31 = function(arg0) {
const ret = getObject(arg0).value;
return addHeapObject(ret);
};
imports.wbg.__wbindgen_link_8b58b27602368eaa = function(arg0) {
const val = `onmessage = function (ev) {
let [ia, index, value] = ev.data;
ia = new Int32Array(ia.buffer);
let result = Atomics.wait(ia, index, value);
postMessage(result);
};
`;
const ret = typeof URL.createObjectURL === 'undefined' ? "data:application/javascript," + encodeURIComponent(val) : URL.createObjectURL(new Blob([val], { type: "text/javascript" }));
const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
const len1 = WASM_VECTOR_LEN;
getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
};
imports.wbg.__wbindgen_number_new = function(arg0) {
const ret = arg0;
return addHeapObject(ret);
};
imports.wbg.__wbg_queueMicrotask_12a30234db4045d3 = function(arg0) {
queueMicrotask(getObject(arg0));
};
imports.wbg.__wbg_queueMicrotask_48421b3cc9052b68 = function(arg0) {
const ret = getObject(arg0).queueMicrotask;
return addHeapObject(ret);
};
imports.wbg.__wbindgen_is_function = function(arg0) {
const ret = typeof(getObject(arg0)) === 'function';
return ret;
};
imports.wbg.__wbg_instanceof_Window_5012736c80a01584 = function(arg0) {
let result;
try {
result = getObject(arg0) instanceof Window;
} catch (_) {
result = false;
}
const ret = result;
return ret;
};
imports.wbg.__wbg_instanceof_Blob_a959e04f44007d16 = function(arg0) {
let result;
try {
result = getObject(arg0) instanceof Blob;
} catch (_) {
result = false;
}
const ret = result;
return ret;
};
imports.wbg.__wbg_setonmessage_7cee8e224acfa056 = function(arg0, arg1) {
getObject(arg0).onmessage = getObject(arg1);
};
imports.wbg.__wbg_new_25d9d4e2932d816f = function() { return handleError(function (arg0, arg1) {
const ret = new Worker(getStringFromWasm0(arg0, arg1));
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbg_postMessage_37faac1bc005e5c0 = function() { return handleError(function (arg0, arg1) {
getObject(arg0).postMessage(getObject(arg1));
}, arguments) };
imports.wbg.__wbg_debug_5a33c41aeac15ee6 = function(arg0) {
console.debug(getObject(arg0));
};
imports.wbg.__wbg_debug_d7780810b3a93632 = function(arg0, arg1, arg2, arg3) {
console.debug(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));
};
imports.wbg.__wbg_error_09480e4aadca50ad = function(arg0) {
console.error(getObject(arg0));
};
imports.wbg.__wbg_error_f02f3d66b42c6251 = function(arg0, arg1, arg2, arg3) {
console.error(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));
};
imports.wbg.__wbg_info_c261acb2deacd903 = function(arg0) {
console.info(getObject(arg0));
};
imports.wbg.__wbg_info_123d8c35ec14384a = function(arg0, arg1, arg2, arg3) {
console.info(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));
};
imports.wbg.__wbg_warn_2b3adb99ce26c314 = function(arg0) {
console.warn(getObject(arg0));
};
imports.wbg.__wbg_warn_60924fcf321399f0 = function(arg0, arg1, arg2, arg3) {
console.warn(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));
};
imports.wbg.__wbg_url_b978bb23c341ca85 = function(arg0, arg1) {
const ret = getObject(arg1).url;
const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
const len1 = WASM_VECTOR_LEN;
getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
};
imports.wbg.__wbg_readyState_7237e2b1adac03a6 = function(arg0) {
const ret = getObject(arg0).readyState;
return ret;
};
imports.wbg.__wbg_setonopen_7e770c87269cae90 = function(arg0, arg1) {
getObject(arg0).onopen = getObject(arg1);
};
imports.wbg.__wbg_setonerror_5ec4625df3060159 = function(arg0, arg1) {
getObject(arg0).onerror = getObject(arg1);
};
imports.wbg.__wbg_setonclose_40f935717ad6ffcd = function(arg0, arg1) {
getObject(arg0).onclose = getObject(arg1);
};
imports.wbg.__wbg_setonmessage_b670c12ea34acd8b = function(arg0, arg1) {
getObject(arg0).onmessage = getObject(arg1);
};
imports.wbg.__wbg_setbinaryType_d164a0be4c212c9c = function(arg0, arg1) {
getObject(arg0).binaryType = ["blob","arraybuffer",][arg1];
};
imports.wbg.__wbg_new_0bf4a5b0632517ed = function() { return handleError(function (arg0, arg1) {
const ret = new WebSocket(getStringFromWasm0(arg0, arg1));
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbg_newwithstrsequence_95750c7542ecfdb3 = function() { return handleError(function (arg0, arg1, arg2) {
const ret = new WebSocket(getStringFromWasm0(arg0, arg1), getObject(arg2));
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbg_close_99bb12a22f16f79c = function() { return handleError(function (arg0) {
getObject(arg0).close();
}, arguments) };
imports.wbg.__wbg_send_82b52e2f9f8946d9 = function() { return handleError(function (arg0, arg1, arg2) {
getObject(arg0).send(getStringFromWasm0(arg1, arg2));
}, arguments) };
imports.wbg.__wbg_send_3ba8a16c3493b51b = function() { return handleError(function (arg0, arg1) {
getObject(arg0).send(getObject(arg1));
}, arguments) };
imports.wbg.__wbg_wasClean_e83dfad67198c1c4 = function(arg0) {
const ret = getObject(arg0).wasClean;
return ret;
};
imports.wbg.__wbg_code_eae09136895f8ffa = function(arg0) {
const ret = getObject(arg0).code;
return ret;
};
imports.wbg.__wbg_reason_8a32e6ed703d6382 = function(arg0, arg1) {
const ret = getObject(arg1).reason;
const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
const len1 = WASM_VECTOR_LEN;
getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
};
imports.wbg.__wbg_code_4a4b2516783729c7 = function(arg0) {
const ret = getObject(arg0).code;
return ret;
};
imports.wbg.__wbg_data_5c47a6985fefc490 = function(arg0) {
const ret = getObject(arg0).data;
return addHeapObject(ret);
};
imports.wbg.__wbg_crypto_1d1f22824a6a080c = function(arg0) {
const ret = getObject(arg0).crypto;
return addHeapObject(ret);
};
imports.wbg.__wbg_process_4a72847cc503995b = function(arg0) {
const ret = getObject(arg0).process;
return addHeapObject(ret);
};
imports.wbg.__wbg_versions_f686565e586dd935 = function(arg0) {
const ret = getObject(arg0).versions;
return addHeapObject(ret);
};
imports.wbg.__wbg_node_104a2ff8d6ea03a2 = function(arg0) {
const ret = getObject(arg0).node;
return addHeapObject(ret);
};
imports.wbg.__wbg_require_cca90b1a94a0255b = function() { return handleError(function () {
const ret = module.require;
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbg_msCrypto_eb05e62b530a1508 = function(arg0) {
const ret = getObject(arg0).msCrypto;
return addHeapObject(ret);
};
imports.wbg.__wbg_randomFillSync_5c9c955aa56b6049 = function() { return handleError(function (arg0, arg1) {
getObject(arg0).randomFillSync(takeObject(arg1));
}, arguments) };
imports.wbg.__wbg_getRandomValues_3aa56aa6edec874c = function() { return handleError(function (arg0, arg1) {
getObject(arg0).getRandomValues(getObject(arg1));
}, arguments) };
imports.wbg.__wbindgen_jsval_loose_eq = function(arg0, arg1) {
const ret = getObject(arg0) == getObject(arg1);
return ret;
};
imports.wbg.__wbindgen_as_number = function(arg0) {
const ret = +getObject(arg0);
return ret;
};
imports.wbg.__wbg_String_b9412f8799faab3e = function(arg0, arg1) {
const ret = String(getObject(arg1));
const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
const len1 = WASM_VECTOR_LEN;
getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
};
imports.wbg.__wbg_getwithrefkey_edc2c8960f0f1191 = function(arg0, arg1) {
const ret = getObject(arg0)[getObject(arg1)];
return addHeapObject(ret);
};
imports.wbg.__wbg_set_f975102236d3c502 = function(arg0, arg1, arg2) {
getObject(arg0)[takeObject(arg1)] = takeObject(arg2);
};
imports.wbg.__wbg_get_3baa728f9d58d3f6 = function(arg0, arg1) {
const ret = getObject(arg0)[arg1 >>> 0];
return addHeapObject(ret);
};
imports.wbg.__wbg_length_ae22078168b726f5 = function(arg0) {
const ret = getObject(arg0).length;
return ret;
};
imports.wbg.__wbg_new_a220cf903aa02ca2 = function() {
const ret = new Array();
return addHeapObject(ret);
};
imports.wbg.__wbg_newnoargs_76313bd6ff35d0f2 = function(arg0, arg1) {
const ret = new Function(getStringFromWasm0(arg0, arg1));
return addHeapObject(ret);
};
imports.wbg.__wbg_next_de3e9db4440638b2 = function(arg0) {
const ret = getObject(arg0).next;
return addHeapObject(ret);
};
imports.wbg.__wbg_next_f9cb570345655b9a = function() { return handleError(function (arg0) {
const ret = getObject(arg0).next();
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbg_done_bfda7aa8f252b39f = function(arg0) {
const ret = getObject(arg0).done;
return ret;
};
imports.wbg.__wbg_value_6d39332ab4788d86 = function(arg0) {
const ret = getObject(arg0).value;
return addHeapObject(ret);
};
imports.wbg.__wbg_iterator_888179a48810a9fe = function() {
const ret = Symbol.iterator;
return addHeapObject(ret);
};
imports.wbg.__wbg_get_224d16597dbbfd96 = function() { return handleError(function (arg0, arg1) {
const ret = Reflect.get(getObject(arg0), getObject(arg1));
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbg_call_1084a111329e68ce = function() { return handleError(function (arg0, arg1) {
const ret = getObject(arg0).call(getObject(arg1));
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbg_new_525245e2b9901204 = function() {
const ret = new Object();
return addHeapObject(ret);
};
imports.wbg.__wbg_self_3093d5d1f7bcb682 = function() { return handleError(function () {
const ret = self.self;
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbg_window_3bcfc4d31bc012f8 = function() { return handleError(function () {
const ret = window.window;
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbg_globalThis_86b222e13bdf32ed = function() { return handleError(function () {
const ret = globalThis.globalThis;
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbg_global_e5a3fe56f8be9485 = function() { return handleError(function () {
const ret = global.global;
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbg_set_673dda6c73d19609 = function(arg0, arg1, arg2) {
getObject(arg0)[arg1 >>> 0] = takeObject(arg2);
};
imports.wbg.__wbg_isArray_8364a5371e9737d8 = function(arg0) {
const ret = Array.isArray(getObject(arg0));
return ret;
};
imports.wbg.__wbg_of_61f336d7eeabfca8 = function(arg0, arg1, arg2) {
const ret = Array.of(getObject(arg0), getObject(arg1), getObject(arg2));
return addHeapObject(ret);
};
imports.wbg.__wbg_push_37c89022f34c01ca = function(arg0, arg1) {
const ret = getObject(arg0).push(getObject(arg1));
return ret;
};
imports.wbg.__wbg_instanceof_ArrayBuffer_61dfc3198373c902 = function(arg0) {
let result;
try {
result = getObject(arg0) instanceof ArrayBuffer;
} catch (_) {
result = false;
}
const ret = result;
return ret;
};
imports.wbg.__wbg_new_7695fb2ba274b094 = function(arg0) {
const ret = new ArrayBuffer(arg0 >>> 0);
return addHeapObject(ret);
};
imports.wbg.__wbg_call_89af060b4e1523f2 = function() { return handleError(function (arg0, arg1, arg2) {
const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));
return addHeapObject(ret);
}, arguments) };
imports.wbg.__wbg_instanceof_Map_763ce0e95960d55e = function(arg0) {
let result;
try {
result = getObject(arg0) instanceof Map;
} catch (_) {
result = false;
}
const ret = result;
return ret;
};
imports.wbg.__wbg_isSafeInteger_7f1ed56200d90674 = function(arg0) {
const ret = Number.isSafeInteger(getObject(arg0));
return ret;
};
imports.wbg.__wbg_now_b7a162010a9e75b4 = function() {
const ret = Date.now();
return ret;
};
imports.wbg.__wbg_entries_7a0e06255456ebcd = function(arg0) {
const ret = Object.entries(getObject(arg0));
return addHeapObject(ret);
};
imports.wbg.__wbg_new_b85e72ed1bfd57f9 = function(arg0, arg1) {
try {
var state0 = {a: arg0, b: arg1};
var cb0 = (arg0, arg1) => {
const a = state0.a;
state0.a = 0;
try {
return __wbg_adapter_230(a, state0.b, arg0, arg1);
} finally {
state0.a = a;
}
};
const ret = new Promise(cb0);
return addHeapObject(ret);
} finally {
state0.a = state0.b = 0;
}
};
imports.wbg.__wbg_resolve_570458cb99d56a43 = function(arg0) {
const ret = Promise.resolve(getObject(arg0));
return addHeapObject(ret);
};
imports.wbg.__wbg_then_95e6edc0f89b73b1 = function(arg0, arg1) {
const ret = getObject(arg0).then(getObject(arg1));
return addHeapObject(ret);
};
imports.wbg.__wbg_buffer_b7b08af79b0b0974 = function(arg0) {
const ret = getObject(arg0).buffer;
return addHeapObject(ret);
};
imports.wbg.__wbg_new_a0719a520adfdb99 = function(arg0) {
const ret = new Int32Array(getObject(arg0));
return addHeapObject(ret);
};
imports.wbg.__wbg_newwithbyteoffsetandlength_8a2cb9ca96b27ec9 = function(arg0, arg1, arg2) {
const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);
return addHeapObject(ret);
};
imports.wbg.__wbg_new_ea1883e1e5e86686 = function(arg0) {
const ret = new Uint8Array(getObject(arg0));
return addHeapObject(ret);
};
imports.wbg.__wbg_set_d1e79e2388520f18 = function(arg0, arg1, arg2) {
getObject(arg0).set(getObject(arg1), arg2 >>> 0);
};
imports.wbg.__wbg_length_8339fcf5d8ecd12e = function(arg0) {
const ret = getObject(arg0).length;
return ret;
};
imports.wbg.__wbg_instanceof_Uint8Array_247a91427532499e = function(arg0) {
let result;
try {
result = getObject(arg0) instanceof Uint8Array;
} catch (_) {
result = false;
}
const ret = result;
return ret;
};
imports.wbg.__wbg_newwithlength_ec548f448387c968 = function(arg0) {
const ret = new Uint8Array(arg0 >>> 0);
return addHeapObject(ret);
};
imports.wbg.__wbg_subarray_7c2e3576afe181d1 = function(arg0, arg1, arg2) {
const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_bigint_get_as_i64 = function(arg0, arg1) {
const v = getObject(arg1);
const ret = typeof(v) === 'bigint' ? v : undefined;
getDataViewMemory0().setBigInt64(arg0 + 8 * 1, isLikeNone(ret) ? BigInt(0) : ret, true);
getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);
};
imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {
const ret = debugString(getObject(arg1));
const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
const len1 = WASM_VECTOR_LEN;
getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
};
imports.wbg.__wbindgen_throw = function(arg0, arg1) {
throw new Error(getStringFromWasm0(arg0, arg1));
};
imports.wbg.__wbindgen_rethrow = function(arg0) {
throw takeObject(arg0);
};
imports.wbg.__wbindgen_module = function() {
const ret = __wbg_init.__wbindgen_wasm_module;
return addHeapObject(ret);
};
imports.wbg.__wbindgen_memory = function() {
const ret = wasm.memory;
return addHeapObject(ret);
};
imports.wbg.__wbg_startWorkers_2ee336a9694dda13 = function(arg0, arg1, arg2) {
const ret = startWorkers(takeObject(arg0), takeObject(arg1), wbg_rayon_PoolBuilder.__wrap(arg2));
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper688 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 193, __wbg_adapter_54);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper690 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 193, __wbg_adapter_57);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper4180 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 2605, __wbg_adapter_60);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper4538 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 2773, __wbg_adapter_63);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper4539 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 2773, __wbg_adapter_63);
return addHeapObject(ret);
};
return imports;
}
function __wbg_init_memory(imports, memory) {
imports.wbg.memory = memory || new WebAssembly.Memory({initial:25,maximum:16384,shared:true});
}
function __wbg_finalize_init(instance, module, thread_stack_size) {
wasm = instance.exports;
__wbg_init.__wbindgen_wasm_module = module;
cachedDataViewMemory0 = null;
cachedUint8ArrayMemory0 = null;
if (typeof thread_stack_size !== 'undefined' && (typeof thread_stack_size !== 'number' || thread_stack_size === 0 || thread_stack_size % 65536 !== 0)) { throw 'invalid stack size' }
wasm.__wbindgen_start(thread_stack_size);
return wasm;
}
function initSync(module, memory) {
if (wasm !== undefined) return wasm;
let thread_stack_size
if (typeof module !== 'undefined' && Object.getPrototypeOf(module) === Object.prototype)
({module, memory, thread_stack_size} = module)
else
console.warn('using deprecated parameters for `initSync()`; pass a single object instead')
const imports = __wbg_get_imports();
__wbg_init_memory(imports, memory);
if (!(module instanceof WebAssembly.Module)) {
module = new WebAssembly.Module(module);
}
const instance = new WebAssembly.Instance(module, imports);
return __wbg_finalize_init(instance, module, thread_stack_size);
}
async function __wbg_init(module_or_path, memory) {
if (wasm !== undefined) return wasm;
let thread_stack_size
if (typeof module_or_path !== 'undefined' && Object.getPrototypeOf(module_or_path) === Object.prototype)
({module_or_path, memory, thread_stack_size} = module_or_path)
else
console.warn('using deprecated parameters for the initialization function; pass a single object instead')
if (typeof module_or_path === 'undefined') {
module_or_path = new URL('tlsn_wasm_bg.wasm', import.meta.url);
}
const imports = __wbg_get_imports();
if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {
module_or_path = fetch(module_or_path);
}
__wbg_init_memory(imports, memory);
const { instance, module } = await __wbg_load(await module_or_path, imports);
return __wbg_finalize_init(instance, module, thread_stack_size);
}
export { initSync };
export default __wbg_init;
```
--------------------------------------------------------------------------------
/verifier/test/assets/simple_proof_redacted.json:
--------------------------------------------------------------------------------
```json
{
"session": {
"header": {
"encoder_seed": [
66,
166,
41,
25,
85,
103,
87,
137,
151,
166,
129,
11,
191,
158,
114,
111,
241,
196,
98,
44,
88,
38,
211,
247,
53,
237,
63,
115,
236,
29,
17,
216
],
"merkle_root": [
16,
59,
142,
197,
66,
119,
156,
28,
59,
6,
171,
96,
87,
159,
171,
200,
109,
251,
53,
135,
238,
122,
227,
165,
226,
86,
227,
60,
120,
245,
210,
243
],
"sent_len": 211,
"recv_len": 1610,
"handshake_summary": {
"time": 1708595467,
"server_public_key": {
"group": "secp256r1",
"key": [
4,
163,
255,
34,
100,
180,
234,
4,
204,
206,
213,
0,
53,
237,
12,
236,
163,
233,
190,
228,
117,
138,
60,
223,
134,
85,
183,
101,
185,
59,
58,
216,
1,
128,
231,
200,
2,
78,
91,
244,
75,
46,
66,
184,
232,
150,
152,
98,
197,
70,
65,
183,
168,
241,
31,
14,
254,
148,
63,
173,
86,
101,
231,
197,
2
]
},
"handshake_commitment": [
186,
133,
133,
214,
156,
180,
230,
161,
89,
226,
180,
225,
107,
17,
178,
21,
104,
174,
118,
31,
88,
169,
247,
58,
18,
244,
129,
127,
17,
93,
7,
15
]
}
},
"signature": {
"P256": "F2853873B89CC39EA7F43A6D016CC38E271E3D17EA00BC18910C63F34A02FF4CE4A1EC510728DB875968B4842BECEF822F1B1E951E96938B4D4E508CA5FA09A4"
},
"session_info": {
"server_name": {
"Dns": "example.com"
},
"handshake_decommitment": {
"nonce": [
255,
115,
38,
124,
155,
89,
111,
189,
178,
57,
91,
143,
1,
178,
91,
111,
209,
101,
147,
40,
222,
131,
154,
147,
27,
207,
42,
60,
80,
169,
106,
175
],
"data": {
"server_cert_details": {
"cert_chain": [
[
48,
130,
7,
110,
48,
130,
6,
86,
160,
3,
2,
1,
2,
2,
16,
7,
91,
206,
243,
6,
137,
200,
173,
223,
19,
229,
26,
244,
175,
225,
135,
48,
13,
6,
9,
42,
134,
72,
134,
247,
13,
1,
1,
11,
5,
0,
48,
89,
49,
11,
48,
9,
6,
3,
85,
4,
6,
19,
2,
85,
83,
49,
21,
48,
19,
6,
3,
85,
4,
10,
19,
12,
68,
105,
103,
105,
67,
101,
114,
116,
32,
73,
110,
99,
49,
51,
48,
49,
6,
3,
85,
4,
3,
19,
42,
68,
105,
103,
105,
67,
101,
114,
116,
32,
71,
108,
111,
98,
97,
108,
32,
71,
50,
32,
84,
76,
83,
32,
82,
83,
65,
32,
83,
72,
65,
50,
53,
54,
32,
50,
48,
50,
48,
32,
67,
65,
49,
48,
30,
23,
13,
50,
52,
48,
49,
51,
48,
48,
48,
48,
48,
48,
48,
90,
23,
13,
50,
53,
48,
51,
48,
49,
50,
51,
53,
57,
53,
57,
90,
48,
129,
150,
49,
11,
48,
9,
6,
3,
85,
4,
6,
19,
2,
85,
83,
49,
19,
48,
17,
6,
3,
85,
4,
8,
19,
10,
67,
97,
108,
105,
102,
111,
114,
110,
105,
97,
49,
20,
48,
18,
6,
3,
85,
4,
7,
19,
11,
76,
111,
115,
32,
65,
110,
103,
101,
108,
101,
115,
49,
66,
48,
64,
6,
3,
85,
4,
10,
12,
57,
73,
110,
116,
101,
114,
110,
101,
116,
194,
160,
67,
111,
114,
112,
111,
114,
97,
116,
105,
111,
110,
194,
160,
102,
111,
114,
194,
160,
65,
115,
115,
105,
103,
110,
101,
100,
194,
160,
78,
97,
109,
101,
115,
194,
160,
97,
110,
100,
194,
160,
78,
117,
109,
98,
101,
114,
115,
49,
24,
48,
22,
6,
3,
85,
4,
3,
19,
15,
119,
119,
119,
46,
101,
120,
97,
109,
112,
108,
101,
46,
111,
114,
103,
48,
130,
1,
34,
48,
13,
6,
9,
42,
134,
72,
134,
247,
13,
1,
1,
1,
5,
0,
3,
130,
1,
15,
0,
48,
130,
1,
10,
2,
130,
1,
1,
0,
134,
133,
15,
187,
14,
249,
202,
95,
217,
245,
224,
10,
50,
44,
51,
217,
170,
14,
7,
41,
168,
47,
8,
173,
120,
189,
194,
6,
191,
247,
45,
43,
166,
167,
39,
61,
83,
166,
76,
195,
75,
178,
39,
119,
32,
214,
193,
84,
73,
184,
8,
218,
249,
112,
169,
97,
246,
178,
73,
157,
105,
87,
218,
251,
109,
36,
52,
114,
46,
71,
240,
4,
63,
157,
177,
91,
226,
188,
102,
49,
89,
50,
230,
169,
126,
191,
212,
176,
212,
100,
245,
107,
202,
123,
255,
114,
91,
94,
154,
216,
63,
212,
6,
178,
243,
200,
220,
143,
102,
90,
70,
132,
102,
168,
24,
21,
121,
167,
8,
206,
5,
60,
251,
57,
137,
239,
109,
250,
78,
113,
82,
123,
183,
228,
160,
164,
156,
150,
192,
97,
61,
164,
10,
112,
77,
195,
142,
205,
110,
179,
50,
108,
242,
199,
68,
9,
4,
221,
160,
85,
253,
35,
165,
32,
120,
178,
133,
94,
216,
59,
173,
23,
255,
133,
197,
185,
116,
141,
51,
185,
184,
87,
110,
181,
188,
105,
101,
219,
11,
60,
146,
85,
153,
244,
115,
180,
100,
36,
202,
103,
76,
40,
153,
204,
220,
103,
61,
121,
199,
22,
156,
43,
230,
171,
170,
170,
53,
114,
55,
246,
129,
42,
72,
232,
63,
78,
25,
154,
191,
158,
70,
170,
50,
147,
255,
165,
178,
90,
180,
177,
47,
30,
105,
132,
146,
29,
176,
185,
141,
175,
242,
49,
108,
149,
134,
243,
2,
3,
1,
0,
1,
163,
130,
3,
242,
48,
130,
3,
238,
48,
31,
6,
3,
85,
29,
35,
4,
24,
48,
22,
128,
20,
116,
133,
128,
192,
102,
199,
223,
55,
222,
207,
189,
41,
55,
170,
3,
29,
190,
237,
205,
23,
48,
29,
6,
3,
85,
29,
14,
4,
22,
4,
20,
76,
254,
208,
18,
77,
46,
33,
207,
107,
250,
242,
242,
184,
76,
73,
2,
29,
49,
145,
138,
48,
129,
129,
6,
3,
85,
29,
17,
4,
122,
48,
120,
130,
15,
119,
119,
119,
46,
101,
120,
97,
109,
112,
108,
101,
46,
111,
114,
103,
130,
11,
101,
120,
97,
109,
112,
108,
101,
46,
110,
101,
116,
130,
11,
101,
120,
97,
109,
112,
108,
101,
46,
101,
100,
117,
130,
11,
101,
120,
97,
109,
112,
108,
101,
46,
99,
111,
109,
130,
11,
101,
120,
97,
109,
112,
108,
101,
46,
111,
114,
103,
130,
15,
119,
119,
119,
46,
101,
120,
97,
109,
112,
108,
101,
46,
99,
111,
109,
130,
15,
119,
119,
119,
46,
101,
120,
97,
109,
112,
108,
101,
46,
101,
100,
117,
130,
15,
119,
119,
119,
46,
101,
120,
97,
109,
112,
108,
101,
46,
110,
101,
116,
48,
62,
6,
3,
85,
29,
32,
4,
55,
48,
53,
48,
51,
6,
6,
103,
129,
12,
1,
2,
2,
48,
41,
48,
39,
6,
8,
43,
6,
1,
5,
5,
7,
2,
1,
22,
27,
104,
116,
116,
112,
58,
47,
47,
119,
119,
119,
46,
100,
105,
103,
105,
99,
101,
114,
116,
46,
99,
111,
109,
47,
67,
80,
83,
48,
14,
6,
3,
85,
29,
15,
1,
1,
255,
4,
4,
3,
2,
5,
160,
48,
29,
6,
3,
85,
29,
37,
4,
22,
48,
20,
6,
8,
43,
6,
1,
5,
5,
7,
3,
1,
6,
8,
43,
6,
1,
5,
5,
7,
3,
2,
48,
129,
159,
6,
3,
85,
29,
31,
4,
129,
151,
48,
129,
148,
48,
72,
160,
70,
160,
68,
134,
66,
104,
116,
116,
112,
58,
47,
47,
99,
114,
108,
51,
46,
100,
105,
103,
105,
99,
101,
114,
116,
46,
99,
111,
109,
47,
68,
105,
103,
105,
67,
101,
114,
116,
71,
108,
111,
98,
97,
108,
71,
50,
84,
76,
83,
82,
83,
65,
83,
72,
65,
50,
53,
54,
50,
48,
50,
48,
67,
65,
49,
45,
49,
46,
99,
114,
108,
48,
72,
160,
70,
160,
68,
134,
66,
104,
116,
116,
112,
58,
47,
47,
99,
114,
108,
52,
46,
100,
105,
103,
105,
99,
101,
114,
116,
46,
99,
111,
109,
47,
68,
105,
103,
105,
67,
101,
114,
116,
71,
108,
111,
98,
97,
108,
71,
50,
84,
76,
83,
82,
83,
65,
83,
72,
65,
50,
53,
54,
50,
48,
50,
48,
67,
65,
49,
45,
49,
46,
99,
114,
108,
48,
129,
135,
6,
8,
43,
6,
1,
5,
5,
7,
1,
1,
4,
123,
48,
121,
48,
36,
6,
8,
43,
6,
1,
5,
5,
7,
48,
1,
134,
24,
104,
116,
116,
112,
58,
47,
47,
111,
99,
115,
112,
46,
100,
105,
103,
105,
99,
101,
114,
116,
46,
99,
111,
109,
48,
81,
6,
8,
43,
6,
1,
5,
5,
7,
48,
2,
134,
69,
104,
116,
116,
112,
58,
47,
47,
99,
97,
99,
101,
114,
116,
115,
46,
100,
105,
103,
105,
99,
101,
114,
116,
46,
99,
111,
109,
47,
68,
105,
103,
105,
67,
101,
114,
116,
71,
108,
111,
98,
97,
108,
71,
50,
84,
76,
83,
82,
83,
65,
83,
72,
65,
50,
53,
54,
50,
48,
50,
48,
67,
65,
49,
45,
49,
46,
99,
114,
116,
48,
12,
6,
3,
85,
29,
19,
1,
1,
255,
4,
2,
48,
0,
48,
130,
1,
125,
6,
10,
43,
6,
1,
4,
1,
214,
121,
2,
4,
2,
4,
130,
1,
109,
4,
130,
1,
105,
1,
103,
0,
116,
0,
78,
117,
163,
39,
92,
154,
16,
195,
56,
91,
108,
212,
223,
63,
82,
235,
29,
240,
224,
142,
27,
141,
105,
192,
177,
250,
100,
177,
98,
154,
57,
223,
0,
0,
1,
141,
91,
210,
252,
100,
0,
0,
4,
3,
0,
69,
48,
67,
2,
31,
64,
81,
10,
12,
79,
108,
16,
85,
198,
23,
22,
103,
110,
154,
240,
144,
158,
243,
115,
245,
37,
158,
176,
154,
254,
122,
26,
197,
92,
200,
192,
2,
32,
56,
41,
49,
177,
40,
228,
114,
72,
77,
52,
79,
158,
140,
147,
226,
97,
188,
112,
186,
214,
140,
75,
225,
114,
21,
29,
17,
197,
148,
186,
77,
83,
0,
118,
0,
125,
89,
30,
18,
225,
120,
42,
123,
28,
97,
103,
124,
94,
253,
248,
208,
135,
92,
20,
160,
78,
149,
158,
185,
3,
47,
217,
14,
140,
46,
121,
184,
0,
0,
1,
141,
91,
210,
252,
48,
0,
0,
4,
3,
0,
71,
48,
69,
2,
32,
93,
191,
150,
119,
165,
145,
91,
126,
10,
12,
222,
209,
169,
9,
51,
55,
103,
16,
76,
66,
204,
65,
69,
39,
83,
75,
167,
124,
119,
99,
64,
115,
2,
33,
0,
178,
232,
9,
63,
102,
76,
195,
125,
59,
33,
115,
32,
21,
121,
50,
69,
213,
47,
43,
147,
127,
99,
128,
204,
3,
154,
237,
223,
49,
216,
126,
151,
0,
119,
0,
230,
210,
49,
99,
64,
119,
140,
193,
16,
65,
6,
215,
113,
185,
206,
193,
210,
64,
246,
150,
132,
134,
251,
186,
135,
50,
29,
253,
30,
55,
142,
80,
0,
0,
1,
141,
91,
210,
252,
95,
0,
0,
4,
3,
0,
72,
48,
70,
2,
33,
0,
224,
170,
33,
253,
88,
179,
117,
5,
53,
182,
54,
118,
19,
101,
70,
129,
100,
151,
94,
76,
39,
66,
104,
152,
134,
96,
30,
41,
197,
75,
29,
224,
2,
33,
0,
251,
36,
129,
133,
177,
209,
168,
151,
185,
44,
179,
106,
94,
226,
86,
43,
10,
3,
213,
115,
232,
134,
102,
75,
170,
158,
61,
186,
134,
168,
107,
209,
48,
13,
6,
9,
42,
134,
72,
134,
247,
13,
1,
1,
11,
5,
0,
3,
130,
1,
1,
0,
4,
225,
110,
2,
62,
13,
227,
35,
70,
244,
227,
150,
53,
5,
147,
53,
34,
2,
11,
132,
93,
226,
115,
134,
212,
116,
79,
252,
27,
39,
175,
62,
202,
173,
195,
206,
70,
214,
250,
15,
226,
113,
249,
13,
26,
154,
19,
183,
213,
8,
72,
189,
80,
88,
179,
94,
32,
99,
134,
41,
202,
62,
204,
204,
120,
38,
225,
89,
143,
93,
202,
139,
188,
73,
49,
111,
97,
189,
66,
255,
97,
98,
225,
34,
53,
36,
38,
155,
87,
235,
229,
0,
13,
255,
64,
51,
108,
70,
194,
51,
119,
8,
152,
178,
122,
246,
67,
249,
109,
72,
223,
191,
254,
250,
40,
30,
123,
138,
207,
45,
97,
255,
108,
135,
152,
164,
44,
98,
154,
187,
16,
140,
255,
52,
72,
112,
102,
183,
109,
114,
195,
105,
249,
57,
75,
104,
57,
86,
189,
161,
179,
109,
244,
119,
243,
70,
91,
92,
25,
172,
79,
179,
116,
107,
140,
197,
241,
137,
204,
147,
254,
12,
1,
111,
136,
23,
220,
66,
113,
96,
227,
237,
115,
48,
66,
156,
169,
47,
59,
162,
120,
142,
200,
111,
186,
209,
19,
12,
208,
199,
94,
140,
16,
251,
1,
46,
55,
155,
219,
172,
247,
161,
172,
186,
127,
248,
146,
231,
203,
65,
68,
200,
21,
249,
243,
196,
187,
173,
81,
95,
190,
222,
199,
172,
134,
7,
159,
64,
236,
185,
11,
246,
178,
139,
204,
181,
85,
51,
102,
186,
51,
194,
196,
240,
162,
233
],
[
48,
130,
4,
200,
48,
130,
3,
176,
160,
3,
2,
1,
2,
2,
16,
12,
245,
189,
6,
43,
86,
2,
244,
122,
184,
80,
44,
35,
204,
240,
102,
48,
13,
6,
9,
42,
134,
72,
134,
247,
13,
1,
1,
11,
5,
0,
48,
97,
49,
11,
48,
9,
6,
3,
85,
4,
6,
19,
2,
85,
83,
49,
21,
48,
19,
6,
3,
85,
4,
10,
19,
12,
68,
105,
103,
105,
67,
101,
114,
116,
32,
73,
110,
99,
49,
25,
48,
23,
6,
3,
85,
4,
11,
19,
16,
119,
119,
119,
46,
100,
105,
103,
105,
99,
101,
114,
116,
46,
99,
111,
109,
49,
32,
48,
30,
6,
3,
85,
4,
3,
19,
23,
68,
105,
103,
105,
67,
101,
114,
116,
32,
71,
108,
111,
98,
97,
108,
32,
82,
111,
111,
116,
32,
71,
50,
48,
30,
23,
13,
50,
49,
48,
51,
51,
48,
48,
48,
48,
48,
48,
48,
90,
23,
13,
51,
49,
48,
51,
50,
57,
50,
51,
53,
57,
53,
57,
90,
48,
89,
49,
11,
48,
9,
6,
3,
85,
4,
6,
19,
2,
85,
83,
49,
21,
48,
19,
6,
3,
85,
4,
10,
19,
12,
68,
105,
103,
105,
67,
101,
114,
116,
32,
73,
110,
99,
49,
51,
48,
49,
6,
3,
85,
4,
3,
19,
42,
68,
105,
103,
105,
67,
101,
114,
116,
32,
71,
108,
111,
98,
97,
108,
32,
71,
50,
32,
84,
76,
83,
32,
82,
83,
65,
32,
83,
72,
65,
50,
53,
54,
32,
50,
48,
50,
48,
32,
67,
65,
49,
48,
130,
1,
34,
48,
13,
6,
9,
42,
134,
72,
134,
247,
13,
1,
1,
1,
5,
0,
3,
130,
1,
15,
0,
48,
130,
1,
10,
2,
130,
1,
1,
0,
204,
247,
16,
98,
79,
166,
187,
99,
111,
237,
144,
82,
86,
197,
109,
39,
123,
122,
18,
86,
138,
241,
244,
249,
214,
231,
225,
143,
189,
149,
171,
242,
96,
65,
21,
112,
219,
18,
0,
250,
39,
10,
181,
87,
56,
91,
125,
178,
81,
147,
113,
149,
14,
106,
65,
148,
91,
53,
27,
250,
123,
250,
187,
197,
190,
36,
48,
254,
86,
239,
196,
243,
125,
151,
227,
20,
245,
20,
77,
203,
167,
16,
242,
22,
234,
171,
34,
240,
49,
34,
17,
97,
105,
144,
38,
186,
120,
217,
151,
31,
227,
125,
102,
171,
117,
68,
149,
115,
200,
172,
255,
239,
93,
10,
138,
89,
67,
225,
172,
178,
58,
15,
243,
72,
252,
215,
107,
55,
193,
99,
220,
222,
70,
214,
219,
69,
254,
125,
35,
253,
144,
232,
81,
7,
30,
81,
163,
95,
237,
73,
70,
84,
127,
44,
136,
197,
244,
19,
156,
151,
21,
60,
3,
232,
161,
57,
220,
105,
12,
50,
193,
175,
22,
87,
76,
148,
71,
66,
124,
162,
200,
156,
125,
230,
212,
77,
84,
175,
66,
153,
168,
193,
4,
194,
119,
156,
214,
72,
228,
206,
17,
224,
42,
128,
153,
240,
67,
112,
207,
63,
118,
107,
209,
76,
73,
171,
36,
94,
194,
13,
130,
253,
70,
168,
171,
108,
147,
204,
98,
82,
66,
117,
146,
248,
154,
250,
94,
94,
178,
176,
97,
229,
31,
31,
185,
127,
9,
152,
232,
61,
250,
131,
127,
71,
105,
161,
2,
3,
1,
0,
1,
163,
130,
1,
130,
48,
130,
1,
126,
48,
18,
6,
3,
85,
29,
19,
1,
1,
255,
4,
8,
48,
6,
1,
1,
255,
2,
1,
0,
48,
29,
6,
3,
85,
29,
14,
4,
22,
4,
20,
116,
133,
128,
192,
102,
199,
223,
55,
222,
207,
189,
41,
55,
170,
3,
29,
190,
237,
205,
23,
48,
31,
6,
3,
85,
29,
35,
4,
24,
48,
22,
128,
20,
78,
34,
84,
32,
24,
149,
230,
227,
110,
230,
15,
250,
250,
185,
18,
237,
6,
23,
143,
57,
48,
14,
6,
3,
85,
29,
15,
1,
1,
255,
4,
4,
3,
2,
1,
134,
48,
29,
6,
3,
85,
29,
37,
4,
22,
48,
20,
6,
8,
43,
6,
1,
5,
5,
7,
3,
1,
6,
8,
43,
6,
1,
5,
5,
7,
3,
2,
48,
118,
6,
8,
43,
6,
1,
5,
5,
7,
1,
1,
4,
106,
48,
104,
48,
36,
6,
8,
43,
6,
1,
5,
5,
7,
48,
1,
134,
24,
104,
116,
116,
112,
58,
47,
47,
111,
99,
115,
112,
46,
100,
105,
103,
105,
99,
101,
114,
116,
46,
99,
111,
109,
48,
64,
6,
8,
43,
6,
1,
5,
5,
7,
48,
2,
134,
52,
104,
116,
116,
112,
58,
47,
47,
99,
97,
99,
101,
114,
116,
115,
46,
100,
105,
103,
105,
99,
101,
114,
116,
46,
99,
111,
109,
47,
68,
105,
103,
105,
67,
101,
114,
116,
71,
108,
111,
98,
97,
108,
82,
111,
111,
116,
71,
50,
46,
99,
114,
116,
48,
66,
6,
3,
85,
29,
31,
4,
59,
48,
57,
48,
55,
160,
53,
160,
51,
134,
49,
104,
116,
116,
112,
58,
47,
47,
99,
114,
108,
51,
46,
100,
105,
103,
105,
99,
101,
114,
116,
46,
99,
111,
109,
47,
68,
105,
103,
105,
67,
101,
114,
116,
71,
108,
111,
98,
97,
108,
82,
111,
111,
116,
71,
50,
46,
99,
114,
108,
48,
61,
6,
3,
85,
29,
32,
4,
54,
48,
52,
48,
11,
6,
9,
96,
134,
72,
1,
134,
253,
108,
2,
1,
48,
7,
6,
5,
103,
129,
12,
1,
1,
48,
8,
6,
6,
103,
129,
12,
1,
2,
1,
48,
8,
6,
6,
103,
129,
12,
1,
2,
2,
48,
8,
6,
6,
103,
129,
12,
1,
2,
3,
48,
13,
6,
9,
42,
134,
72,
134,
247,
13,
1,
1,
11,
5,
0,
3,
130,
1,
1,
0,
144,
241,
112,
203,
40,
151,
105,
151,
124,
116,
253,
192,
250,
38,
123,
83,
171,
173,
205,
101,
253,
186,
156,
6,
156,
138,
215,
90,
67,
135,
237,
77,
76,
86,
95,
173,
193,
197,
181,
5,
32,
46,
89,
209,
255,
74,
245,
160,
42,
216,
176,
149,
173,
201,
46,
74,
59,
215,
167,
246,
111,
136,
41,
252,
48,
63,
36,
132,
187,
195,
183,
123,
147,
7,
44,
175,
135,
107,
118,
51,
237,
0,
85,
82,
178,
89,
158,
228,
185,
208,
243,
223,
231,
15,
254,
221,
248,
196,
185,
16,
114,
129,
9,
4,
95,
207,
151,
158,
46,
50,
117,
142,
207,
154,
88,
210,
87,
49,
126,
55,
1,
129,
178,
102,
109,
41,
26,
177,
102,
9,
109,
209,
110,
144,
244,
185,
250,
47,
1,
20,
197,
92,
86,
100,
1,
217,
125,
135,
168,
56,
83,
159,
139,
93,
70,
109,
92,
198,
39,
132,
129,
212,
126,
140,
140,
163,
155,
82,
231,
198,
136,
236,
55,
124,
42,
251,
240,
85,
90,
56,
114,
16,
216,
0,
19,
207,
76,
115,
219,
170,
55,
53,
168,
41,
129,
105,
156,
118,
188,
222,
24,
123,
144,
212,
202,
207,
239,
103,
3,
253,
4,
90,
33,
22,
177,
255,
234,
63,
223,
220,
130,
245,
235,
244,
89,
146,
35,
13,
36,
42,
149,
37,
76,
202,
161,
145,
230,
212,
183,
172,
135,
116,
179,
241,
109,
163,
153,
219,
249,
213,
189,
132,
64,
159,
7,
152
]
],
"ocsp_response": [
48,
130,
1,
211,
10,
1,
0,
160,
130,
1,
204,
48,
130,
1,
200,
6,
9,
43,
6,
1,
5,
5,
7,
48,
1,
1,
4,
130,
1,
185,
48,
130,
1,
181,
48,
129,
158,
162,
22,
4,
20,
116,
133,
128,
192,
102,
199,
223,
55,
222,
207,
189,
41,
55,
170,
3,
29,
190,
237,
205,
23,
24,
15,
50,
48,
50,
52,
48,
50,
49,
54,
49,
55,
48,
55,
48,
52,
90,
48,
115,
48,
113,
48,
73,
48,
9,
6,
5,
43,
14,
3,
2,
26,
5,
0,
4,
20,
167,
196,
184,
179,
220,
91,
181,
88,
30,
167,
215,
241,
58,
197,
105,
245,
111,
72,
215,
137,
4,
20,
116,
133,
128,
192,
102,
199,
223,
55,
222,
207,
189,
41,
55,
170,
3,
29,
190,
237,
205,
23,
2,
16,
7,
91,
206,
243,
6,
137,
200,
173,
223,
19,
229,
26,
244,
175,
225,
135,
128,
0,
24,
15,
50,
48,
50,
52,
48,
50,
49,
54,
49,
54,
53,
49,
48,
49,
90,
160,
17,
24,
15,
50,
48,
50,
52,
48,
50,
50,
51,
49,
53,
53,
49,
48,
49,
90,
48,
13,
6,
9,
42,
134,
72,
134,
247,
13,
1,
1,
11,
5,
0,
3,
130,
1,
1,
0,
99,
146,
105,
67,
115,
11,
71,
203,
59,
22,
0,
82,
174,
219,
71,
209,
137,
33,
82,
89,
22,
161,
227,
64,
12,
131,
248,
3,
167,
212,
36,
132,
92,
141,
153,
251,
117,
2,
155,
232,
52,
127,
207,
79,
212,
224,
103,
140,
100,
133,
60,
46,
189,
216,
152,
69,
163,
217,
161,
233,
24,
191,
93,
63,
33,
33,
192,
31,
208,
207,
214,
110,
25,
188,
154,
156,
191,
75,
33,
19,
207,
115,
103,
87,
69,
139,
32,
203,
197,
199,
68,
171,
91,
156,
34,
93,
179,
4,
235,
226,
205,
97,
100,
67,
48,
187,
156,
253,
218,
161,
195,
18,
146,
174,
102,
3,
231,
255,
12,
178,
22,
69,
62,
164,
199,
218,
1,
24,
202,
211,
87,
221,
104,
244,
154,
170,
106,
229,
234,
21,
232,
3,
12,
43,
33,
70,
51,
54,
118,
127,
206,
11,
199,
142,
86,
235,
70,
179,
83,
58,
84,
16,
98,
221,
247,
94,
158,
71,
16,
93,
187,
130,
20,
140,
248,
119,
149,
179,
174,
179,
246,
25,
7,
232,
140,
74,
3,
67,
24,
79,
233,
51,
129,
171,
32,
175,
120,
110,
44,
9,
136,
23,
134,
88,
118,
91,
108,
72,
181,
101,
174,
249,
100,
225,
76,
81,
208,
43,
52,
125,
127,
239,
148,
189,
177,
149,
100,
40,
136,
234,
97,
50,
38,
4,
246,
117,
181,
170,
224,
212,
139,
246,
26,
194,
33,
225,
109,
164,
143,
243,
247,
192,
43,
179,
106,
134
],
"scts": null
},
"server_kx_details": {
"kx_params": [
3,
0,
23,
65,
4,
163,
255,
34,
100,
180,
234,
4,
204,
206,
213,
0,
53,
237,
12,
236,
163,
233,
190,
228,
117,
138,
60,
223,
134,
85,
183,
101,
185,
59,
58,
216,
1,
128,
231,
200,
2,
78,
91,
244,
75,
46,
66,
184,
232,
150,
152,
98,
197,
70,
65,
183,
168,
241,
31,
14,
254,
148,
63,
173,
86,
101,
231,
197,
2
],
"kx_sig": {
"scheme": "RSA_PSS_SHA256",
"sig": [
77,
202,
8,
254,
164,
224,
181,
13,
42,
14,
167,
132,
52,
197,
12,
35,
153,
159,
204,
164,
250,
40,
167,
77,
248,
187,
134,
160,
18,
71,
132,
152,
32,
158,
136,
48,
167,
6,
108,
49,
136,
29,
207,
233,
5,
41,
211,
108,
54,
115,
117,
190,
210,
228,
251,
149,
233,
20,
156,
20,
95,
14,
165,
225,
201,
22,
88,
79,
203,
157,
217,
247,
47,
228,
184,
14,
193,
168,
208,
73,
146,
119,
82,
206,
209,
36,
152,
235,
5,
193,
48,
225,
16,
123,
18,
187,
120,
149,
19,
87,
178,
255,
86,
247,
79,
39,
50,
62,
179,
238,
4,
202,
2,
31,
76,
192,
186,
75,
190,
33,
191,
213,
121,
81,
167,
25,
245,
39,
185,
209,
128,
123,
200,
63,
85,
27,
218,
130,
187,
226,
6,
246,
31,
250,
7,
54,
140,
144,
110,
151,
167,
154,
98,
217,
81,
168,
47,
200,
145,
165,
2,
138,
232,
98,
230,
20,
167,
65,
232,
13,
255,
183,
234,
17,
138,
27,
156,
247,
244,
11,
76,
210,
63,
173,
182,
251,
33,
196,
93,
63,
191,
224,
5,
92,
189,
205,
66,
102,
96,
89,
102,
89,
124,
130,
113,
140,
162,
65,
64,
232,
230,
117,
107,
161,
143,
118,
53,
8,
28,
178,
46,
101,
175,
9,
190,
49,
242,
225,
217,
32,
50,
18,
250,
207,
204,
138,
147,
162,
2,
61,
146,
225,
145,
45,
139,
149,
181,
87,
190,
196,
187,
140,
57,
114,
167,
246
]
}
},
"client_random": [
94,
62,
147,
205,
15,
160,
202,
124,
84,
253,
19,
124,
176,
193,
6,
183,
213,
207,
249,
64,
139,
248,
208,
63,
126,
101,
47,
82,
5,
127,
113,
61
],
"server_random": [
232,
62,
77,
16,
43,
169,
18,
222,
68,
78,
12,
206,
134,
81,
217,
135,
142,
16,
11,
134,
123,
61,
7,
133,
68,
79,
87,
78,
71,
82,
68,
1
]
}
}
}
},
"substrings": {
"openings": {
"4": [
{
"kind": "Blake3",
"ranges": [
{
"start": 1331,
"end": 1610
}
],
"direction": "Received"
},
{
"Blake3": {
"data": [
60,
47,
104,
49,
62,
10,
32,
32,
32,
32,
60,
112,
62,
84,
104,
105,
115,
32,
100,
111,
109,
97,
105,
110,
32,
105,
115,
32,
102,
111,
114,
32,
117,
115,
101,
32,
105,
110,
32,
105,
108,
108,
117,
115,
116,
114,
97,
116,
105,
118,
101,
32,
101,
120,
97,
109,
112,
108,
101,
115,
32,
105,
110,
32,
100,
111,
99,
117,
109,
101,
110,
116,
115,
46,
32,
89,
111,
117,
32,
109,
97,
121,
32,
117,
115,
101,
32,
116,
104,
105,
115,
10,
32,
32,
32,
32,
100,
111,
109,
97,
105,
110,
32,
105,
110,
32,
108,
105,
116,
101,
114,
97,
116,
117,
114,
101,
32,
119,
105,
116,
104,
111,
117,
116,
32,
112,
114,
105,
111,
114,
32,
99,
111,
111,
114,
100,
105,
110,
97,
116,
105,
111,
110,
32,
111,
114,
32,
97,
115,
107,
105,
110,
103,
32,
102,
111,
114,
32,
112,
101,
114,
109,
105,
115,
115,
105,
111,
110,
46,
60,
47,
112,
62,
10,
32,
32,
32,
32,
60,
112,
62,
60,
97,
32,
104,
114,
101,
102,
61,
34,
104,
116,
116,
112,
115,
58,
47,
47,
119,
119,
119,
46,
105,
97,
110,
97,
46,
111,
114,
103,
47,
100,
111,
109,
97,
105,
110,
115,
47,
101,
120,
97,
109,
112,
108,
101,
34,
62,
77,
111,
114,
101,
32,
105,
110,
102,
111,
114,
109,
97,
116,
105,
111,
110,
46,
46,
46,
60,
47,
97,
62,
60,
47,
112,
62,
10,
60,
47,
100,
105,
118,
62,
10,
60,
47,
98,
111,
100,
121,
62,
10,
60,
47,
104,
116,
109,
108,
62,
10
],
"nonce": [
53,
78,
3,
55,
33,
81,
233,
159,
91,
82,
5,
237,
34,
113,
10,
76,
83,
11,
151,
133,
56,
149,
185,
250,
205,
12,
207,
234,
52,
17,
21,
152
]
}
}
],
"1": [
{
"kind": "Blake3",
"ranges": [
{
"start": 207,
"end": 211
}
],
"direction": "Sent"
},
{
"Blake3": {
"data": [
13,
10,
13,
10
],
"nonce": [
99,
77,
63,
127,
113,
90,
229,
95,
205,
0,
46,
74,
228,
19,
74,
134,
131,
179,
225,
121,
0,
106,
69,
25,
34,
235,
224,
185,
139,
119,
105,
220
]
}
}
],
"0": [
{
"kind": "Blake3",
"ranges": [
{
"start": 0,
"end": 106
}
],
"direction": "Sent"
},
{
"Blake3": {
"data": [
71,
69,
84,
32,
47,
32,
72,
84,
84,
80,
47,
49,
46,
49,
13,
10,
104,
111,
115,
116,
58,
32,
101,
120,
97,
109,
112,
108,
101,
46,
99,
111,
109,
13,
10,
97,
99,
99,
101,
112,
116,
58,
32,
42,
47,
42,
13,
10,
97,
99,
99,
101,
112,
116,
45,
101,
110,
99,
111,
100,
105,
110,
103,
58,
32,
105,
100,
101,
110,
116,
105,
116,
121,
13,
10,
99,
111,
110,
110,
101,
99,
116,
105,
111,
110,
58,
32,
99,
108,
111,
115,
101,
13,
10,
117,
115,
101,
114,
45,
97,
103,
101,
110,
116,
58,
32
],
"nonce": [
126,
248,
48,
223,
17,
76,
243,
100,
190,
117,
127,
167,
203,
37,
106,
149,
206,
75,
0,
152,
75,
155,
0,
189,
101,
125,
177,
216,
46,
94,
19,
33
]
}
}
],
"3": [
{
"kind": "Blake3",
"ranges": [
{
"start": 409,
"end": 1317
}
],
"direction": "Received"
},
{
"Blake3": {
"data": [
60,
47,
116,
105,
116,
108,
101,
62,
10,
10,
32,
32,
32,
32,
60,
109,
101,
116,
97,
32,
99,
104,
97,
114,
115,
101,
116,
61,
34,
117,
116,
102,
45,
56,
34,
32,
47,
62,
10,
32,
32,
32,
32,
60,
109,
101,
116,
97,
32,
104,
116,
116,
112,
45,
101,
113,
117,
105,
118,
61,
34,
67,
111,
110,
116,
101,
110,
116,
45,
116,
121,
112,
101,
34,
32,
99,
111,
110,
116,
101,
110,
116,
61,
34,
116,
101,
120,
116,
47,
104,
116,
109,
108,
59,
32,
99,
104,
97,
114,
115,
101,
116,
61,
117,
116,
102,
45,
56,
34,
32,
47,
62,
10,
32,
32,
32,
32,
60,
109,
101,
116,
97,
32,
110,
97,
109,
101,
61,
34,
118,
105,
101,
119,
112,
111,
114,
116,
34,
32,
99,
111,
110,
116,
101,
110,
116,
61,
34,
119,
105,
100,
116,
104,
61,
100,
101,
118,
105,
99,
101,
45,
119,
105,
100,
116,
104,
44,
32,
105,
110,
105,
116,
105,
97,
108,
45,
115,
99,
97,
108,
101,
61,
49,
34,
32,
47,
62,
10,
32,
32,
32,
32,
60,
115,
116,
121,
108,
101,
32,
116,
121,
112,
101,
61,
34,
116,
101,
120,
116,
47,
99,
115,
115,
34,
62,
10,
32,
32,
32,
32,
98,
111,
100,
121,
32,
123,
10,
32,
32,
32,
32,
32,
32,
32,
32,
98,
97,
99,
107,
103,
114,
111,
117,
110,
100,
45,
99,
111,
108,
111,
114,
58,
32,
35,
102,
48,
102,
48,
102,
50,
59,
10,
32,
32,
32,
32,
32,
32,
32,
32,
109,
97,
114,
103,
105,
110,
58,
32,
48,
59,
10,
32,
32,
32,
32,
32,
32,
32,
32,
112,
97,
100,
100,
105,
110,
103,
58,
32,
48,
59,
10,
32,
32,
32,
32,
32,
32,
32,
32,
102,
111,
110,
116,
45,
102,
97,
109,
105,
108,
121,
58,
32,
45,
97,
112,
112,
108,
101,
45,
115,
121,
115,
116,
101,
109,
44,
32,
115,
121,
115,
116,
101,
109,
45,
117,
105,
44,
32,
66,
108,
105,
110,
107,
77,
97,
99,
83,
121,
115,
116,
101,
109,
70,
111,
110,
116,
44,
32,
34,
83,
101,
103,
111,
101,
32,
85,
73,
34,
44,
32,
34,
79,
112,
101,
110,
32,
83,
97,
110,
115,
34,
44,
32,
34,
72,
101,
108,
118,
101,
116,
105,
99,
97,
32,
78,
101,
117,
101,
34,
44,
32,
72,
101,
108,
118,
101,
116,
105,
99,
97,
44,
32,
65,
114,
105,
97,
108,
44,
32,
115,
97,
110,
115,
45,
115,
101,
114,
105,
102,
59,
10,
32,
32,
32,
32,
32,
32,
32,
32,
10,
32,
32,
32,
32,
125,
10,
32,
32,
32,
32,
100,
105,
118,
32,
123,
10,
32,
32,
32,
32,
32,
32,
32,
32,
119,
105,
100,
116,
104,
58,
32,
54,
48,
48,
112,
120,
59,
10,
32,
32,
32,
32,
32,
32,
32,
32,
109,
97,
114,
103,
105,
110,
58,
32,
53,
101,
109,
32,
97,
117,
116,
111,
59,
10,
32,
32,
32,
32,
32,
32,
32,
32,
112,
97,
100,
100,
105,
110,
103,
58,
32,
50,
101,
109,
59,
10,
32,
32,
32,
32,
32,
32,
32,
32,
98,
97,
99,
107,
103,
114,
111,
117,
110,
100,
45,
99,
111,
108,
111,
114,
58,
32,
35,
102,
100,
102,
100,
102,
102,
59,
10,
32,
32,
32,
32,
32,
32,
32,
32,
98,
111,
114,
100,
101,
114,
45,
114,
97,
100,
105,
117,
115,
58,
32,
48,
46,
53,
101,
109,
59,
10,
32,
32,
32,
32,
32,
32,
32,
32,
98,
111,
120,
45,
115,
104,
97,
100,
111,
119,
58,
32,
50,
112,
120,
32,
51,
112,
120,
32,
55,
112,
120,
32,
50,
112,
120,
32,
114,
103,
98,
97,
40,
48,
44,
48,
44,
48,
44,
48,
46,
48,
50,
41,
59,
10,
32,
32,
32,
32,
125,
10,
32,
32,
32,
32,
97,
58,
108,
105,
110,
107,
44,
32,
97,
58,
118,
105,
115,
105,
116,
101,
100,
32,
123,
10,
32,
32,
32,
32,
32,
32,
32,
32,
99,
111,
108,
111,
114,
58,
32,
35,
51,
56,
52,
56,
56,
102,
59,
10,
32,
32,
32,
32,
32,
32,
32,
32,
116,
101,
120,
116,
45,
100,
101,
99,
111,
114,
97,
116,
105,
111,
110,
58,
32,
110,
111,
110,
101,
59,
10,
32,
32,
32,
32,
125,
10,
32,
32,
32,
32,
64,
109,
101,
100,
105,
97,
32,
40,
109,
97,
120,
45,
119,
105,
100,
116,
104,
58,
32,
55,
48,
48,
112,
120,
41,
32,
123,
10,
32,
32,
32,
32,
32,
32,
32,
32,
100,
105,
118,
32,
123,
10,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
109,
97,
114,
103,
105,
110,
58,
32,
48,
32,
97,
117,
116,
111,
59,
10,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
32,
119,
105,
100,
116,
104,
58,
32,
97,
117,
116,
111,
59,
10,
32,
32,
32,
32,
32,
32,
32,
32,
125,
10,
32,
32,
32,
32,
125,
10,
32,
32,
32,
32,
60,
47,
115,
116,
121,
108,
101,
62,
32,
32,
32,
32,
10,
60,
47,
104,
101,
97,
100,
62,
10,
10,
60,
98,
111,
100,
121,
62,
10,
60,
100,
105,
118,
62,
10,
32,
32,
32,
32,
60,
104,
49,
62
],
"nonce": [
209,
157,
10,
225,
29,
250,
207,
74,
155,
16,
175,
164,
231,
104,
5,
107,
143,
117,
137,
14,
247,
159,
78,
120,
79,
88,
200,
71,
15,
112,
170,
6
]
}
}
],
"2": [
{
"kind": "Blake3",
"ranges": [
{
"start": 0,
"end": 395
}
],
"direction": "Received"
},
{
"Blake3": {
"data": [
72,
84,
84,
80,
47,
49,
46,
49,
32,
50,
48,
48,
32,
79,
75,
13,
10,
65,
103,
101,
58,
32,
53,
49,
57,
56,
57,
53,
13,
10,
67,
97,
99,
104,
101,
45,
67,
111,
110,
116,
114,
111,
108,
58,
32,
109,
97,
120,
45,
97,
103,
101,
61,
54,
48,
52,
56,
48,
48,
13,
10,
67,
111,
110,
116,
101,
110,
116,
45,
84,
121,
112,
101,
58,
32,
116,
101,
120,
116,
47,
104,
116,
109,
108,
59,
32,
99,
104,
97,
114,
115,
101,
116,
61,
85,
84,
70,
45,
56,
13,
10,
68,
97,
116,
101,
58,
32,
84,
104,
117,
44,
32,
50,
50,
32,
70,
101,
98,
32,
50,
48,
50,
52,
32,
48,
57,
58,
53,
49,
58,
48,
56,
32,
71,
77,
84,
13,
10,
69,
116,
97,
103,
58,
32,
34,
51,
49,
52,
55,
53,
50,
54,
57,
52,
55,
43,
105,
100,
101,
110,
116,
34,
13,
10,
69,
120,
112,
105,
114,
101,
115,
58,
32,
84,
104,
117,
44,
32,
50,
57,
32,
70,
101,
98,
32,
50,
48,
50,
52,
32,
48,
57,
58,
53,
49,
58,
48,
56,
32,
71,
77,
84,
13,
10,
76,
97,
115,
116,
45,
77,
111,
100,
105,
102,
105,
101,
100,
58,
32,
84,
104,
117,
44,
32,
49,
55,
32,
79,
99,
116,
32,
50,
48,
49,
57,
32,
48,
55,
58,
49,
56,
58,
50,
54,
32,
71,
77,
84,
13,
10,
83,
101,
114,
118,
101,
114,
58,
32,
69,
67,
83,
32,
40,
100,
99,
101,
47,
50,
54,
65,
48,
41,
13,
10,
86,
97,
114,
121,
58,
32,
65,
99,
99,
101,
112,
116,
45,
69,
110,
99,
111,
100,
105,
110,
103,
13,
10,
88,
45,
67,
97,
99,
104,
101,
58,
32,
72,
73,
84,
13,
10,
67,
111,
110,
116,
101,
110,
116,
45,
76,
101,
110,
103,
116,
104,
58,
32,
49,
50,
53,
54,
13,
10,
67,
111,
110,
110,
101,
99,
116,
105,
111,
110,
58,
32,
99,
108,
111,
115,
101,
13,
10,
13,
10,
60,
33,
100,
111,
99,
116,
121,
112,
101,
32,
104,
116,
109,
108,
62,
10,
60,
104,
116,
109,
108,
62,
10,
60,
104,
101,
97,
100,
62,
10,
32,
32,
32,
32,
60,
116,
105,
116,
108,
101,
62
],
"nonce": [
250,
53,
62,
113,
67,
219,
95,
230,
227,
97,
145,
217,
198,
108,
212,
73,
49,
105,
238,
156,
239,
149,
99,
147,
136,
211,
3,
23,
139,
72,
66,
221
]
}
}
]
},
"inclusion_proof": {
"proof": [],
"total_leaves": 5
}
}
}
```